Linux平台Boost的編譯方法

2021-06-16 11:40:53 字數 2483 閱讀 7227

boost的編譯使用的不是已經成為公認標準的make,而是專門為boost開發的工具bjam(boost jam)。

本文以boost1.40為例,在linux平台的程式設計環境為gcc4.4.1,假設boost**在/usr/src/boost_1_40_0目錄,步驟如下。

獲得bjam有3種方式,如下:

方法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檔案。

使用bjam前,需要修改bjam的配置檔案。linux平台的配置檔案:

/usr/src/boost_1_40_0/tools/build/v2/user-config.jam

修改如下。注:筆者在實驗時,不修改貌似也很正常。

將43行的「# using gcc ;」前的注釋符號『#』去掉,表明用到使用gcc編譯。

如果要使用stlport作為其標準庫,將75行前的『#』去掉。

對boost進行完整編譯,生成所有除錯版、發行版的靜態庫和動態庫。

方法1:

# cd /usr/src

# wget

# 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            //庫名帶gcc版本

或# ./bjam --build-type=complete --layout=tagged stage

或# ./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目錄。

也可以把編譯和安裝寫在一起,如:./bjam --build-type=complete --layout=tagged stage install

完整編譯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文件或幫助。

--build-dir=編譯的臨時檔案會放在builddir裡(編譯完就可刪除)

--stagedir=存放編譯後庫檔案的路徑,預設是stage

--build-type=complete 編譯所有版本(確切地說是相當於:variant=release, threading=multi;link=shared|static;runtime-link=shared)

variant=debug|release 編譯什麼版本(debug or release?)

link=static|shared 使用靜態庫還是動態庫。

threading=single|multi 單執行緒還是多執行緒庫。

runtime-link=static|shared 決定是靜態還是動態鏈結c/c++標準庫。

--with-只編譯指定的庫,如輸入--with-regex就只編譯regex庫了。

--show-libraries 顯示需要編譯的庫名稱

另外可以參考:

linux中安裝boost庫詳解:

Linux平台Boost的編譯方法

本部落格 linux 平台boost 的編譯方法 boost 的編譯使用的不是已經成為公認標準的 make 而是專門為 boost 開發的工具 bjam boost jam 本文以boost1.40 為例,在 linux 平台的程式設計環境為 gcc4.4.1 假設boost 在 usr src b...

Linux平台Boost的編譯方法

boost 的編譯使用的不是已經成為公認標準的 make 而是專門為 boost 開發的工具 bjam boost jam 本文以boost1.40 為例,在 linux 平台的程式設計環境為 gcc4.4.1 假設boost 在 usr src boost 1 40 0 目錄,步驟如下。1.獲得b...

boost 編譯,windows平台

2編譯及安裝boost庫 進入dos環境,利用cd命令進入一中解壓的boost檔案根目錄,輸入bjam toolset gcc prefix c boost install進行編譯,此命令會把編譯後的boost檔案安裝到c boost下 注意 命令列中前後不可以有空格,資料夾名字隨便取,但是乙個資料...