mysql在windows下的编译
今天摆弄了半天,终于把mysql在windows上编译通过了,特别记录下来,分享给大家。
我下载的是mysql-5.5.13,下载后,打开根目录下面的INSTALL-WIN-SOURCE文件,里面让我访问网址:
http://dev.mysql.com/doc/refman/5.1/en/windows-source-build.html,按照上面的做。
我就按照网页上说的来,发现怎么搞也搞不定,一开始有一步:
cmake win/configure.js –XXX,怎么也过不去,后来发现,就没有win/configure.js这个文件,在看上面的网址,其实说的是mysql-5.1.xx版的方法,我去,竟然压缩包里的文档没有更新,后来在网上找了找,发现了5.5.xx版的文档,就按照这个文档来呗。
先下载cmake和bison的windows版本,cmake直接双击安装,一路next,中间有一步可以选择添加到环境变量里面, bison的话默认安装目录在program files下面,这个要改掉,改成中间一个没有括号的路径,我直接安装到C盘下面了,就是C:/GnuWin32,然后将C:/GnuWin32/bin添加到环境变量里。
然后进入mysql的根目录下,输入cmake . -G "Visual Studio 9 2008",正常的话会有XXX done什么的。
成功的话会有MySQL.sln和一大堆.vcproj文件,打开MySQL.sln,就可以看到整个解决方案了,在编译之前,建议打开sql/sql_locale.cc文件,将其用utf-8格式再保存一遍,不然编译过程当中会有大量错误。然后就可以生成解决方案了,不过我在生成过程当中会老是冒出来链接器停止工作什么什么的,最后编完了链接出了大量问题,会出现fatal error LNK1000: Internal error during IncrBuildImage这种错误,我出现了23个,什么都没改,又编了一遍,========== 生成: 成功26 个,失败0 个,最新62 个,跳过10 个==========,貌似没有错误了,不知道编译器是怎么搞的。
除了用sln编译外,也可以用命令行编译,根据文档,编译命令为:
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" MySQL.sln /build RelWithDebInfo,
编译安装文件的命令为:
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" MySQL.sln /build RelWithDebInfo /project initial_database
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" MySQL.sln /build RelWithDebInfo /project package
如果没有任何问题,根据文档,这个命令会在根目录下生成mysql-5.5.13-win32.zip这个文件。
清理的命令为
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" MySQL.sln /clean
Del CMakeCache.txt
如果用sln生成的过程当中initial_database这个项目有错误的话,我的解决方法是把sql/locale.cc下的my_locales结构体下的除了第一个&my_locale_en_US,和最后一NULL之外其他的值全部删掉(或注释掉),我这么干了貌似没有什么副作用,主要在于汉字和日文这些好像识别起来有点问题。
如果能够在根目录下生成zip文件,证明整个操作没有问题,zip里的bin文件夹里是最全的程序包,调试的话可以执行里面的mysqld-debug.exe,用下面的参数:
mysqld-debug --debug –-standalone。
会出现带有窗口的mysql,正常情况下是没有的,只能用服务方式启动。
这下可以通过vs附加到进程的方式调试了,计划下一次写一下怎么在windows下调试mysql的