MySQL包含来自Cygwin gcc的文件 我如何设置MySQL,以便我的CygWin GCC C++构建中有头文件和库?< /P>

MySQL包含来自Cygwin gcc的文件 我如何设置MySQL,以便我的CygWin GCC C++构建中有头文件和库?< /P>,mysql,cygwin,Mysql,Cygwin,我在网上看到过一些描述,但似乎是指我没有的东西,比如“配置”。 (我怀疑MySQL改变了他们的构建系统) 使用旧版本可能是一种选择,但我更愿意使用与Linux相同的版本 我有一个完整的Cygwin安装。首先,只使用Windows版本有什么问题?它工作正常 然后,我想做和你一样的事情,这是可以做到的。注意,我没有尝试构建服务器;我感兴趣的只是MySQL客户端库,这样我就可以在Cygwin环境中进行一些简单的客户端开发 那么,为了在Cygwin上构建客户端库,您必须做些什么呢 首先,获取tarbal

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

使用旧版本可能是一种选择,但我更愿意使用与Linux相同的版本


我有一个完整的Cygwin安装。

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

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

那么,为了在Cygwin上构建客户端库,您必须做些什么呢

首先,获取tarball。我使用了
mysql-5.5.13.tar.gz
。将其解压缩到合适的位置,如
/usr/local/src

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

当然,您还需要
make
gcc

我必须申请一个新的程序来编译这些东西:

最后,我在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/
但它是静态的,而且您可能需要一个动态库。这正是该功能派上用场的地方。因此:

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
。就这样


这是。

看起来不错-但在我的设置中,cmake正在崩溃:-(崩溃?有什么症状?