<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    VS2008下編譯BOOST 1.39的ASIO庫

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    由于全部編譯BOOST庫需要的時間太長,而且耗費空間,況且我只需要用ASIO庫,所以就沒有必要全部編譯了。

    boost庫到www.boost.org上下載。

    編譯很簡單,假設你的boost存放的目錄是D:/BOOST_139。

    1.運行VS2008的命令提示行,進入D:/BOOST_139/tools/jam;執行build_dist.bat,這樣就產生了bjam.exe,該文件位于/tools/jam/stage/bin.ntx86

    2.為了方便,將bjam.exe拷貝到D:/BOOST_139/;

    3.開始根據自己的需要編譯,我只需求ASIO庫,因此分別執行:

     

    bjam --build-type=complete --with-regex --toolset=msvc-9.0 stage 
    bjam --build-type=complete --with-system --toolset=msvc-9.0 stage 
    bjam --build-type=complete --with-thread  --toolset=msvc-9.0 stage 
    bjam --build-type=complete --with-date_time --toolset=msvc-9.0 stage

     

    4.設置路徑。啟動vs2008,打開“工具”-》“選項”,選擇“項目和解決方案”->“vc++ 目錄”,將D:/BOOST_139/stage/lib和D:/BOOST_139分別添加到庫文件和包含文件中

     

    ============================================================

    其他說明:

    以后還需要其他庫怎么辦?

    按照上面的套用就行了。比如你的代碼里有#include <boost/serialization/vector.hpp>,很明顯你需要serialization庫,bjam --build-type=complete --with- serialization --toolset=msvc-9.0 stage。

     

    網上找的一些有用的資料:

    編譯參數:


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


    toolset :指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。


    without/with :選擇不編譯/編譯哪些庫。本人不需要編譯python庫,所以排除之,可以根據各人需要選擇,默認是全部編譯。但是需要注意,如果選擇編譯python的話,是需要python語言支持的,應該到python官方主頁http://www.python.org下載安裝。


    stagedir/prefix :stage時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,如VS2008對應的是E:/SDK/boost_1_39_0/vc9/lib,VC6對應的是E:/SDK/boost_1_39_0 /vc6/lib,否則都生成到一個目錄下面,難以管理。如果使用了install參數,那么還將生成頭文件目錄,vc9對應的就是E:/SDK /boost_1_39_0/vc9/include/boost-1_39/boost,vc6類似(光這路徑都這樣累贅,還是使用stage好)。


    build-dir :編譯生成的中間文件的路徑。這個本人這里沒用到,默認就在根目錄(E:/SDK/boost_1_39_0)下,目錄名為bin.v2,等編譯完成后可將這個目錄全部刪除(沒用了),所以不需要去設置。


    link :生成動態鏈接庫/靜態鏈接庫。生成動態鏈接庫需使用shared方式,生成靜態鏈接庫需使用static方式。這里需要注意的是,static 方式下,最終生成的很多靜態鏈接庫大小都在幾兆、幾十兆,甚至接近百兆。這么大的庫我們一般是不會采用靜態鏈接方式的,所以這些庫不推薦以static方式編譯(without掉);如果已經編譯了趕快刪,肯定沒用,否則將占用近1G的硬盤空間。以下是巨型庫黑名單:wave、graph、math、 regex、test、program_options、serialization、signals。


    runtime-link :動態/靜態鏈接C/C++運行時庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式。雖然它和link屬性沒有直接關系,但我們習慣上,一個工程如果用動態鏈接那么所有庫都用動態鏈接,如果用靜態鏈接那么所有庫都用靜態鏈接。所以這樣其實只需要編譯2種組合即可,即link=shared runtime-link=shared和link=static runtime-link=static。


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


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

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全