如何设置MySQL以便我可以在Cygwin gcc C ++构建中使用头文件和库?
我在网上看到了描述,但似乎是指我没有的东西,比如“ configure 。 (我怀疑MySQL已经改变了他们的构建系统)。
使用旧版本可能是一个选项,但我希望拥有与Linux相同的版本。
我有一个完整的Cygwin安装。
答案 0 :(得分:2)
首先,使用Windows版本有什么问题?它工作正常。
然后,我想和你做同样的事情,并且可以做到。请注意,我没有尝试构建服务器;所有我感兴趣的是MySQL客户端库,所以我可以在Cygwin环境中进行一些简单的客户端开发。
那么为了在Cygwin上构建客户端库,您需要做什么?
首先,获取tarball。我用了mysql-5.5.13.tar.gz
。将其打包在合适的位置,例如/usr/local/src
。
然后,通过Cygwin安装程序安装CMake
构建系统。 MySQL已经从GNU Autotools切换到CMake。 CMake是一个元构建系统。它为特定的构建环境生成Makefile和其他构建脚本。
当然,您还需要make
和gcc
。
我必须应用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.a
和libmysqlclient.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。