Posted on 2006-06-30 17:08
任我行 閱讀(4743)
評論(0) 編輯 收藏 引用 所屬分類:
C++
剛好在網上閑逛的時候發現了這個:
http://www.stlchina.org/twiki/bin/view.pl/Main/BoostInstall0 前言
大衛注:這是當初研究boost時的筆記,最近看到論壇上有人問,所以就貼出來共享一下。其實個人認為,boost目前還不適于進行應用開發,畢竟
boost庫太大了(當然,你可以只用一部分,但程序的可維護性始終是個問題),除非你想一探C++研究前沿的Meta Programming這個Generic
Programming的神奇世界。強烈建議boost的研究者在研究boost之前研究一下一個小得多的模板庫loki,boost中的很多讓你無法理解的技術在loki庫中被大量運用,并且這個庫的作者專門寫了Modern
C++
Design來解說該庫的實現。此外,如果你要研究boost,開始時不要編譯所有的庫,如Python,thread,test等,因為等你花幾個小時編譯完了,你可能發現,你根本就用不到這些庫,或者對它根本就不感興趣,等到你研究完比較小的幾個庫,對boost有了充分了解的時候再來編譯也不遲。
注:
- 開始前請確認你的OS中已經安裝了適當的編譯器,以下Windows環境中以Windows 2000 + VC6為例,Unix環境中以Solaris 9 +
GCC 3.4.2為例;
- 以下以$BOOSTDIR表示boost的存放目錄,請自行根據實際情況進行修改。
1 下載 Boost + 解包(略)
2 編譯jam
2.1Windows
到$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.2 Solaris 9
到$BOOSTDIR\tools\build\jam_src下執行./build.sh對jam進行編譯,編譯結果將存放在$BOOSTDIR\tools\build\jam_src\bin.solarisx86下。
3 設置環境變量
(注:這一步其實可以省略,直接在(三)中通過-s輸入到命令行即可,但設置可以讓命令行更清晰、簡單一點。)
3.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
3.2 Solaris 9
在.profile中PATH后添加編譯后的jam的存放目錄。
并增加
PYTHON_VERSION=2.3
export
PYTHON_VERSION
注意,無需設置PYTHON_ROOT,Solaris下jam會自動處理。
4 編譯Boost
4.1 Windows
命令:
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的環境設置中。
4.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
speed"
這樣可以極大加快編譯的速度,同時,個人認為像boost這樣大的庫,最好還是采用動態鏈接以減小目標程序的size,就像libstdc++,還沒有見過有人去靜態鏈接libstdc++.a,雖然系統中提供了這個靜態庫。