Fedora 16環境下Boost的編譯安裝

1,解壓boost源瑪包

# unzip boost_1_48_0.zip


2,增加腳本執行權限

# chmod +x bootstrap.sh

# chmod +x ./tools/build/v2/engine/build.sh


3,生成bjam工具

# ./bootstrap.sh


4, 整個boost非常大,幸好可以分庫編譯,查看可以編譯的庫

# ./bjam --show-libraries
The following libraries require building:
    - chrono
    - date_time
    - exception
    - filesystem
    - graph
    - graph_parallel
    - iostreams
    - locale
    - math
    - mpi
    - program_options
    - python
    - random
    - regex
    - serialization
    - signals
    - system
    - test
    - thread
    - timer
    - wave


5,利用bjam工具編譯需要用的庫

參考資料http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html

例如只編譯thread庫,如果編譯64位環境的庫則額外加上address-model=64

./bjam stage --toolset=gcc --with-thread link=static runtime-link=static threading=multiaddress-model=64 debug

編譯結果生成 ./stage/lib/libboost_thread.a


其中

stage/install:stage表示只生成庫(dll和lib),install還會生成包含頭文件的include目錄。本人推薦使用stage,因爲install生成的這個include目錄實際就是boost安裝包解壓縮後的boost目錄(E:\SDK\boost\boost,只比include目錄多幾個非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套頭文件,這樣既節省編譯時間,也節省硬盤空間。


toolset:指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。

without/with:選擇不編譯/編譯哪些庫。因爲python、mpi等庫我都用不着,所以排除之。還有wave、graph、math、regex、test、program_options、serialization、signals這幾個庫編出的靜態lib都非常大,所以不需要的也可以without掉。這可以根據各人需要進行選擇,默認是全部編譯。但是需要注意,如果選擇編譯python的話,是需要python語言支持的,應該到python官方主頁http://www.python.org/下載安裝。查看boost包含庫的命令是bjam --show-libraries

stagedir/prefix:stage時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,如VS2008對應的是E:\SDK\boost\bin\vc9,VC6對應的是E:\SDK\boost\bin\vc6,否則都生成到一個目錄下面,難以管理。如果使用了install參數,那麼還將生成頭文件目錄,vc9對應的就是E:\SDK\boost\bin\vc9\include\boost-1_46\boost,vc6類似(光這路徑都這樣累贅,還是使用stage好)。

build-dir:編譯生成的中間文件的路徑。這個本人這裏沒用到,默認就在根目錄(E:\SDK\boost)下,目錄名爲bin.v2,等編譯完成後可將這個目錄全部刪除(沒用了),所以不需要去設置。

link:生成動態鏈接庫/靜態鏈接庫。生成動態鏈接庫需使用shared方式,生成靜態鏈接庫需使用static方式。一般boost庫可能都是以static方式編譯,因爲最終發佈程序帶着boost的dll感覺會比較累贅。

runtime-link:動態/靜態鏈接C/C++運行時庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式,各人可以根據自己的需要選擇編譯。一般link只選static的話,只需要編譯2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static,本人一般就編這兩種組合。

threading:單/多線程編譯。一般都寫多線程程序,當然要指定multi方式了;如果需要編寫單線程程序,那麼還需要編譯單線程庫,可以使用single方式。

debug/release:編譯debug/release版本。一般都是程序的debug版本對應庫的debug版本,所以兩個都編譯。


6,設置boost相關的環境變量

#vi /etc/profile

BOOST_ROOT=/opt/boost_1_48_0
BOOST_INCLUDE=/opt/boost_1_48_0
BOOST_LIB=/opt/boost_1_48_0/stage/lib


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章