windows7 visio studio 2015 编译 mysql source code

8 篇文章 1 订阅

第一步 下载&安装必备工具:

ActivePerl_5.16.2.3010812913.msi
bison-2.4.1-setup.exe
boost_1_59_0.zip
cmake-3.10.1-win64-x64.msi
mysql-5.7.20.zip
vs2015.com_chs.iso
1.说明:这里boost用 1_59_0是因为我编译的mysql是5.7.20,每个MYSQL版本对应不同的boost,编译的时候要认准。
2.安装完程序,修改环境变量加入C:\GnuWin32\bin;C:\Perl\bin;
在安装bison的时候注意默认安装路径是到C:\Program Files\GnuWin32下面的,网上看到的帖子都是不能含有空格,所以修改默认安装路径

第二步 使用&配置 cmake

我使用带界面cmake gui进行编译
在where is the source code 选择代码目录。
在where to build the binaries 选择编译后目录。
选择完点击configure弹出页面选择
Visual Studio 14 2015 Win64这个对应的是VS2015
Use default …
勾选上Advanced选项
查看下面几个选项是否正确
BOOST_INCLUDE_BIR=E:/boost_1_59_0
CMAKE_INSTALL_PREFIX=如果本地已经安装过mysql的其它安装版本,另行指定一个目录。
最后Generate ok,先不要急着点击Open Project。

第三步 修改编码格式,debug错误

用EditPlus打开如下文件,单独另存为unicode格式。
源码目录\strings\ctype-czech.c
源码目录\strings\ctype-latin1.c
源码目录\strings\decimal.c
源码目录\mysys\thr_mutex.c
源码目录\storage\innobase\include\ut0mem.h
源码目录\sql\sql_locale.cc
修改代码mysqld.cc下
DBUG_ASSERT(0)该断言始终为False,抛出了异常,从而导致后面编译时出错,修改为”DBUG_ASSERT(1)。

第四步 处理异常

如果看到如下错误

严重性 代码 说明 项目 文件 行
错误 MSB3073 命令“setlocal
cd F:\mysql\debug\sql
if %errorlevel% neq 0 goto :cmEnd
F:
if %errorlevel% neq 0 goto :cmEnd
F:\mysql\debug\client\Debug\echo.exe x64 && cscript //nologo
F:/mysql/mysql-5.7.20/win/create_def_file.js x64
F:\mysql\debug\sql\Debug\sql.lib
F:\mysql\debug\sql\Debug\binlog.lib
F:\mysql\debug\sql\Debug\slave.lib
F:\mysql\debug\mysys\Debug\mysys.lib
F:\mysql\debug\mysys_ssl\Debug\mysys_ssl.lib
F:\mysql\debug\dbug\Debug\dbug.lib
F:\mysql\debug\regex\Debug\regex.lib
F:\mysql\debug\strings\Debug\strings.lib
F:\mysql\debug\vio\Debug\vio.lib
F:\mysql\debug\libbinlogevents\lib\Debug\binlogevents.lib > mysqld.def
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
:VCEnd”已退出,代码为 1。 mysqld C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets 128

这个报错是由于注册表中默认的.js打开方式被改,如下修改。
HKEY_CLASSES_ROOT.js\默认=JSFile

第五步 编译

双击MySQL.sln文件,这时候visio studio会自动打开,选择最右边解决方案下的ALL_BUILD右键生成。
如果没有报错,等待编译结束…(比较漫长的等待)
看到控制台如下输出,恭喜编译成功
182> Building Custom Rule F:/mysql/mysql-5.7.20/CMakeLists.txt
182> CMake does not need to re-run because F:/mysql/debug/CMakeFiles/generate.stamp is up-to-date.
========== 全部重新生成: 成功 182 个,失败 0 个,跳过 0 个 ==========

第六步 调试

1.cd 到F:\mysql\debug\sql\Debug目录
执行C:> mysqld –initialize 或者 mysqld –initialize-insecure
这两个命令的差异为第一个会生成默认的密钥,第二种没有指定,最好选择第二种登入后修改密钥。
初始化完成,输入命令”mysqld –debug –standalone”启动服务

2.cd 到F:\mysql\debug\client\Debug目录
执行命令”mysqladmin shutdown -u root -p”
跳过密码,进入后设置新的密码。
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘new_password’;
到此全部完成,可以开始show databases;

或者
cd 到F:\mysql\debug\sql\Debug目录
执行C:> mysqld –initialize 或者 mysqld –initialize-insecure
打开visio studio 项目底下选择mysqld文件夹。
右键->属性->调试->命令参数=–console
右键->启动新实例
cd 到F:\mysql\debug\client\Debug目录
执行命令”mysql -u root –skip-password”如果还是要输入密码
到此全部完成,可以开始show databases,代码打断点,调试开始;

启动并连接上以后,可能这时候会一脸懵逼,咋调试啊?
如果不知道如何入手开始调试,推荐直接找到文件sql_insert.cc,找到void prepare_triggers_for_insert_stmt(TABLE *table)打上断点。
随便建一个表,插入一条insert into t select xxx 语句试试,是不是停住了。
万里长征,终于启程。

个人总结:
每一步都有好多坑,编译时间很长,开始总比停留在想象中的好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值