vs2010 编译linux,VS2010 Boost编译安装
2.解壓縮到D:\boost 目錄下
3.編譯bjam
(1)從vs2010的工具菜單進(jìn)入命令提示窗口(單擊“開(kāi)始”按鈕,指向“所有程序”,指向“Microsoft Visual Studio 2010”,指向“Visual Studio tools(工具)”,然后單擊“Visual Studio 2010 command prompt(命令提示)”
(2)cd到D:\boost\boost_1_46_0下執(zhí)行bootstrap.bat,然后,會(huì)在D:\boost\boost_1_46_0\下生成bjam.exe
4.設(shè)定編譯環(huán)境(如果想去掉編譯警告需要修改)
修改user-config.jam (D:\boost\boost_1_46_0\tools\build\v2\user-config.jam) 的MSVC configuration# MSVC configuration
# Configure msvc (default version, searched for in standard locations and PATH).
# using msvc ;
using msvc : 10.0 : : /wd4819 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 ;
5.將目錄cd到D:\boost\boost_1_46_0\下執(zhí)行(1) 編譯boost庫(kù)
bjam stage --without-Python --toolset=msvc-10.0 --build-type=complete --stagedir="D:\boost\boost_1_46_0\bin\vc10" (這一步需要等待很長(zhǎng)時(shí)間,大概一個(gè)小時(shí)左右……)
下面詳細(xì)解釋一下每個(gè)參數(shù)的含義:
stage/install:stage表示只生成庫(kù)(dll和lib),install還會(huì)生成包含頭文件的include目錄。
toolset:指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)等。
without/with:選擇不編譯/編譯哪些庫(kù)。
stagedir/prefix:stage時(shí)使用stagedir,install時(shí)使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,如VS2010對(duì)應(yīng)的是D:\boost\boost_1_46_0\bin\vc10,否則都生成到一個(gè)目錄下面,難以管理。
build-dir:編譯生成的中間文件的路徑。這個(gè)本人這里沒(méi)用到,默認(rèn)就在根目錄(D:\boost\boost_1_46_0)下,目錄名為bin.v2(刪掉),等編譯完成后可將這個(gè)目錄全部刪除(沒(méi)用了),所以不需要去設(shè)置。
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ì)比較累贅。
runtime-link:動(dòng)態(tài)/靜態(tài)鏈接C/C++運(yùn)行時(shí)庫(kù)。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產(chǎn)生4種組合方式,各人可以根據(jù)自己的需要選擇編譯。一般link只選static的話(huà),只需要編譯2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static。
threading:單/多線(xiàn)程編譯。一般都寫(xiě)多線(xiàn)程程序,當(dāng)然要指定multi方式了;如果需要編寫(xiě)單線(xiàn)程程序,那么還需要編譯單線(xiàn)程庫(kù),可以使用single方式。
debug/release:編譯debug/release版本。一般都是程序的debug版本對(duì)應(yīng)庫(kù)的debug版本,所以?xún)蓚€(gè)都編譯。
運(yùn)行完后(彈出輸入提示符)
6.設(shè)定vs2010環(huán)境。(注:在2010環(huán)境下這步,在項(xiàng)目-->右鍵屬性-->VC++ Directories 中去填寫(xiě)對(duì)應(yīng)路徑 )
修改環(huán)境變量:$(BOOST): D:\boost\boost_1_46_0
Tools -> Options -> Projects and Solutions -> VC++ Directories
在Library files加上$(BOOST)\bin\vc10\lib
在Include files加上$(BOOST)
使用舉例:
#include
此時(shí),不用包含庫(kù)文件,boost的auto-link機(jī)制將會(huì)自動(dòng)幫我們包含對(duì)應(yīng)的靜態(tài)lib。也就是說(shuō),boost默認(rèn)是以靜態(tài)方式鏈接的,這樣我們的工程屬性最好也設(shè)為Multi-threaded (Debug)。如果想使用dll動(dòng)態(tài)方式鏈接,需要預(yù)先定義宏:
#define BOOST_ALL_DYN_LINK
同樣,此時(shí)boost也會(huì)默認(rèn)幫我們包含對(duì)應(yīng)的lib。如果不想使用boost提供的auto-link機(jī)制,或者對(duì)它的自動(dòng)鏈接不太放心的話(huà)(其實(shí)大可不必?fù)?dān)心),可以預(yù)先定義宏:
#define BOOST_ALL_NO_LIB
然后使用以下方法鏈接:
#pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或
#pragma comment(lib, "boost_thread-vc100-mt.lib")
這兩個(gè)lib其實(shí)是一樣的,實(shí)在不明白boost編譯時(shí)為什么每個(gè)庫(kù)都要復(fù)制一份,難道是因?yàn)楹笳咴谏?jí)boost版本后不用改代碼?另外還有一個(gè)比較有用的宏:
#define BOOST_LIB_DIAGNOSTIC
它可以讓VC在編譯時(shí)的output窗口中輸出程序具體鏈接了哪些boost庫(kù)以及鏈接順序。
關(guān)于boost的auto-link機(jī)制,詳細(xì)可以看看boost\config\auto_link.hpp里的代碼,很容易可以讀懂,并且值得我們學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的vs2010 编译linux,VS2010 Boost编译安装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: andriod studio 查看项目依
- 下一篇: 宝塔linux忘记密码,宝塔忘记登录入口