生成檔案命名規則:boost中有許多庫,有的庫需要編譯、而有的庫不需要編譯,只需包含標頭檔案就可以使用。編譯生成的檔案名字普遍較長,同乙個庫根據編譯鏈結選項不同,又可以生成多個不同名字的檔案。生成的檔案名字是很長,可是這樣帶的資訊才多,也就容易識別出用途。其實生成檔案的名字遵循一定的規則,有著固定的格式。識別這種格式,能幫助我們更高效地使用boost庫。生成檔案名字格式如:
boost_lib_prefix + boost_lib_name + "-" + boost_lib_toolset + "-" + boost_lib_thread_opt + "-" + boost_lib_rt_opt + "-" + boost_lib_version
這些定義為:
boost_lib_prefix: 靜態庫為 "lib" (否則無,是用動態鏈結庫)
boost_lib_name: 庫的基本名稱 ( 比方說 boost_regex).
boost_lib_toolset: 編譯工具集名稱 ( 比如:vc6, vc7, bcb5 )
boost_lib_thread_opt: 多執行緒為 "-mt" ,否則為空
boost_lib_rt_opt: 指示使用的執行庫的字尾,
組合下面的乙個或者更多字元:
s 靜態執行庫,指的是靜態鏈結到執行時庫(不出現表示動態).
g 除錯/診斷 runtime (release if not present).
d 除錯版本 (不出現表示 release 版 ).
p stlport 版本.
注:對 vc 來說,gd 總是一起出現
boost_lib_version: boost 版本, boost 版本 x.y 表示為 x_y形式.
編譯:為了簡化boost庫的編譯,boost庫中帶了乙個用來編譯的工具,名字是bjam.exe或者b2.exe.
1:執行boost下的bootstap.bat指令碼就會自動生上述的兩個編譯工具,並且拷貝到boost目錄下. 也可以進入tools/build目錄下找到類似的指令碼或者專案原始碼來編譯.
2: bjam.exe的引數
feature
allowed values
notes
variant
debug,release
link
shared,static
determines if boost.build creates shared or static libraries
threading
single,multi
cause the produced binaries to be thread-safe. this requires proper support in the source code itself.
address-model
32,64
toolset
(depends on configuration)
the c++ compiler to use. see the section called 「c++ compilers」 for a detailed list.
(vs2008)msvc-8.0(vs2010)msvc-10.0
include
(arbitrary string)
additional include paths for c and c++ compilers.
define
(arbitrary string)
additional macro definitions for c and c++ compilers. the string should be either symbol or symbol=value
cxxflags
(arbitrary string)
custom options to pass to the c++ compiler.
cflags
(arbitrary string)
custom options to pass to the c compiler.
linkflags
(arbitrary string)
custom options to pass to the c++ linker.
runtime-link
shared,static
determines if shared or static version of c and c++ runtimes should be used.
--build-dir=
編譯的臨時檔案會放在builddir裡(這樣比較好管理,編譯完就可以把它刪除了)
--stagedir=
存放編譯後庫檔案的路徑,預設是stage
--build-type=complete
編譯所有版本,不然只會編譯一小部分版本(確切地說是相當於:variant=release, threading=multi;link=shared|static;runtime-link=shared)
variant=debug|release
決定編譯什麼版本(對應檔案中的d 除錯版本 不出現表示 release 版)
link=static|shared
決定使用靜態庫還是動態庫。(對應檔案中的boost_lib_prefix )
threading=single|multi
決定使用單執行緒還是多執行緒庫。(對應檔案中的boost_lib_thread_opt)
runtime-link=static|shared
決定是靜態還是動態鏈結c/c++標準庫。(對應檔案中的boost_lib_thread_opt)
--with-
只編譯指定的庫,如輸入--with-regex就只編譯regex庫了。
--show-libraries
顯示需要編譯的庫名稱
bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=static link=static stage
意思是要生靜態庫,該靜態庫靜態鏈結c執行時庫
生成的檔案名字是:libboost_date_time-vc100-mt-sgd-1_48.lib(debug version),libboost_date_time-vc100-mt-s-1_48.lib(release version) 兩個檔案.
bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=shared link=static stage
意思是要生靜態庫,該靜態庫動態鏈結c執行時庫
生成的檔案名字是:libboost_date_time-vc100-mt-gd-1_48.lib(debug verion),libboost_date_time-vc100-mt-1_48.lib(release version) 兩個檔案.
bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=shared link=shared stage
意思是要生動態庫,該動態庫動態鏈結c執行時庫
生成的檔案名字是:boost_date_time-vc100-mt-gd-1_48.lib(debug version),boost_date_time-vc100-mt-1_48.lib(release version) 兩個檔案.
生成的dll名字是:boost_date_time-vc100-mt-gd-1_48.dll(debug version),boost_date_time-vc100-mt-1_48.dll(release version)
編譯選項方面還有install等引數.
Boost在linux中編譯
用boost 1 39 0版本作為例子 1 進入boost 1 39 0 tools jam src 2 執行.build.sh 或者在boost 1 39 0 tools jam 下執行.build dist.sh 3 編譯完成後在boost 1 39 0 tools jam src bin.li...
boost的編譯 使用
2.解壓到zip到磁碟中,如我解壓在d盤中,d boost 1 61 0 3.編譯 1.利用vs的命令列引數,進入原始碼解壓的目錄資料夾中 2.修改user config.jam中mcvs的版本號,如vs2010 修改為vc10 3.在命令列工具中執行d boost 1 61 0 bootstrap...
原創 boost中thread庫的編譯
boost中的thread需要編譯成dll才能使用。首先,獲取boost 可以在cmd中敲入 cvs d pserver anonymous boost.cvs.sourceforge.net cvsroot boost login cvs z3 d pserver anonymous boost....