linux boost 64位编译,Boost在Linux 64 下的编译
1. 下載最新版的boost
wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz
2. 解壓
3. 執(zhí)行如下腳本
functionmake_boost() {
deploy=$(pwd)
$deploy/b2 stage --toolset=gcc-4.9 --stagedir="$deploy/gcc" \
architecture=x86 address-model=64\
link=static runtime-link=static threading=multi \--without-python
#--with-system --with-thread --with-date_time
}functionmake_issue() {
gcc_path=/opt/rh/devtoolset-3/root/usr/bin/g++version=$($gcc_path -dumpversion | awk -F'.' '{printf("%s.%s\n", $1, $2);}')
echo"using gcc : $version : $gcc_path ;" > tools/build/src/user-config.jam
}
make_issue
make_boost
第一步是為了啟用4.9的編譯器。
make的參數(shù)解釋如下
下面對(duì)上面的bjam的各個(gè)參數(shù)進(jìn)行解釋說(shuō)明:
1. stage/install:
stage表示只生成庫(kù)(dll和lib),install表示附帶安裝功能,會(huì)生成包含頭文件的include目錄。推薦使用stage,因?yàn)閕nstall生成的這個(gè)include目錄實(shí)際就是boost安裝包解壓縮后的boost目錄(H:\boost\boost_1_55_0\boost,只比include目錄多幾個(gè)非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套頭文件,這樣既節(jié)省編譯時(shí)間,也節(jié)省硬盤(pán)空間
2.?toolset:
表示編譯器工具,默認(rèn)自動(dòng)檢測(cè),安裝了多個(gè)編譯器的時(shí)候可以使用此屬性??蛇x的如borland、gcc、msvc(VC6)、msvc-12.0(VS2013)、msvc-14.0(VS2015)等,我安裝的是VS2008,所以是msvc-9.0(如果你是VS2005,可以使用msvc-8.0 VS2010是msvc-10.0)
3.?stagedir/prefix:
stage時(shí)使用stagedir,install時(shí)使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,例如這里是VS2008對(duì)應(yīng)的是?H:\boost\boost_1_55_0\vc90
如果使用了install參數(shù),那么還將生成頭文件目錄,vc90 對(duì)應(yīng)的就是 H:\boost\boost_1_55_\boost\bin\vc90\include\boost_1_55_0\boost
4.?architecture
表示架構(gòu),也就是你的CPU架構(gòu),所以是x86
5.?address-model
地址長(zhǎng)度,32表示編譯32位的庫(kù)文件,64表示編譯64位的庫(kù)文件
6.?link
生成動(dòng)態(tài)鏈接庫(kù)還是靜態(tài)鏈接庫(kù)。生成動(dòng)態(tài)鏈接庫(kù)需使用shared方式,生成靜態(tài)鏈接庫(kù)需使用static方式。一般boost庫(kù)可能都是以static方式編譯,因?yàn)樽罱K發(fā)布程序帶著boost的dll感覺(jué)會(huì)比較累贅
7.?runtime-link
動(dòng)態(tài)還是靜態(tài)鏈接C/C++運(yùn)行時(shí)庫(kù)。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產(chǎn)生4種組合方式,各人可以根據(jù)自己的需要選擇編譯
GCC下,在生成動(dòng)態(tài)庫(kù)(–link=shared)時(shí),就不允許進(jìn)行靜態(tài)鏈接到C運(yùn)行庫(kù)(或C++標(biāo)準(zhǔn)庫(kù))
8.?threading
單線程還是多線程編譯。一般都寫(xiě)多線程程序,當(dāng)然要指定multi方式了;如果需要編寫(xiě)單線程程序,那么還需要編譯單線程庫(kù),可以使用single方式
9.?debug/release:
編譯debug/release版本。一般都是程序的debug版本對(duì)應(yīng)庫(kù)的debug版本,所以?xún)蓚€(gè)都編譯
10.?without/with:
選擇不編譯/編譯哪些庫(kù)。這里我們指定要編譯哪些庫(kù),就使用了witth,注意寫(xiě)法:--with-thread --with-date_time,同樣,如果不想編譯哪些庫(kù),可以類(lèi)似寫(xiě)法--without-thread
參考資料
https://blog.csdn.net/yzf279533105/article/details/77658367
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的linux boost 64位编译,Boost在Linux 64 下的编译的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux ubuntu ssh,Lin
- 下一篇: 开源sip客户端 linux,开源SIP