赞
踩
在编译之前,还需要安装一些其他的软件:
1.bison-2.4.1-setup.exe
2.cmake-3.15.5-win64-x64.msi(注意是64位的)
3.strawberry-perl-5.28.2.1-64bit.msi(用activeperl_v5.16.2应该也行)
4.Win64OpenSSL_Light-1_1_1i.exe (我忘记这个要不要了,编译的时候如果提示ssl什么的话就需要安装这个,我在第二次演示的过程中好像没用到,下不下随你们,有问题的话再下也行)
5.boost_1_59_0.tar.gz
6.mysql-5.5.61-winx64.zip (不是源码包,就是官网下的windows的安装包),这个包我在演示的时候发现不是必要的,大家就不需要下这个包了。
7.mysql-5.5.61.zip(源码包,注意是source code包,windows下的源码包)
8.VS2015.
9.my.ini文件(这个后面我会给出来)
最后等待安装完成.然后将~/GnuWin32/bin目录添加到环境变量PATH中.
因为这个在安装时勾选了添加环境变量,所以就不用管了.
这个环境变量是自动添加的,直接一路安装就行了.我就不再卸载一遍然后安装截图了。(狗头)
这个也是一路安装,然后将bin目录添加到环境变量PATH中就行了(可能不需要安装这个?因为我之前编译5.7版本的源码时,就会报错,提示我ssl version at least 1.1.1什么的,安装了openssl1.1.1之前编译就不会报错了,但是后续好像还是有其他问题,5.7之后的版本,具体我也没深究)
这个包不用安装,也不用设置环境变量啥的,就是在编译的时候需要指定一下这个包.大概意思就是提供一些函数库啥啥的.注意以下Boost包的路径,一会在cmd中输入命令的时候需要指定这个包所在的路径
不用管这一个包了
这个包也不用安装,一定注意不是源码包,是windows下的mysql的安装包.这个的版本一定要和你要编译的源码的版本号一致.不然很有可能出问题.主要是用于my.ini文件的设置,编译的时候还会用到这个包里面的一些内容(这些被需要内容是编译的时候自动找到的,只要在my.ini文件里设置好就行了)
源码包暂时先放着
假装你安装好了。
[client] port = 3306 # 设置客户端默认字符集 default-character-set = utf8mb4 [mysql] # 设置mysql客户端默认字符集 default-character-set = utf8mb4 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir =F:\aaa\mysql-5.5.61\mysql-5.5.61 # 设置mysql数据库的数据的存放目录 datadir =F:\aaa\mysql-5.5.61\mysql-5.5.61\data # 允许最大连接数 max_connections = 200 # 服务端使用的字符集默认为utf8mb4 character-set-server = utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine = INNODB # 设置sql模型 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
其中basedir就是mysql安装包所在路径, datadir就是数据存放的目录,data这个文件夹可能不存在,直接新建一个就行了。
安装路径直接设置为源码所在路径就行了,datadir就设置为源码所在路径下的data文件夹就行了(data文件夹需要手动创建)
新建一个my.ini文件,然后修改一下basedir和datadir即可.这个文件要放在C盘的根目录下面.C:\my.ini。MYSQL会自动到这里寻找my.ini文件进行加载。
进入mysql源码包,新建bld15文件夹,新建data文件夹.data文件夹用于上一步配置my.ini的datadir,用于存放数据库的某些数据.而bld15用于单独存放编译后的文件,这样比较方便.
接着我们先修改一下两个文件,避免后续步骤报错.
在bld15文件夹下进入cmd命令行
输入以下命令
cmake .. -G "Visual Studio 14 2015 Win64" -DWITH_BOOST="f:\mysql\boost_1_59_0\boost_1_59_0"
-DWITH_BOOST的值就是之前说的boost_1_59_0文件夹所在路径
如果想在VS2013编译的话,就把-G后面的"Visual Studio 14 2015 Win64"改成"Visual Studio 12 2013 Win64"即可.其他版本的话也简单,只要你把这个"Visual Studio 14 2015 Win64"输错了,他就会提示你可用版本有哪些,看着来就行。
编译过程中可能会有一堆not found和CMake Warning,不用管它.只要出现下面的内容就行了。
也有可能出现以下错误,我在重现操作的时候遇到的,不用管它,关了cmd重开一遍再执行就好了,也不知道是不是电脑没睡醒。
编译完成后在运行以下命令:
cmake --build . --config relwithdebinfo --target package
这个命令能将源码再进行打包,不过这不是主要的,我们需要的是打包过程中生成的一些.lib文件,有了这些文件,在VS中生成解决方案时才会成功.
过程中可能会遇到以下的错误:
说明sql_locale.cc文件格式没改对,再去改一遍,反正就是UTF-8带不带BOM两种情况,换着来吧.我用editplus改编码后运行的时候就报了这个破错误,但是我用notepad++改编码就没报这个错。也没搞懂啥毛病。
命令成功运行以后应该长下面这样
直此,所有的准备工作就算结束了,可以打开VS2015了.
在bld15目录下,找到MySQL.sln文件.用VS2015打开,等程序加载完,什么都不用动,直接生成解决方案(F7)
生成解决方案后,可能会有这么一个沙雕问题,有一个失败了,那这个失败十有九九是那个 DBUG_ASSERT(0)没有改成 DBUG_ASSERT(1);(我猜是因为我用的editplus,这东西好像不太好使)
改成 DBUG_ASSERT(1);以后,再F7一下就行了,不用重新生成解决方案
到此为止,基本上算完成了.当然还有一些后续步骤:
先说一下,后面的步骤顺序我理得不是很清楚,但是也就3.4步,不麻烦。
首先是将mysqld的调试属性添加两个参数:
--console --initialize
然后右键mysqld并选择启动新实例:
不管他成功没成功(狗头).下次再启动的时候把–initialize参数取消掉,只留一个–console参数就行了。再次启动后可能会有以下错误
在任务管理器中找到mysqld.exe关掉就行了,然后它就会自动继续运行,出现下面内容就表示调试程序启动成功了。
如果出现:can’t not messagefile errmsg.sys错误,就是my.ini文件的datadir没有精确到data目录下的原因。不过只要是按照上面做的,就不会出现这个问题.如果出现了肯定是它没睡醒,重启就对了(o( ̄︶ ̄)o)
进入之前再次打包源码时生成的文件夹的bin目录下,我的是
F:\aaa\mysql-5.5.61\mysql-5.5.61\bld15\_CPack_Packages\win64\ZIP\mysql-5.5.61-winx64\bin
就是
xxxxx\bld15\_CPack_Packages\win64\ZIP\mysql-5.5.61-winx64\bin目录
进入cmd 输入mysql即可连接到数据库,如果用mysql -u root -p连接数据库,默认是没有密码的,直接回车就行了.
然后我举个实例调试的例子:
在VS中找到sql目录下的Source Files下的sql_select.cc文件,在handle_select()方法上打上断点:
再次启动mysqld实例,调试参数只要–console即可:
还是进到刚刚的二次打包的bin目录下,输入mysql.
这个时候发现并没有完整输出,还没有显示出连接上数据库,这是因为打了断点的原因.VS里一路F10直到没有下一步为止.然后就可以看到控制到已经连接到了数据库.
如果需要调试哪里,就在哪里打断点.很多命令的文件都在sql目录下,比如sql_show、sql_select等等.
到这里就算彻底结束了,真的是一把辛酸泪。
此外还可以用Benchmarksql来对调试完后,再次打包的mysql数据库进行性能测试,不过BenchMarkSQL的版本必须在2.3.5之前,2.3.5之后好像就没有windows版的了.但是这个windows版本的Benchmarksql用起来我也墨迹了很久,操作比较蠢,就不多说了,如果谁有需要再说吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。