寫這篇文章的目的只是告訴朋友們?nèi)绾尉幾gmysql代碼,或許有些人覺得從windows平臺編譯mysql的代碼有些復(fù)雜,其實(shí)不然。如果您對本文中所提到的知識有任何疑問可以透過csdn的mysql板或者[email protected]支援論壇尋求幫助。這篇文章中所提到的東西沒有任何的創(chuàng)新性,只是對mysql已有文檔的總結(jié)。
一、為什么要編譯代碼
我不知道閱讀這篇文章的朋友你是否會(huì)注意mysql手冊。mysql在線手冊近期呈現(xiàn)一種“超越”趨勢,手冊中所描述的內(nèi)容很大部分都是開發(fā)版本中才能找到的,我希望自己在閱讀的同時(shí)獲得試驗(yàn)的機(jī)會(huì)。同時(shí),我也和其他朋友一樣痛恨軟件中存在各種bug,所以我要自己編譯代碼。當(dāng)然,最開始我的初衷是希望借助intel c++重新編譯mysql的代碼獲取更好的性能。
二、編譯代碼要如何準(zhǔn)備
這一部分包含下列要點(diǎn),請務(wù)必注意。
■ 編譯器
■ cygwin
■ 內(nèi)存
■ 耐心
編譯器,編譯mysql代碼可以使用cygwin下的gcc以及vc6.0,vc7.1。如果您使用intel c++的話,我建議您配合vc6.0使用。不推薦使用vc 7.0的原因是其本身所存在的bug(已經(jīng)修復(fù),但不公開提供),如果不裝補(bǔ)丁的話那么會(huì)造成錯(cuò)誤(關(guān)于inline優(yōu)化可以暫時(shí)解決)。vc6.0請安裝sp4或sp5以及對應(yīng)的處理器支持補(bǔ)丁包。
cygwin,mysql的代碼絕大部分是在linux編寫,所以很多實(shí)用工具以及配置腳本都是*nix風(fēng)格,因此我們需要借助cygwin這一 unix 模擬環(huán)境。安裝時(shí)請選擇上 autoconf automake gnu make libtool bison perl。另外一點(diǎn),mysql的開發(fā)使用bk進(jìn)行管理,而bk的客戶端也需要借助cygwin運(yùn)行。如果只想編譯官方發(fā)布的windows代碼,那么可以不去關(guān)心這些。
內(nèi)存,編譯mysql代碼非常消耗時(shí)間,至少我是這么覺得。我建議有一個(gè)足夠大內(nèi)存的機(jī)器,否則會(huì)讓你有種生不如死的感覺。
耐心,第一次編譯mysql尤其是開發(fā)中的代碼難免會(huì)遇到各種各樣的麻煩,嘗試去克服它們。沒有人第一次就應(yīng)該成功,假設(shè)連這些小問題都無法解決那么談何閱讀代碼?所以,多少給自己點(diǎn)信心,也多少有些耐心。
三、獲取資源
除了編譯器、cygwin之外我們還需要準(zhǔn)備bk的客戶端,可以下載回來。當(dāng)準(zhǔn)備妥當(dāng)工具后我們訪問 mysql.bkbits.net ,在這里我們可以看到一個(gè)表格。這里的表格每一項(xiàng)目都對應(yīng)著一個(gè)mysql的項(xiàng)目,我們關(guān)心的是名為 mysql-4.1的項(xiàng)目,這是目前的主要工作重點(diǎn) mysql 4.1.x 版本的開發(fā)樹。
獲取代碼:
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
通過上邊兩個(gè)命令,我們就可以得到并隨時(shí)同步開發(fā)中的mysql4.1.x代碼,第一次下載的話整個(gè)過程很慢大約有100多m的東西需要下載,然后還要解壓縮然后合成代碼。mysql.bkbits.net 列出的其他項(xiàng)目分別是:
我們都可以使用同樣的方式獲取并隨時(shí)同步代碼。
四、產(chǎn)生windows代碼
默認(rèn)下載回來的代碼并不適合直接就用,把代碼copy到另外的目錄,然后使用build目錄下的實(shí)用工具 compile-pentium-max 配置代碼,配置完成后使用 scripts 目錄下的實(shí)用工具make_win_src_distribution 產(chǎn)生一個(gè)適合windows使用的代碼,這種方式得到的代碼如同官方下載所提供的代碼,最終成品是一個(gè)tar打包。執(zhí)行這些實(shí)用工具,也就是shell 腳本需要在代碼樹的頂級目錄。
五、編譯代碼
當(dāng)完成了上述工作之后編譯代碼應(yīng)該是最為輕松的,直接用vc 6.0或者vc.net 2003打開工程文件編譯就可以了。整個(gè)過程中并不需要其他的類庫進(jìn)行輔助,也什么難點(diǎn)。
最后,祝福各位好運(yùn)。另外也是最重要的。通過本文所述方式獲得的mysql代碼遵循gpl協(xié)議,關(guān)于gpl的詳細(xì)信息請自行查閱。
新聞熱點(diǎn)
疑難解答
圖片精選