MySQL包含来自Cygwin gcc的文件

时间:2011-07-16 08:13:14

标签: mysql cygwin

如何设置MySQL以便我可以在Cygwin gcc C ++构建中使用头文件和库?

我在网上看到了描述,但似乎是指我没有的东西,比如“ configure 。 (我怀疑MySQL已经改变了他们的构建系统)。

使用旧版本可能是一个选项,但我希望拥有与Linux相同的版本。

我有一个完整的Cygwin安装。

1 个答案:

答案 0 :(得分:2)

首先,使用Windows版本有什么问题?它工作正常。

然后,我想和你做同样的事情,并且可以做到。请注意,我没有尝试构建服务器;所有我感兴趣的是MySQL客户端库,所以我可以在Cygwin环境中进行一些简单的客户端开发。

那么为了在Cygwin上构建客户端库,您需要做什么?

首先,获取tarball。我用了mysql-5.5.13.tar.gz。将其打包在合适的位置,例如/usr/local/src

然后,通过Cygwin安装程序安装CMake构建系统。 MySQL已经从GNU Autotools切换到CMake。 CMake是一个元构建系统。它为特定的构建环境生成Makefile和其他构建脚本。

当然,您还需要makegcc

我必须应用innocuous little patch posted on the MySQL forum by one Hiroaki Kawai才能获得编译内容:

  

最后,我在mysql / strings / dtoa.c中将所有dtoa()重命名为_dtoa()。   该函数是静态的,应该可以安全地重命名。

您可以使用Perl进行修补:

perl -pi.orig -e 's/\bdtoa\b/_dtoa/g' strings/dtoa.c

然后,在顶部源目录中,键入:

cmake .
make mysqlclient

您将在libmysql/libclientlib.alibmysqlclient.a中获得两个静态库。我不知道前者是(可能只是一个构造文物),但后者是真实的。

cp /usr/local/src/mysql-5.5/libmysql/libmysqlclient.a /usr/local/lib/

但它是静态的,你可能想要一个动态库。这就是Cygwin docs派上用场的地方。所以:

module=mysqlclient
gcc -shared -o cyg${module}.dll \
-Wl,--out-implib=lib${module}.dll.a \
-Wl,--export-all-symbols \
-Wl,--enable-auto-import \
-Wl,--whole-archive lib${module}.a \
-Wl,--no-whole-archive -lz

这将创建共享库cygmysqlclient.dll和导入库libmysqlclient.dll.a。将两者都复制到/usr/local/bin。就是这样。

这是another question on building the MySQL client library on Cygwin