mingw/msys中編譯boost
首先,當然是安裝mingw了。安裝非常方便,去網站上下載個mingw-get或者它的圖形介面版,然後安裝就可以了。不過,在安裝過程中,很容易出現下載失敗的情況,所以建議還是使用mingw-get這個命令列版本的比較好,失敗了馬上重新執行一邊就可以了。
首先必須安裝gcc和g++,使用mingw-get install gcc g++就可以了。這個命令怎麼這麼像debian的包管理器呢~
安裝好之後,再去下載msys的安裝包。有圖形介面,安裝起來比較方便的,在最後是否已經安裝了mingw的選項中選擇是,然後輸入mingw安裝的路徑即可。這個路徑,msys會在fstab中寫入,運行時掛載到/mingw目錄下。
開啟msys之後,就可以開始編譯boost了。首先,當然是先去下載原始碼包了,下載了之後解壓縮。試了好幾次,不能直接執行boost原始碼最外層的那個bootstrap.sh這個指令碼來產生bjam檔案。直接執行,會提示找不到sys/resources.h這幾個標頭檔,如果指定了toolset為mingw之後,bjam是可以編譯過的,但是再編譯後面的boost其他模組,就會提示缺少mingw.jam這個檔案。
所以,通過查看這幾個指令檔,可以去toolsbuildv2enginesrc目錄下,執行build.sh mingw就可以編譯出後面需要用到的bjam。稍微看下就可以知道,其實對於mingw,用的編譯工具還是gcc,只不過是編譯bjam的時候載入的原始碼不同,不會出現sys/resouces.h不存在這樣的錯誤。
編譯完成後,把bin.ntx85目錄中的bjam.exe拷貝到原始碼目錄的最外層,然後回到最外層執行:
bjam –prefix=/mingw –toolset=gcc variant=release link=static threading=multi runtime-link=static install
因為在windows中使用,為了方便分發,所有的庫都採用靜態串連的方式。將boost安裝到/mingw目錄中,也就是mingw安裝的地方,這樣後面要編譯其他東西的時候就能夠找到這裡庫了。剛開始會有提示,預設沒有使用mpi,系統中找不到python,這兩個目前不需要,暫時不管了。
mingw/msys中安裝pkg-config
在編譯vmime的時候,發現configure的時候老是提示gnutls庫找不到,這個明明已經是安裝了的。稍微看了下configure檔案之後,發現是因為pkg-config沒有安裝。
按照mingw的faq的提示,去這裡下載了glib和pkg-config的二進位包。解壓縮glib的包,將裡面的libglib.dll複製到/mingw/bin中,然後將pkg-config.exe也複製到/mingw/bin中。再次啟動並執行時候又提示pkg-config.exe缺少intl.dll,仔細看了下載頁面,這個dll是在gettext的二進位包裡面的,下載之。釋放裡面的intl.dll到/mingw/bin之後,pgk-config就能夠正常運行了,vmime也能夠正常編譯了。