1. 程式人生 > 實用技巧 >在win7 下編譯MySQL原始碼

在win7 下編譯MySQL原始碼


MySQL

MySQL是一款優秀的開源資料庫,在阿里、網易等各個網際網路公司中有著廣泛的應用。儘管各種NoSQL大行其道,但是關係型資料庫依然必不可少。

作為一個新手,在Win7下用原始碼安裝MySql資料庫並不容易。我自己都折騰了好幾天。今天把安裝過程記錄下來,其一是為了方便自己以後學習,其二則是分享過程,讓學習者能夠從我這篇文章中受益。

1.編譯環境及×××

編譯環境VisualStudio2010(Win732)

編譯工具

bison-2.4.1-setup.exe

下載地址:http://nchc.dl.sourceforge.net/project/gnuwin32/bison/2.4.1/bison-2.4.1-setup.exe

安裝位置:D:\GnuWin32

cmake-3.0.0-win32-x86.exe

下載地址:http://www.cmake.org/files/v3.0/cmake-3.0.0-win32-x86.exe

安裝位置:D:\CMake

MySQL原始碼:mysql-5.5.31.zip

下載地址:http://downloads.skysql.com/archives/mysql-5.5/mysql-5.5.31.zip

注意:cmakebison的安裝路徑不要有空格,並且把cmakebison都加到環境變數path下,cmake在安裝的時候有選擇項,bison需要手動新增。

2.編譯MySQL原始碼

MySQL原始碼解壓到D:\mysql-source

目錄下,最後形成了目錄結構如下:wKiom1On3dujNgpVAAFpDttc1XQ743.jpg

第一步:在上圖的目錄中開啟命令列視窗,並輸入如下的命令:

wKiom1On3fCykI6bAABg87oIWog074.jpg

這就是用cmake生成vs2010的解決方案,其中的“.”表示當前目錄。

第二步:用記事本把D:\mysql-source\mysql-5.5.31\sql\sql_locale.cc另存為utf8格式。

第三步:把原始碼工程匯入到VS2010中。【檔案】->【開啟】->【專案/解決方案】,選擇D:\mysql-source\mysql-5.5.31\MySQL.sln檔案,確定即可。匯入後的截圖如下:

wKiom1On3hCzCsHVAAE8BGhrfhg761.jpg

第四步:編譯mysqld。到mysqld專案,然後【滑鼠右鍵】->【生成】即可,如果出錯,再編譯一次;如果再次出錯,請檢查你的cmake和bison的安裝及環境變數設定。

wKioL1On3fuj-bWAAAD_36b3MGc907.jpg

最後在D:\mysql-source\mysql-5.5.31\sql\Debug目錄下生成mysqld.exe,則表示編譯成功。

編譯後,可以試著執行一下,轉到D:\mysql-source\mysql-5.5.31\sql\Debug目錄,開啟命令列工具,並輸入如下的命令:mysqld.exe--debug--standalone

wKioL1On3hmgXeHrAAE_8zie90s140.jpg

看到一個斷言錯誤,並標註了原始碼檔案及行號:mysqld.cc line4233,那麼我們定位到原始碼:

wKiom1On3l7CR-H1AADqK4y0JMo176.jpg

並把該行程式碼註釋掉。並重新編譯mysqld工程。再次執行剛才的命令,沒有報錯。

第五步:驗證程式

為了證明編譯的mysqld.exe能夠正常工程,下載mysql免安裝版mysql-5.5.31-win32zip下載地址為:http://cdn.mysql.com/archives/mysql-5.5/mysql-5.5.31-win32.zip解壓到D:\MySql\official-mysql目錄後,用自己編譯好的mysqld.exe替換D:\MySql\official-mysql\bin\mysqld.exe。然後在命令列執行mysqld.exe,啟動服務端程式。

wKiom1On3muyD0H4AAC0uy-VKpM475.jpg

然後再開啟一個命令列視窗,輸入mysql-uroot-p,由於沒有設定密碼,輸入密碼處直接回車,連線到資料庫。

wKioL1On3kuQncIHAAF54Z-ep1o621.jpg

最後,別忘記在命令列視窗輸入:mysqladmin.exe-urootshutdown命令來關閉mysql服務。

wKioL1On3lbzGtJ_AABL-2TQlkE996.jpg

轉載於:https://blog.51cto.com/sbp810050504/1429838