C Boost 庫編譯技巧總結

2021-08-19 02:27:04 字數 2743 閱讀 6983

【fishing-pan:

這是很早之前的乙個工作了,當時需要修改和重新編譯其他實驗室的軟體的原始碼,所以需要自己編譯boost。因此對於如何編譯boost一點簡單了解,這裡分享給大家。(我自己沒有使用它做開發哦!如果開發方面的求助,我就愛莫能助了!)

在這裡,我是採用vs2013進行編譯的。因為我需要的是x64位的環境下編譯程式,所以需要x64位的boost庫,我們使用x64相容工具命令提示編譯。如果編譯32位的庫,則採用x86本機工具命令提示編譯。

這一步執行完成後,會在boost根目錄生成 b2.exe 、bjam.exe 、project-config.jam 、bootstrap.log四個檔案。其中,b2.exe 、bjam.exe 這兩個exe作用是一樣的,bjam.exe 是老版本,b2是bjam的公升級版本。接下來,就是輸入編譯指令。我的編譯指令如下;

(1)bjam是指採用的編譯程式是bjam,也可以是b2install stage是指編譯之後的內容即產生(install)標頭檔案,也產生(stage)庫檔案。只選擇stage就只生成庫(靜態庫及動態庫),選擇install就還會生成包含目錄(include)。

(2)toolset是用來指定編譯器,可選的如borland、gcc、msvc(vc6)、msvc-9.0(vs2008),msvc-11.0(vs2012)等。這裡的msvc-12.0是vs2013。

(3)agedir="c:\boost\boost_vc_120"是指定生成檔案的存放路徑。

(4)link=shared;生成動態鏈結庫/靜態鏈結庫。生成動態鏈結庫需使用shared方式,生成靜態鏈結庫需使用static方式。這裡決定了生成的庫的是靜態的還是動態的庫。 

(5)runtime-link=shared;動態/靜態鏈結c/c++執行時庫。這裡可以認為是生成的庫需要怎樣去鏈結,是動態的鏈結還是靜態的鏈結。詳細的舉例如下表;

序號link

runtime-link

生成庫static

static

libboost_date_time-vc120-mt-sgd-1_59.lib

libboost_date_time-vc120-mt-s-1_59.lib

static

shared

libboost_date_time-vc120-mt-gd-1_59.lib

libboost_date_time-vc120-mt-1_59.lib

shared

shared

boost_date_time-vc120-mt-gd-1_59.dll

boost_date_time-vc120-mt-gd-1_59.lib

boost_date_time-vc120-mt-1_59.dll

boost_date_time-vc120-mt-1_59.lib

shared

static

報錯,無法編譯

可以看到link時是否使用「shared」決定了是否產生動態庫,而runtime-link決定boost鏈結系統執行時鏈結庫的方式,靜態鏈結或者動態鏈結。與之對應的就是如下圖中顯示的,是選擇multithreaded 還是選擇multithreaded dll 方式執行庫。

(6)threading,單/多執行緒編譯。如果需要編寫多執行緒程式,要指定multi方式;如果需要編寫單執行緒程式,則使用single方式。這裡一般選擇多執行緒。

(7)debug release,指定生成的庫的debug\release版本。其中

libboost_date_time-vc120-mt-sgd-1_59.lib

libboost_date_time-vc120-mt-s-1_59.lib

上面的有gd為debug版本,下面沒有gd的為release版本。

(8)address-model=64,是生成x64位的庫需要的指令。

後面的工作只需要把庫的路徑新增到程式的「附加庫目錄」,把所需的庫的名字加入「附加依賴項」即可。

已完。。

C Boost 庫文件索引

2.0 字串和文字處理 string and text processing 2.1 容器 containers 2.2 迭代器 iterators 2.3 演算法 algorithms 2.4 函式物件和高階程式設計 function objects and higher order progra...

C Boost 庫文件索引

3 boost中已廢除的庫 對一些庫的文件的其他可選檔案格式 2.0 字串和文字處理 string and text processing 2.1 容器 containers 2.2 迭代器 iterators 2.3 演算法 algorithms 2.4 函式物件和高階程式設計 function ...

C Boost庫學習之timer庫

1.timer庫概述 命名空間timer 計時器類中用到的格式 2.類cpu timer 類定義 使用例子 3.類auto cpu timer 類定義 使用例子 timer是乙個很小的庫,提供簡易的計時功能,對了解程式執行所需的時間在測試和生產環境中都很有用。舊版本的計時器已經被棄用了,取而代之的是...