现在的位置: 首页 > 综合 > 正文

Ubuntu 10.0.4 server BOOST环境配置安装

2013年01月11日 ⁄ 综合 ⁄ 共 2758字 ⁄ 字号 评论关闭

前两月听说了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的其它库的用法,进而将他们应用到自己的工作当中,尽量提高工作效率,降低开发成本。哈哈哈哈

抱歉!评论已关闭.