boost在windows下的編譯(vs2010)


首先說下環境,win7,vs2010。

先在http://www.boost.org/users/download/上下載boost安裝包,我下的是1.52.0版。

按照說明,直接運行“bootstrap.bat”,報“‘cl'不是內部或外部命令”的錯誤,於是在環境變量中添加了cl.exe的路徑——“C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_ia64”。再次運行“bootstrap.bat,提示找不到“mspdb100.dll,繼續在環境變量中添加了路徑——C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE 

繼續編譯,還是不過,看了下bootstrap.log,提示一些頭文件找不到,放棄了之前的思路,不再繼續添加環境變量,還是使用vs自帶的命令行工具吧,這個工具在啟動時會自動設置好各種路徑。工具的位置在菜單“工具->visual studio命令提示”(或者在“開始-程序-Micro Visual Studio 2010-Visual Studio Tools-Visual Studio 命令提示),使用這個命令行工具,運行“bootstrap.bat”,bjam.exe編譯成功,根據提示,在cmd中繼續敲入“.\b2”,boost庫編譯成功。

接下來要做些試着,在vs2010中,菜單“視圖->屬性管理器”,隨便打開一個c++工程,展開樹形結構,有個Microsoft.Cpp.Win32.user 項,在這項中的“vc++目錄->庫目錄”中添加“G:\boost_1_52_0\stage\lib”(我的boost庫放在G盤的),在“包含目錄”中添加“G:\boost_1_52_0 ”。

大功告成!

后來試着在工程中添加了boost,發現Link的時候始終報無法訪問“boost_python-vc100-mt-gd-1_52.lib”。我看了下,各種路徑設置都是正確的,而且這個lib文件確實也有,估計是這個lib文件關聯的某個文件沒有成功加載。

在網上搜索了下,發現直接使用“.\b2”這個選項編譯的是有問題的,簡單的說,就是各種編譯參數沒有設置好。

由於我主要是使用boost中與python相關的東西,所以先將“boost_1_52_0\tools\build\v2\user-config.jam”文件打開,在最后一行添加了“using python : 2.7 : d:\\python27 ;”(“d:\\python27”是我python的安裝目錄),然后用“visual studio命令提示”工具執行了下面的命令“bjam stage toolset=msvc-10.0 variant=debug link=static address-model=32 threading=multi runtime-link=static -s install”命令。由於使用了“install”命令,編譯完成后,在C盤生成了“C:/boost”目錄,頭文件、lib文件、dll文件都在里面。

重新設置了“VC++目錄->庫目錄”,添加“C:\Boost\lib”,“包含目錄”添加了“C:\Boost\include\boost-1_52”,然后將“boost_1_52_0\stage\lib”中的兩個dll文件copy到了我的程序目錄下。

重新編譯了工程,成功了。運行了下,也一切正常。

boost真是麻煩啊。

主要參考了下面一篇博文http://china.ygw.blog.163.com/blog/static/68719746201152485054104/

復制在下:

 

 

 

 

 

 

  最新的boost庫已經發布了1.46.1版本,但是我接觸的比較晚,去年才開始接觸並使用,第一次使用的是1.43版本,而且當時安裝的時候沒有進行完全安裝(未包含mpi及python,只涉及32位版本)。這幾天重新研究了一下完整安裝問題,以下針對Windows 7系統(64位)下通過vs2010完整安裝boost 1.46.1(32位/64位)進行詳細描述。

        完整安裝boost,需要涉及幾個第三方庫:

        1)Regex所需要的Unicode支持類庫---ICU。由於自己是使用C/C++,所以需要icu4c。

        2)MPI所需要的類庫---Boost的官方站點說需要MPICH或OpenMPI之類的支持,事實上在Windows下總是會提示需要MPIC++,你需要的是Microsoft Cluster Pack SDK,下載並默認安裝在C:\ProgramFiles\Microsoft Compute Cluster Pack下。(說明:如果安裝Microsoft HPC Pack 2008 SDK或Microsoft Compute ClusterPack時不是裝到默認的路徑下,那bjam就會找不到mpic++的路徑,這時候可以修改一下mpi.jam(在boost_1_46_1\tools\build\v2\tools目錄中): local cluster_pack_path_native = "你的路徑")。

        3)Python所需要的Python語言庫---Python

        以下先分步描述相關第三庫的安裝過程:

        1)ICU4C

             a)當前icu4c最高版本為4.8,下載的源代碼包為icu4c-4_8-src.tgz(個人偏向於通過源代碼編譯生成,這樣會更靈活,比如有問題時可以調試);

             b)解壓icu4c-4_8-src.tgz文件,進入icu\source\allinone子目錄,用vs2010打開allinone.sln解決方案;

             c)分別按照Win32(32位程序)/x64(64位程序)下的Debug/Release模式進行編譯,其Win32的Debug/Release庫文件保存於icu\lib目錄,x64的Debug/Release庫文件保存於icu\lib64目錄。需要注意的是:生成相應的Debug/Release庫文件后,需要將相應的lib/lib64目錄下.dll及.lib文件備份出來,避免編譯下一Release/Debug版本時被覆蓋;

             d)將編譯后的Win32/x64的Debug/Release文件(.lib及.dll文件)依次保存好(比如x86/x64目錄下的debug/release子目錄),並在x86/x64目錄下的debug/release子目錄下新建include目錄,並將icu4c的頭文件依次拷貝一份到對應的include目錄中(后面編譯boost時需要)。

        2)MPI

              最最簡單的方式,直接進入前述地址下載安裝即可。

        3)Python

             當前Python最高版本為3.2,從3.2版本開始有了Windows的安裝包(安裝后直接有了相應的頭文件、庫文件等,無需經由代碼編譯)。在這里要說聲抱歉,直接經由代碼編譯有很多問題,總是編譯不過,所以暫時使用安裝包,待后面代碼編譯通過后再使用代碼包。(注意,編譯32位boost程序時安裝32位的python,編譯完成后再卸載,然后再安裝64位的python,繼續進行64位boost的編譯,反之亦然)

        至此,安裝boost所需要的相關第三方庫已經准備完成,現在正式開始boost 1.46.1的安裝過程:

        1)通過boost網站下載最新的boost源代碼包boost_1_46_1.tar.gz並解壓;

        2)用UltraEdit打開boost_1_46_1\boost_1_46_1\tools\build\v2目錄下的user-config.jam文件,並在最后增加兩行“using mpi ;”(注意,mpi與;之間有一個空格)、“using python : 3.2 : c:\\python32 ;”(注意,3.2與;之間有一個空格,另外,3.2為python的版本號(只需要主版本號與次版本號),c:\\python32為python的安裝目錄,windows下需要將路徑的\符號轉換為\\)

        3)通過vs2010的“Visual Studio Command Prompt (2010)”(編譯32位)、“Visual Studio X64 Win64 Command Prompt (2010)”(編譯64位)菜單項進入vs2010命令行,並進入解壓后的boost_1_46_1\boost_1_46_1目錄;

        4)執行bootstrap.bat命令(只需要執行一次即可);

        5)x86/x64下的debug/release編譯命令分別是:

             a)x86 debug
                  bjam --prefix=e:\build\boost\1.46.1\x86\debug stage toolset=msvc-10.0 variant=debug link=shared address-model=32 threading=multi runtime-link=shared -s ICU_PATH=E:\build\icu4c\4.8\x86\debug install

              b)x86 release
                    bjam --prefix=e:\build\boost\1.46.1\x86\release stage toolset=msvc-10.0 variant=release link=shared address-model=32 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x86\release install

               c)x64 debug
                    bjam --prefix=e:\build\boost\1.46.1\x64\debug stage toolset=msvc-10.0 variant=debug link=shared address-model=64 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x64\debug install

               d)x64 release
                    bjam --prefix=e:\build\boost\1.46.1\x64\release stage toolset=msvc-10.0 variant=release link=shared address-model=64 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x64\release install
         6)其中,--prefix設置boost安裝目錄;stage表示只生成庫文件(dll與lib文件);toolset指定編譯器,vs2010就是msvc-10.0,vs2005/vs2008分別是msvc-8.0與msvc-9.0;variant決定編譯什么版本;link決定使用靜態庫還是動態庫,shared是動態庫,static是靜態庫;address-model決定地址長度,即32還是64位程序;threading決定使用單線程(single)還是多線程(multi)庫;runtime-link決定是靜態(static)還是動態(shared)鏈接C/C++標准庫;-s ICU_PATH設置icu4c的路徑;install會生成包含頭文件的include目錄。

        至此,windows 7(64位)系統下使用vs2010完全編譯boost 1.46.1完成(含x86/x64的debug與release版本)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM