Ubuntu 10.0.4 server BOOST環境配置安裝

前兩月聽說了boost這一名詞,招聘要求會用boost或者stl的也比較多,於是乎花了63大洋(打完折),買了一本《Boost 程序庫完全開發指南》,開始研究學習,直到今天才開始安裝;

1.。從boost網站www.boost.org下載boost源碼,最新版本是1.45,我用的是1.42的,boost_1_42_0.tar.gz;

2.。解壓源碼文件:tar zxvf boost_1_42_0.tar.gz,得到目錄boost_1_42_0;

3.。cd boost_1_42_0/tools/build/v2

       vi user-config.jam

       將 using gcc : 4.4 : g++-4.4 ; 前邊的註釋去掉,修改gcc與g++版本號與自己系統的相一致,要不然編譯時提示錯誤,找不到gcc。

4.。進入目錄boost_1_42_0/tools/jam,準備編譯一個工具bjam,這個工具是boost自己的工具,用來編譯boost,

       ./build_dist.sh

       稍等片刻編譯完畢之後,會在目錄boost_1_42_0/tools/jam/stage/bin.linuxx86生成可執行文件bjam,將該文件複製到boost根目錄,

       cp bjam /boost_1_42_0 (我的boost_1_42_0文件夾在根目錄)

5.。開始編譯boost,其實boost的庫並不是都必須要編譯才能用,只有少數十幾個才需要編譯,但是我這裏都編譯了;

        在編譯之前最好先安裝python2.6-dev_2.6.5-1ubuntu6_i386.deb,不然的話編譯python時會提示一大堆錯誤,以至於最後有很多庫都沒有編譯,而且提示failed。。。。。等等,skip。。。。。當然,也可以通過選項-without-python放棄python的編譯,這樣就不會提示錯誤。

       在編譯時關於庫regex的錯誤,如果需要支持unicode的話,必須安裝libicu42_4.2.1-3_i386.deb,否則可以不安裝,

       輸入 apt-get install libicu42  系統自動下載並安裝。

      需要ICU支持的編譯命令:

      ./bjam -sHAVE_ICU=1 --without-mpi --toolset=gcc --includedir=/usr/local/include --libdir=/usr/local/lib/boost install

      不需要ICU支持的編譯命令:

      ./bjam --without-mpi --toolset=gcc --includedir=/usr/local/include --libdir=/usr/local/lib/boost install

       編譯之後頭文件安裝到了--includedir=/usr/local/include ,lib庫文件安裝到了--libdir=/usr/local/lib/boost中,可以cd進去查看一番;

       我這裏沒有編譯mpi庫,編譯mpi庫的的話需要按裝openmpi庫,最重要的是試了幾個小時最熱openmpi編譯安裝了,但是配置mpi一直失敗,最後不得已放棄mpi的編譯

       編譯過程大概要半個小時左右,慢慢等吧。看看股票都行。

    6.。配置頭文件與庫文件的搜索路徑:

       用簡單的方法,將頭文件做個符號鏈接,即:ln -s /usr/local/include/boost /usr/include/boost

       庫文件在/usr/local/lib目錄,編譯器能夠搜索到,不需要做任何工作,只不過在使用需要編譯才能使用的boost庫時,必須在命令行加上改庫名字,否則提示找不到某個符號的實現之類的錯誤;

 

     7.。編寫測試程序

        1)使用不需要編譯的庫 timer 庫

        #include <boost/timer.hpp>
        #include <iostream>
        using namespace boost;
        int main()
       {
            timer t;
            std::cout << "boost lib [timer] test code..."<< std::endl;

            std::cout << "max timespan:" << t.elapsed_max() / 3600 << "h" << std::endl;
            std::cout << "min timespan:" << t.elapsed_min() << "s" << std::endl;
            std::cout << "now time elapsed:" << t.elapsed() << "s" << std::endl;
       }

      

        g++ -o a.out timer_test.cpp

        ./a.out

         結果如下:

         boost lib [timer] test code...

         max timespan:0.59652h
         min timespan:1e-06s
         now time elapsed:0.01s

         說明成功使用了boost庫函數。

       2)使用regex庫

          #include <boost/regex.hpp>
          #include <iostream>
          using namespace boost;
          int main()
         {
              std::cout << "boost lib [regex] test code..." << std::endl;
              boost::regex reg("//d{3}([a-zA-Z]+).(//d{2}|N/A)//s//1");
         }

         不加-l參數時編譯出錯:

        g++ -o regex regex_test.cpp

        加-l參數時不出錯:

        g++ -o regex regex_test.cpp -lboost_regex

 

       運行結果:

       boost lib [regex] test code...

 

    至此,boost環境就編譯測試完畢,以後可以在此環境上學習boost的其它庫的用法,進而將他們應用到自己的工作當中,儘量提高工作效率,降低開發成本。哈哈哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章