Linux平台Boost的編譯方法


本博客(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

 

獲得bjam3種方式,如下:

方法1Boost網站上提供了各種平台上預編譯好的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平台bjamBoost的所有編譯工作,並生成所有調試版、發行版的靜態庫和動態庫。但不推薦該方式。

 

編譯成功后,將在/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還有很多其他選項,如指定安裝路徑,指定debugrelease等,可參考bjam文檔或幫助


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM