一、Linux環境
cd boost_1_70_0
#./bootstrap.sh --with-libraries=all --with-toolset=gcc
--with-liraries:需要編譯的庫
--with-toolset:編譯時使用的編譯器
安裝boost庫
#./b2 install --prefix=/usr
--prefix:boost庫的安裝目錄,不加此參數,默認安裝在/usr/local目錄下
二、window環境
1.下載源碼 |
https://www.boost.org |
2.用管理員身份打開 vs2013的開發人員命令提示 |
進入 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts 點擊對應命令即可 編譯32位選擇:VS2013 開發人員命令提示 編譯64位選擇: VS2013 x64 兼容工具命令提示 |
3.定位boost目錄下 |
通過cd進入boost目錄(如目錄D:\Boost\boost_1_70_0), 輸入: #bootstrap.bat 可在boost目錄里生成b2.exe 、bjam.exe 、project-config.jam 、bootstrap.log四個文件。其中,b2.exe 、bjam.exe 這兩個exe作用是一樣的,bjam.exe 是老版本,b2是bjam的升級版本 |
4. 編譯 |
注意: vs2013的版本必須要到update5,否則編譯時部分庫無法生成,比如thread和chrono,更新打開vs2013右上角小旗子會有說明,點開update5的選項就可以下載更新。
然后輸入如下命令編譯: #bjam stage --toolset=msvc-12.0 --without-python --stagedir="D:\boost\boost_1_70_0\bin\vc12_x86" link=static runtime-link=shared runtime-link=static threading=multi debug release 編譯64位則修改一個輸出目錄,運行 #bjam stage --toolset=msvc-12.0 --without-python --stagedir="D:\boost\boost_1_70_0\bin\vc12_x64" link=static runtime-link=shared runtime-link=static threading=multi debug release address-model=64
(1)stage/install:stage表示只生成庫(dll和lib),install還會生成包含頭文件的include目錄。本人推薦使用stage,因為install生成的這個include目錄實際就是boost安裝包解壓縮后的boost目錄(D:\boost\boost_1_70_0,只比include目錄多幾個非hpp文件,都很小),所以可以直接使用,且不同IDE都使用同一套頭文件,這樣既節省編譯時間,也節省硬盤空間。 (2)toolset:指定編譯器,可選如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等,VS2013對應msvc-12.0。 (3)without/with:選擇不編譯/編譯哪些庫。因為python、mpi等庫我都用不着,所以排除之。還有wave、graph、math、regex、test、program_options、serialization、signals這幾個庫編出的靜態lib都非常大,所以不需要的也可以without掉。這可以根據各人需要進行選擇,默認是全部編譯。但是需要注意,如果選擇編譯python的話,是需python語言支持,應該到python官方主頁http://www.python.org/下載安裝。 查看boost包含庫的命令是bjam --show-libraries。 (4)stagedir/prefix:stage時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,如VS2008對應的是E:\SDK\boost\bin\vc9,VC6對應的是E:\SDK\boost\bin\vc6,否則都生成到一個目錄下面,難以管理。如果使用了install參數,那么還將生成頭文件目錄,vc9對應的就是 E:\SDK\boost\bin\vc9\include\boost-1_46\boost,vc6類似(光這路徑都這樣累贅,還是使用stage好)。 (5)build-dir:編譯生成的中間文件的路徑。這個本人這里沒用到,默認就在根目錄(E:\SDK\boost)下,目錄名為bin.v2,等編譯完成后可將這個目錄全部刪除(沒用了),所以不需要去設置。 (6)link:生成動態鏈接庫/靜態鏈接庫。生成動態鏈接庫需使用shared方式,生成靜態鏈接庫需使用static方式,一般boost庫可以static方式編譯,這樣最終發布程序了一不帶boost的dll。 (7)runtime-link:動態/靜態鏈接C/C++運行時庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式,各人可以根據需要選擇編譯。 (8)threading:單/多線程編譯。一般使用多線程程序,應指定multi方式了;如果需要編寫單線程程序,那么還需要編譯單線程庫,可以使用single方式。 (9) address-model : 編譯地址長度,64表示編譯64位版本,默認為32位版本 (10)debug/release:編譯debug/release版本。一般程序的debug版本對應庫的debug版本,所以兩個都編譯。 |
5. 查看並組織編譯輸出 |
完成編譯之后,會在 boost_1_70_0\bin\vc12_x86 boost_1_70_0\bin\vc12_x64 里生成相應lib文件, 其中boost_1_70_0目錄里面會有一個bin.v2文件夾(占空間比較大),此文件夾編譯臨時文件夾,可直接刪除,然后在上一目錄中. 頭文件部分x86/x64 boost_1_70\boost 可以單獨建一個boost_1_70目錄, 組織結構如下,打包備用,以后就不需要再編譯了。 \\include 原始頭文件 \\vc12_x86 \\vc12_x64 |
6. 環境變量的配置與使用 |
編譯完成之后通過設置環境變量來引用更便捷 BOOST_HOME=d:\boost\boost_1_70_0_build BOOST_INCLUDE=%BOOST_HOME%\include BOOST_LIB_X86=%BOOST_HOME%\vc12_x86\lib BOOST_LIB_X64=%BOOST_HOME%\vc12_x64\lib |