解壓
tar -zxvf boost_1.48.0.tar.gz python
進入解壓目錄
cd boost_1_48_0 linux
使用下面的命令建立boost本身的編譯工具bjam(目的是保證Boost在任何平臺上都能用bjam編譯),相似於GNU Make。
./bootstrap.sh --prefix=/home/usrname/boost_1_43_0/boost_install bootstrap
boost將被安裝到/boost_install目錄下,不知名prefix將默認安裝到/usr/local/include和/usr/local/lib下。 多線程
建議先查看下幫助文檔,瞭解些默認選項,命令爲
./bjam –help 工具
.bjam命令的格式爲:bjam [options] [properties] [targets]
ui
經常使用選項(Options)和屬性(Properties)的說明,通常帶有–前綴的關鍵詞爲option,沒有的則爲property。 spa
–show-libraries
顯示須要編譯才能使用的庫列表 線程
–build-type=minimal|complete
–build-type=minimal爲默認值,此時在Linux下只編譯生成release版的動態連接C運行庫(C++標準庫)的多線程靜態庫和動態庫。
–build-type=complete,在Unix/linux下要編譯多個變體(debug或release,多線程或單線程,靜態庫或動態庫,靜態連接或動態連接C運行庫/C++標準庫)。不建議所有編譯,費時還費空間,提倡按需編譯。 debug
–layout=versioned|tagged|system
決定須要編譯的庫名及頭文件的地址目錄名的生成策略。默認Windows下–layout=versioned,Linux下–layout=system。
當同時編譯多個版本時,最好設置–layout=versioned或–layout=tagged,不然編譯多半會失敗,緣由是有的版本同時編譯若不指定命名策略,可能在輸出到指定目錄的時候形成命名衝突。
注:–build-type=complete時,不須要設置此屬性。但指定variant=debug,release等屬性時,須確保–layout=versioned或–layout=tagged。 code
–build-dir=DIR
指定存放編譯過程當中生成的中間文件,目標文件等其餘文件的目錄,默認在./bin.v2。
–with-
建立和安裝指定的庫
–without-
不對指定的庫進行建立和安裝,默認建立全部的庫
安裝:關鍵詞 install 或 stage
./bjam install
install會安裝頭文件和庫文件到相應指定目錄,頭文件安裝到/usr/local/include下,庫文件安裝到/usr/local/lib下。具體指定安裝目錄見./bjam –help。
./bjam stage
stage提及來只能說是收集生成的庫文件到一個目錄下,一般默認就在./stage下。
注:
install 和 stage 貌似不能同時使用,中間會卡住。
若編譯過程當中未指定install或stage,則生成的目標庫文件只存在於–build-dir所指的目錄中,默認爲./bin.v2。考慮到此,若無需將頭文件和庫文件安裝,則推薦使用stage關鍵字。
下面是屬性:
toolset=toolset
指定編譯器,默認自動檢測,安裝了多個編譯器的時候可使用此屬性。
variant=debug|release
指定編譯debug或release版本。
link=static|shared
指定建立靜態庫或動態庫
runtime-link=static|shared
指定建立的庫是靜態連接仍是動態連接到C運行庫(或C++標準庫),這個選項需依據–link的類型,不一樣的編譯器容許的連接策略不同,好比在GCC下,在生成動態庫(–link=shared)時,就不容許進行靜態連接到C運行庫(或C++標準庫)。
threading=single|multi
指定建立多線程或單線程的版本庫。
屬性可同時設置,以下兩種方式,爲了不名字衝突,建議採起propery=value的格式:
./bjam variant=debug,release stage
或
./bjam variant=debug variant=release
這兩種方式均可以。
最後執行的建立命令:
./bjam --with-filesystem --layout=tagged variant=release link=static threading=single stage
另外一種最終建立命令:
./bjam -a -sHAVE_ICU=1 --without-python --without-mpi --without-math --without-graph --layout=tagged variant=debug,release link=static runtime-link=shared threading=multi stage
#-a參數,表明從新編譯,-sHAVE_ICU=1表明支持Unicode/ICU