使用VS2015 編譯 64位的boost庫
別人寫的編譯參考:
目標:使用VS2015 編譯 64位的boost庫。
一直以來都是在Win32環境下Build和使用boost,但現在基本上每天都在64位Win7下工作,所以很有必要把這幾天的經驗總結下來。
1. 下載並解壓boost 1.61.0 壓縮包
2. 解壓並運行批處理文件bootstrap.bat,目錄下會生成兩個可執行文件
3. 和32位環境不同,x64環境下編譯得先從開始菜單啟動Visual Studio的VS2015 x64 Native Tools Command Prompt 進入命令提示符,而不是隨便打開任意一個命令行窗口就行。
4. 然後cd到boost根文件夾,運行bootstrap.bat生成x64版的b2.exe 和 bjam.exe (他們只是版本不同的產物,但是用法一致,bjam是之前版本的,b2 是最新的)
5. 然後運行命令:
b2 --build-type=complete toolset=msvc-14.0 threading=multi link=shared address-model=64
即可生成DLL版平臺庫,如果要編譯靜態庫版就把shared改為static。
- 只生成一個庫的話加上例如--with-python得編譯選項,避免生成東西太多、時間太長。
- 要有address-model=64屬性,如果沒有這個屬性的話,會默認生成32位的平臺庫,加入這個選項才能生成64位的DLL。
- 如果要生成Boost.Python庫,需要先下載安裝x64版的Python安裝包,我用的版本是3.2.3。在使用這個庫編寫Python擴展DLL時,默認是使用動態庫版的Boost.Python,要使用靜態版的必須在C++項目中定義BOOST_PYTHON_STATIC_LIB宏,這樣就不用在使用或發布擴展時帶著boost_python-vc90-mt-1_50.dll一起了,當然擴展DLL的尺寸會大些,如果做實驗沒必要這樣,編譯又慢生成的文件也大。
我的過程如下:
1.下載1.63.0版本的boost庫,放置D:\boost_1_63_0
2.編譯64位的boost需要在VC 提供的命令提示符進行操作。
3.開始轉到boost根目錄,運行bootstrap.Bat生成X64版本的bjam.exe和b2。
4.
B2是新版,然後運行命令:64位靜態庫
b2 stage --toolset=msvc-14.0 --without-graph --without-graph_parallel --stagedir="d:\boost_1_63_0\lib64-msvc-14" address-model=64 link=static runtime-link=static threading=multi debug release
64位的動態庫
b2 stage --toolset=msvc-14.0 --without-graph --without-graph_parallel --stagedir="d:\boost_1_63_0\lib64-msvc-14" address-model=64 link=static runtime-link=shared threading=multi debug release
我是用的是:
b2 stage --toolset=msvc-14.0 --without-graph --without-graph_parallel --stagedir="d:\boost_1_63_0\lib64-msvc-14" address-model=64 link=shared threading=multi
b2 stage --toolset=msvc-14.0 --without-graph --without-graph_parallel --stagedir="d:\boost_1_63_0\lib64-msvc-14" address-model=64 link=static threading=multi
5.需要註意的是address-model=64屬性,如果沒有這個屬性的話,會默認生成32位的平臺庫,加入這個選項才能生成64位的DLL。
要編譯很久
然後可以使用了。
6.使用方法:
設置下環境變量,頭文件路徑BOOST64_BASE_DIR , BOOST64_LIB_DIR.
2017/8/28
再次編譯系統,在visual studio 2010下編譯boost庫:
使用VS2010 64位工具,切換到boost目錄,鍵入命令:
b2 stage --toolset=msvc-10.0 --stagedir="d:\boost_1_63_0\lib64-msvc-10" address-model=64
選擇全編譯,知名庫的編譯路徑,編譯器工具,雖然時間長,不會有缺庫的提示。
使用VS2015 編譯 64位的boost庫