日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Boost在Linux和windows下的编译 32位 64位

發布時間:2024/2/28 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Boost在Linux和windows下的编译 32位 64位 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡言

1. Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發引擎之一

2. Boost官網地址:http://www.boost.org/

3. 本博客示例所用的版本為boost1.55,版本下載地址為:http://www.boost.org/users/history/version_1_55_0.html

二 ?Windows下的編譯(環境是win7 VS2008)

1. 從上面的boost1.55下載地址下載,windows環境下請下載zip格式的文件,得到壓縮包boost_1_55_0.zip

2. 解壓得到文件目錄boost_1_55_0,筆者這里解壓后的boost根目錄為H:\boost\boost_1_55_0

3.從“開始菜單”中打開Microsoft Visual Studio 2008的命令行,如下圖所示

? ? ? ??

4. 進入到剛才我們解壓的boost跟目錄,即H:\boost\boost_1_55_0,方法是:首先輸入“H:”,回車,再輸入“cd boost\boost_1_55_0”,回車,再輸入“bootstrap.bat”,回車,稍等幾秒鐘即可產生編譯工具bjam.exe和b2.exe,如下圖所示

? ? ??

5.?bjam是專門為boost庫設計的編譯工具,b2.exe 、bjam.exe 這兩個exe作用是一樣的,bjam.exe 是老版本,b2是bjam的升級版本

6. 接著輸入?bjam stage --toolset=msvc-9.0 --stagedir="H:\boost\boost_1_55_0\vc90" architecture=x86 address-model=32 link=static runtime-link=shared threading=multi debug release --with-system --with-thread --with-date_time ?,回車,如下圖所示(注意:這里僅編譯了指定的庫:system, thread, date_time,若想編譯全部庫,請使用--build-type=complete)

? ? ??

7. 會發現在 H:\boost\boost_1_55_0\vc90\lib目錄下已經產生了編譯好的庫文件,如下圖所示

? ? ??

?

三:Linux下的編譯(環境是centos6.8 gcc 4.4.7)

1. 運行命令:yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs Python-devel -y ?預先安裝這些庫,因為下面編譯boost時會需要,若已安裝,安裝時會自動跳過,無需擔心

?

2. 定位到/home目錄,運行命令:wget?https://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download ?從上面的boost1.55下載地址下載壓縮包

Linux環境下請下載tar后綴的文件,得到壓縮包boost_1_55_0.tar.gz,筆者這里是下載后的路徑為:/home/boost_1_55_0.tar.gz

3. 運行命令:tar -zxvf?boost_1_55_0.tar.gz ? ?解壓到當前目錄

4. 運行命令:cd?boost_1_55_0 ? 進入剛才的解壓出來的目錄

5. 運行命令:./bootstrap.sh ? 產生后面編譯所必需的bjam

6.?bjam是專門為boost庫設計的編譯工具,b2 、bjam 這兩個可執行程序的作用是一樣的,bjam 是老版本,b2是bjam的升級版本

7. 運行命令:./b2 --show-libraries ?可以顯示所有需要編譯的庫的名字

8. 運行命令:./b2 stage --toolset=gcc --stagedir="\home\boost_1_55_0\gcc" architecture=x86 address-model=64 link=shared runtime-link=shared threading=multi --with-system --with-thread --with-date_time

9. 稍等十幾分鐘,即可在目錄/home/boost_1_55_0/gcc下看到編譯出來的庫,如下圖所示(注意:上面只編譯了指定的三個庫,system,thread, data_time,若想編譯所有庫,去掉后面的--with-選項即可)

?

下面對上面的bjam的各個參數進行解釋說明:

1. stage/install:
stage表示只生成庫(dll和lib),install表示附帶安裝功能,會生成包含頭文件的include目錄。推薦使用stage,因為install生成的這個include目錄實際就是boost安裝包解壓縮后的boost目錄(H:\boost\boost_1_55_0\boost,只比include目錄多幾個非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套頭文件,這樣既節省編譯時間,也節省硬盤空間

?

2.?toolset:
表示編譯器工具,默認自動檢測,安裝了多個編譯器的時候可以使用此屬性。可選的如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時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,例如這里是VS2008對應的是?H:\boost\boost_1_55_0\vc90
如果使用了install參數,那么還將生成頭文件目錄,vc90 對應的就是 H:\boost\boost_1_55_\boost\bin\vc90\include\boost_1_55_0\boost

?

4.?architecture

表示架構,也就是你的CPU架構,所以是x86

?

5.?address-model

地址長度,32表示編譯32位的庫文件,64表示編譯64位的庫文件

?

6.?link
生成動態鏈接庫還是靜態鏈接庫。生成動態鏈接庫需使用shared方式,生成靜態鏈接庫需使用static方式。一般boost庫可能都是以static方式編譯,因為最終發布程序帶著boost的dll感覺會比較累贅

?

7.?runtime-link
動態還是靜態鏈接C/C++運行時庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式,各人可以根據自己的需要選擇編譯

GCC下,在生成動態庫(–link=shared)時,就不允許進行靜態鏈接到C運行庫(或C++標準庫)

?

8.?threading
單線程還是多線程編譯。一般都寫多線程程序,當然要指定multi方式了;如果需要編寫單線程程序,那么還需要編譯單線程庫,可以使用single方式

?

9.?debug/release:
編譯debug/release版本。一般都是程序的debug版本對應庫的debug版本,所以兩個都編譯

?

10.?without/with:
選擇不編譯/編譯哪些庫。這里我們指定要編譯哪些庫,就使用了witth,注意寫法:--with-thread --with-date_time,同樣,如果不想編譯哪些庫,可以類似寫法--without-thread

?

總結

以上是生活随笔為你收集整理的Boost在Linux和windows下的编译 32位 64位的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。