本博客(http://blog.csdn.net/livelylittlefish )貼出作 者(三二一@小魚)相關研究、學習內容所做的筆記,歡迎廣大朋友指正!
Linux平台Boost的編譯方法
Boost的編譯使用的不是已經成為公認標准的make,而是專門為Boost開發的工具bjam(boost jam)。
本文以boost1.40為例,在Linux平台的編程環境為gcc4.4.1,假設Boost代碼在/usr/src/boost_1_40_0目錄,步驟如下。
1. 獲得bjam
獲得bjam有3種方式,如下:
方法1:Boost網站上提供了各種平台上預編譯好的bjam可執行程序,可直接下載使用。
方法2:從Boost源代碼中提供的bjam代碼編譯出可執行程序。
方法3:通過bootstrap程序生成bjam。
方法1:
# apt-get install bjam
方法2:
(1) # cd /usr/src/boost_1_40_0/tools/jam/src
(2) # ./build.sh
編譯完成后:
生成的可執行文件為
# /usr/src/boost_1_40_0/tools/jam/src/bin.linuxx86/bjam
需要將bjam.exe拷貝到源代碼所在的目錄
# cp bin.linuxx86/bjam /usr/src/boost_1_40_0
方法3:
(1) # cd /usr/src/boost_1_40_0
(2) # ./bootstrap.sh
該方法直接在Boost源代碼目錄下生成bjam文件。
2.修改bjam配置
使用bjam前,需要修改bjam的配置文件。Linux平台的配置文件:
/usr/src/boost_1_40_0/tools/build/v2/user-config.jam
修改如下。注:筆者在實驗時,不修改貌似也很正常。
將43行的“# using gcc ;”前的注釋符號‘#’去掉,表明用到使用gcc編譯。
如果要使用STLport作為其標准庫,將75行前的‘#’去掉。
3. 完整編譯Boost
對Boost進行完整編譯,生成所有調試版、發行版的靜態庫和動態庫。
方法1:
# cd /usr/src
# wget http://sourceforge.net/projects/boost/files/boost/1.40.0/boost_1_40_0.tar.bz2
# tar --bzip2 -xvf boost_1_40_0.tar.bz2
# cd boost_1_40_0
# bjam --toolset=gcc --build-type=complete stage
或
# ./bjam --build-type=complete --layout=versioned
或
# ./bjam
方法2:
# cd /usr/src/boost_1_40_0/tools/jam
# ./build_dist.sh
也會完成Linux平台bjam和Boost的所有編譯工作,並生成所有調試版、發行版的靜態庫和動態庫。但不推薦該方式。
編譯成功后,將在/usr/src/boost_1_40_0/bin.v2目錄下生成諸多文件,包括.a和.so.1.40.0文件,這就是在Linux平台要使用Boost需要的,其他的文件可以刪除。
安裝
# ./bjam install
將生成的庫默認安裝到/urs/local/lib目錄。
4 部分編譯Boost
完整編譯Boost費時費力,且這些庫在開發過程中並不一定全部用到,因此,bjam也支持用戶自行選擇要編譯的庫。
在完全編譯的基礎上,使用--with或者—without選擇可以打開或者關閉某個庫的編譯,例如,僅僅編譯date_time庫:
# cd /usr/src/boost_1_40_0
# ./bjam --toolset=msvc --with-date_time --build-type=complete stage
當然,bjam還有很多其他選項,如指定安裝路徑,指定debug或release等,可參考bjam文檔或幫助。