ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql client C API库VisualStudio 2022编译

2022-07-30 16:33:49  阅读:222  来源: 互联网

标签:cmake lib client 编译 API 2022 mysql dll boost


在windows平台 mysql client  C API库已经随着 mysql server安装包一起安装了,可以很容易找到。

libmysql.dll和libmysql.lib就是了,使用的CRT默认是 /MD。

还在static library版的,名字叫 mysqlclient.lib

我这边有时比较蛋疼,需要 /MT版的dll. 官方没有直接提供,只能自己编译了。

由于官方没有把 client C API的代码独立出来,所以要编译的话,只能直接使用mysql server的源码了。

Building MySQL Server also builds libmysqlclient; see Installing MySQL from Source.
It cannot be built alone, but configuring with the optional -DWITHOUT_SERVER=ON CMake option is related.

(1)下载源码

在这个网址,选择source code就行了

https://dev.mysql.com/downloads/mysql/

不过注意,我们要下载包含boost的版本,另外一个我已经试过了,搞了三个小时各种缺东西!

用这个可以省去你很多麻烦:

All Operating Systems (Generic) (Architecture Independent), Compressed TAR Archive
Includes Boost Headers

于是,下载了个 mysql-boost-8.0.30.tar.gz 包。

 

(2)解压,使用cmake进行配置,编译。根据文档, -DWITHOUT_SERVER=ON 参数是至关重要的。

不然,一不小心编译了个完整的mysql server出来,那就很恐怖了。。。

openssl 是需要自己另外准备的库。

 

(3)配置cmake

# 我这里编译的是x86版本,去除以下的 -A Win32就是x64版本了。

# 这里指定了boost路径,不过这个boost已经在解压出来的目录了。

# 期间发现一个有意思的情况,我系统的boost是1.79, 结果cmake报错,要求必须是1.77, 晕死~~

mkdir build

cd build
cmake .. -A Win32 -DWITH_NDBCLUSTER=off -DWITH_UNIT_TESTS=off -DWITHOUT_SERVER=on -DWITH_BOOST=D:\mysqlSrc\mysql-8.0.30\boost\boost_1_77_0  -DOPENSSL_ROOT_DIR=D:\compiled\openssl\Compiled\x86 -DCMAKE_INSTALL_PREFIX=d:\temp\mysql

默认是以 /MD,/MDd 方式使用CRT runtime的。

我这里由于需要 /MT的,所以就很悲催地,打开了 mysql.sln, 逐个逐个项目地改成 /MT.

都改完之后,就可以编译了。

可以直接使用cmake命令行:

cmake --build . --config Release --target install

 

于是在目标安装目录下的lib就有了(两个openssl dll是我自己拷贝过来的):

libmysql.dll
libmysql.lib
mysqlclient.lib

libssl-3.dll
libcrypto-3.dll

另外,我花了三个小时尝试使用mingW来编译,最终发现 mysql的CMake配置文件对mingW不够友好,凡是WIN32的情况,都只认为是VC编译器。

一堆的编译报错,后来我都怀疑人生了,放弃。。。

(完)

 

标签:cmake,lib,client,编译,API,2022,mysql,dll,boost
来源: https://www.cnblogs.com/wsk3q/p/16535271.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有