寫這篇文章的目的只是告訴朋友們如何編譯MySQL代碼,或許有些人覺得從Windows平台編譯MySQL的代碼有些復雜,其實不然。如果您對本文中所提到的知識有任何疑問可以透過CSDN的MySQL板或者MySQL@CHINA支援論壇尋求幫助。這篇文章中所提到的東西沒有任何的創新性,只是對MySQL已有文檔的總結。
一、為什麼要編譯代碼
我不知道閱讀這篇文章的朋友你是否會注意MySQL手冊。MySQL在線手冊近期呈現一種“超越”趨勢,手冊中所描述的內容很大部分都是開發版本中才能找到的,我希望自己在閱讀的同時獲得試驗的機會。同時,我也和其他朋友一樣痛恨軟件中存在各種BUG,所以我要自己編譯代碼。當然,最開始我的初衷是希望借助Intel C++重新編譯MySQL的代碼獲取更好的性能。
二、編譯代碼要如何准備
這一部分包含下列要點,請務必注意。
■ 編譯器
■ Cygwin
■ 內存
■ 耐心
編譯器,編譯MySQL代碼可以使用Cygwin下的GCC以及VC6.0,VC7.1。如果您使用Intel C++的話,我建議您配合VC6.0使用。不推薦使用VC 7.0的原因是其本身所存在的BUG(已經修復,但不公開提供),如果不裝補丁的話那麼會造成錯誤(關於inline優化可以暫時解決)。VC6.0請安裝SP4或SP5以及對應的處理器支持補丁包。
Cygwin,MySQL的代碼絕大部分是在Linux編寫,所以很多實用工具以及配置腳本都是*nix風格,因此我們需要借助Cygwin這一 Unix 模擬環境。安裝時請選擇上 autoconf automake gnu make libtool bison perl。另外一點,MySQL的開發使用bk進行管理,而bk的客戶端也需要借助cygwin運行。如果只想編譯官方發布的Windows代碼,那麼可以不去關心這些。
內存,編譯MySQL代碼非常消耗時間,至少我是這麼覺得。我建議有一個足夠大內存的機器,否則會讓你有種生不如死的感覺。
耐心,第一次編譯MySQL尤其是開發中的代碼難免會遇到各種各樣的麻煩,嘗試去克服它們。沒有人第一次就應該成功,假設連這些小問題都無法解決那麼談何閱讀代碼?所以,多少給自己點信心,也多少有些耐心。
三、獲取資源
除了編譯器、cygwin之外我們還需要准備bk的客戶端,可以下載回來。當准備妥當工具後我們訪問 MySQL.bkbits.Net ,在這裡我們可以看到一個表格。這裡的表格每一項目都對應著一個mysql的項目,我們關心的是名為 mysql-4.1的項目,這是目前的主要工作重點 MySQL 4.1.x 版本的開發樹。
獲取代碼:
shell> bk clone bk://MySQL.bkbits.Net/mysql-4.1 MySQL-4.1
更新代碼:
shell> bk pull bk://MySQL.bkbits.Net/mysql-4.1 MySQL-4.1
通過上邊兩個命令,我們就可以得到並隨時同步開發中的MySQL4.1.x代碼,第一次下載的話整個過程很慢大約有100多M的東西需要下載,然後還要解壓縮然後合成代碼。MySQL.bkbits.Net 列出的其他項目分別是:
我們都可以使用同樣的方式獲取並隨時同步代碼。
四、產生Windows代碼
默認下載回來的代碼並不適合直接就用,把代碼copy到另外的目錄,然後使用BUILD目錄下的實用工具 compile-pentium-max 配置代碼,配置完成後使用 scripts 目錄下的實用工具make_win_src_distribution 產生一個適合Windows使用的代碼,這種方式得到的代碼如同官方下載所提供的代碼,最終成品是一個tar打包。執行這些實用工具,也就是shell 腳本需要在代碼樹的頂級目錄。
五、編譯代碼
當完成了上述工作之後編譯代碼應該是最為輕松的,直接用VC 6.0或者VC.Net 2003打開工程文件編譯就可以了。整個過程中並不需要其他的類庫進行輔助,也什麼難點。
最後,祝福各位好運。另外也是最重要的。通過本文所述方式獲得的MySQL代碼遵循GPL協議,關於GPL的詳細信息請自行查閱。