Mysql5.7編譯調試(windows環境)
必備環境
為了防止出現不必要的麻煩,perl,cmake,Bison都直接安裝在c盤,且目錄不要有空格,最好是,如:c:/perl,c:/cmake, c:/bison
- OS:windows7 + VS2013
- mysql 源碼(5.7.23)
- perl tool:ActivePerl-5.16.3.1604-MSWin32-x64-298023.msi
- Cmake:cmake-3.5.0-win32-x86.exe
- Bison:bison-2.4.1-setup.exe
為了驗證成功,可以執行以下命令:
- where bison
- where cmake
- where perl
如果出現找不到,那就自己加path就行了
編譯步驟
- 進入mysql的源碼目錄,創建編譯文件目錄,如cbuild(D:\Project\study\mysql-5.7.23\cbuild)
- 打開cmake(C:\CMake\bin\cmake-gui.exe),選擇目錄,然后點configure,選擇自己的vs版本
- configure出現錯誤,需要下載boost
- 下載boost_1_59_0,下載后解壓到相應目錄,如:D:\Project\study\boost_1_59_0
- 重新修改Cmake,WITH_BOOST后面指定boost的目錄
- 點擊configure后,再點擊generate,出現如下表示成功
- 用vs2013打開
- 為了減少錯誤信息,需要修改一些源碼的編碼方式,如下文件,修改的方法很簡單,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
- 找到sql\mysqld.cc中的test_lc_time_sz()函數,將其中的DBUG_ASSERT(0)改為DBUG_ASSERT(1)
- 編譯過程中有free函數老報錯,可以修改下名字,主要是plugin/keyring/buffer.h,plugin/keyring/buffer.cc,socket_events.cc
- 運行mysqld.exe --initialize-insecure,時間可能有點長(如果出現錯誤,看一下是不是data目錄不存在,可以手動創建)
- 然后就可以運行mysqld.exe --console進行調試了