Win10 环境下 编译MySQL5.7.24 源码,综合网上材料我自己 写了一套,供参考,
特别是 C,C++ 因不一样的环境下 报错情况不一样,只要仔细阅读错误,在网上查询能找到解决方式。
一、软件准备:
①Cmake : https://cmake.org/download/ (3.14版本也可)
②ActivePerl: ActivePerl
③boost库: https://sourceforge.net/projects/boost/files/boost-binaries/1.59.0/ 下载exe文件安装到指定目录
④MySQL 源码: https://dev.mysql.com/downloads/mysql/
⑤bison 安装
⑥visual studio 2015 安装部署
一定注意安装Win10 SDK,如下图:
二、生成VS2015 MySQL工程
运行cmake-gui,选择需要编译的源码,和目的目录。
Where is the source code : 选择解压后的源码
Where to build to the binaryies : 选择目的目录,这里我们选择同目录下的debug目录。
接下来需要配置boost库,点击Add Entry添加boost库配置项。
Name: WITH_BOOST
Value: 选择第一步中boost库的安装目录
接下来我们点击Configure, 选择目标VS版本, 点击Finish后,等待运行结束,需要一定时间。
过程中会遇到以下的Warning,可以忽略。不影响最终debug。
最后一部,点击Generate生成VS2015工程, 我们用VS2015打开MySQL.sln工程就可以了。
VS2015调试MySQL 有几个细节要注意。
1) 编码格式更改成 utf-8
ctype-czech.c
ctype-latin1.c
decimal.c
thr_mutex.c
ut0men.h
sql_locale.cc 编码格式更改成 utf-8
2) mysql.cc 文件中函数test_lc_time_sz 最后的DBUG_ASSERT(0); 需要改成DBUG_ASSERT(1);
3) 添加参数 --initialize --explicit_defaults_for_timestamp
先初始化MySQL数据库(否则会报mysql.user表不存在)
VS2015调试开始调试前,用VS运行一下mysqld初始化一个默认的数据库实例。一定是debug mysqld子工程设置为启动工程。
ERROR:
不要直接看 error,要配合警告日志 一起看。
1)bison.exe: m4: Invalid argument
if i copy m4.exe to local folder and execute the above
command it generates without any problem
2)因为sql_locale.cc 包含 其他国家语言,因操作系统原因不支持,把对应的部分进行删除