編譯、安裝boost(on Windows and Solaris)

來源:互聯網
上載者:User

大衛註:這是當初研究boost時的筆記,最近看到論壇上有人問,所以就貼出來共用一下。其實個人認為,boost目前還不適於進行應用開發,畢竟boost庫太大了(當然,你可以只用一部分,但程式的可維護性始終是個問題),除非你想一探C++研究前沿的Meta Programming這個Generic Programming的神奇世界。強烈建議boost的研究者在研究boost之前研究一下一個小得多的模板庫loki,boost中的很多讓你無法理解的技術在loki庫中被大量運用,並且這個庫的作者專門寫了Modern C++ Design來解說該庫的實現。此外,如果你要研究boost,開始時不要編譯所有的庫,如Python,thread,test等,因為等你花幾個小時編譯完了,你可能發現,你根本就用不到這些庫,或者對它根本就不感興趣,等到你研究完比較小的幾個庫,對boost有了充分瞭解的時候再來編譯也不遲。

註:
1、開始前請確認你的OS中已經安裝了適當的編譯器,以下Windows環境中以Windows 2000 + VC6為例,Unix環境中以Solaris 9 + GCC 3.4.2為例;
2、以下以$BOOSTDIR表示boost的存放目錄,請自行根據實際情況進行修改。

O、下載 + 解包(略)

一、編譯jam
1.Windows
到$BOOSTDIR/tools/build/jam_src下執行build.bat對jam進行編譯,編譯結果將存放在$BOOSTDIR/tools/build/jam_src/bin.ntx86下。如果你在執行該批次程式過程中遇到問題,如報告無法找到編譯器相關程式,請執行
X:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.bat
以建立VC的基本環境變數。
2.Solaris 9
到$BOOSTDIR/tools/build/jam_src下執行./build.sh對jam進行編譯,編譯結果將存放在$BOOSTDIR/tools/build/jam_src/bin.solarisx86下。

二、設定環境變數
(註:這一步其實可以省略,直接在(三)中通過-s輸入到命令列即可,但設定可以讓命令列更清晰、簡單一點。)
1.Windows
我的電腦點右鍵->屬性->進階->環境變數->user variable或system variable中:
PATH最後添加bjam存放目錄,如:
$BOOSTDIR/tools/build/jam_src/bin.ntx86
建立環境變數MSVCDIR,並在變數值一欄中填入VC安裝目錄,如:
X:/Program Files/Microsoft Visual Studio/VC98
建立環境變數:
PYTHON_ROOT=X:/Program Files/Python2.3.4
PYTHON_VERSION=2.3
2.Solaris 9
在.profile中PATH後添加編譯後的jam的存放目錄。
並增加
PYTHON_VERSION=2.3
export PYTHON_VERSION
注意,無需設定PYTHON_ROOT,Solaris下jam會自動處理。

三、編譯
1.Windows
到$BOOSTDIR下執行以下命令:
jam -sBOOST_ROOT=. -sTOOLS=msvc "-sBUILD=debug release <runtime-link>static/dynamic"
以上命令解釋如下:
-s 即set,設定環境變數;
BOOST_ROOT boost的存放目錄
TOOLS 你選擇的toolset,如gcc、msvc(即vc6)、vc7.1,此外還有gcc-stlport、msvc-stlport、vc7.1-stlport,表示同時使用stlport。具體支援何種toolset,大家可以自行到$BOOSTDIR/tools/build/v1看個究竟。
BUILD 編譯類型,上述選項表示編譯出支援static和dynamic連結的debug和release版本(4個版本)。

編譯後的lib、dll將被copy到$BOOSTDIR/bin/boost/libs目錄下,但是這些lib、dll分散在不同的目錄下,為了便於使用,可以在上述目錄下分別尋找*.lib和*.dll找出這些檔案,然後將他們分別全部copy到VC的lib目錄和Windows的System32目錄,也可以自己建立一個專門用於存放boost的lib檔案的目錄,然後
依次選擇Tools->Options->Directories->Library files,將上述目錄路徑添加到VC的環境設定中。
2.Solaris 9
到$BOOSTDIR下執行以下命令:
jam -sBOOST_ROOT=. -sTOOLS=gcc "-sBUILD=debug release <runtime-link>static/dynamic"
但建議用如下命令:
jam -sBOOST_ROOT=. -sTOOLS=gcc "-sBUILD=release <runtime-link>dynamic <optimization>speed"
這樣可以極大加快編譯的速度,同時,個人認為像boost這樣大的庫,最好還是採用動態連結以減小目標程式的size,就像libstdc++,還沒有見過有人去靜態連結libstdc++.a,雖然系統中提供了這個靜態庫。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.