您的位置:首页 > 编程语言 > C语言/C++

Ubuntu编译安装boost并在eclipse C/C++中使用/Boost安装和卸载

2013-06-14 17:44 716 查看

一、Ubuntu编译安装boost并在eclipse C/C++中使用

source : http://www.linuxidc.com/Linux/2011-04/34790.htm
1.从boost官网下载boost 1.46.1

2.执行 apt-get install build-essential
(目的是为了安装好象gcc,g++等一些工具进行编译)

      注:我是在root用户下进行的操作,普通用户执行 sudo apt-get install build-essential

3.解压boost库到/usr/share/

      將下载好的boost 1.46.1.tar.gz(我用的是这个版本) 复制到/usr/share/ 目录下,然后解压,会自动生成一个boost_1_46_1这个文件夹(或者用命令解压,这里就不提了,可以自己去查解压命令)

4.编译bjam(这个东东是用来编译boost库的)

      编译之前先做如下操作,由于这版本是编译msvc版的bjam,我们把它改成gcc版的bjam......

      进入boost1.46.1解压目录找到bootstrap.bat 用记事本打开,然后修改:

      第13行將call .\build.bat > ..\..\..\bjam.log
改为call .\build.bat gcc > ..\..\..\bjam.log

     第33行將set toolset=msvc改为set toolset=gcc

     保存退出,然后双击 bootstrap.sh在终端中执行,稍等片刻会在boost_1_46_1中生成bjam

5.编译boost库: 在终端中进入/usr/share/boost_1_46_1目录

     在终端中输入 cd /usr/share/boost_1_46_1

     然后我在root用户下输入 ./bjam toolset=gcc --layout=tagged --build-type=complete stage 进行完全编译

     (普通用户的话执行: sudo[b]./bjam toolset=gcc --layout=tagged --build-type=complete stage

)

      经过漫长的等 待,命令执行完毕后,将会生成所有版本的库,并存储在:

         /usr/share/boost_1_46_1/stage 下

6.boost 已经编译好了,下面调用boost库

    1.在/usr/include/下生成一个boost库的include文件夹连接:

       ln -s /usr/share/boos t_1_46_1/boost /usr/include/boost

    2.在/usr/lib/ 下生成所有boost编译出的lib库文件的对应连接 切换到stage目录下,执行

       find $PWD/lib/*.* -type f -exec ln -s {} /usr/lib/ \;

       (普通用户执行: [b]sudo find $PWD/lib/*.* -type f -exec ln -s {} /usr/lib/ \;
)

执行完以上操作就算ok了 [/b][/b]

这不是一篇向导,全面的向导请看这里 (http://goo.gl/XcAf)。

这仅是一篇笔记。这里用bjam方式 进行编译。

下载boost。(http://cdnetworks-kr-1.dl.sourceforge.net/project/boost/boost/1.42.0/boost_1_42_0.tar.bz2)
解压到指定文件夹,我是将它解压到根目录下的一个sourcecode文件夹下。
    /home/volnet/sourcecode/boost_1_42_0

启动终端(ctrl+f2,输入“gnome-terminal”)。生成bjam脚本。
    ./bootstrap.sh --prefix=/home/volnet/sourcecode/boost_install
如果不带--prefix参数的话(推荐 ),默认的路径是/usr/local/include和/usr/local/lib
    ./bootstrap.sh
使用--help参数可以查看帮助,用-h可以查看简要帮助。
    ./bootstrap.sh --help
生成脚本bjam,已经存在的脚本将被自动备份。
www.linuxidc.com@Ubuntu:~/sourcecode/boost_1_42_0$ ./bootstrap.sh --prefix=/home/volnet/sourcecode/boost_install/

Building Boost.Jam with toolset gcc... tools/jam/src/bin.linuxx86/bjam

Detecting Python version... 2.6

Detecting Python root... /usr

Unicode/ICU support for Boost.Regex?... /usr

Backing up existing Boost.Build configuration in project-config.jam.4

Generating Boost.Build configuration in project-config.jam...

Bootstrapping is done. To build, run:

    ./bjam

   

To adjust configuration, edit 'project-config.jam'.

Further information:

   - Command line help:

     ./bjam --help

    

   - Getting started guide:

     http://www.boost.org/more/getting_started/unix-variants.html 
    

   - Boost.Build documentation:

     http://www.boost.org/boost-build2/doc/html/index.html[/code] 

二、Boost安装和卸载


今天在Ubuntu下安装了boost,非常简单。参考:www.boost.org/doc/html/bbv2/installation.html

只不过Ubuntu的原因,如果写系统目录,需要用sudo执行:

 

$./bootstrap.sh

$./bjam

$sudo ./bjam install

 

如果是需要支持mpi,在执行了./bootstrap.sh后,需要修改文件project-config.jam ,添加

 

# MPI configuration

using mpi ;

 

当然,首先保证已经安装了mpich2或openmpi。然后在第2行执行:

$./bjam --with-mpi

参考:http://www.boost.org/doc/libs/1_46_1/doc/html/mpi/getting_started.html#mpi.installation

 

默认将头文件安装在/usr/local/include,库文件安装在/usr/local/lib

卸载也很简单,直接将以上两个目录中有关boost的内容删除就可以了

三、Ubuntu下Boost、BLAS、Lapack及CGAL安装 

http://hhfighting.blog.163.com/blog/static/5570032320120932829701/

1,首先安装Boost,下载最新的boost ,解压到某个目录

首先,安装Boost之前,需要做一些准备工作:

     安装g++:sudo apt-get install g++

     为了更完整的编译boost,需要下载额外的软件包,比如要完整编译boost-python库需要下载python2.6-dev,正则库regex需要  unicode/icu,boost.iostreams库需要zlib1g-dev,相关命令如下琐事:

     sudo apt-get install python2.6-dev(根据当前的版本进行选择)

     sudo apt-get install libicu-dev

     sudo apt-get install libbz2-dev

没安装上述库的出现的错误信息:

运行 ./bootstrap.sh 出现“Unicode/ICU support for Boost.Regex?....not found”,此错误的解决办法就是安装libicu-dev。

接着,要编译生成boost安装工具bjam

进入boost目录执行:(前两句是为相关文件添加执行权限)

chmod +x bootstrap.sh  

chmod +x ./tools/build/v2/engine/build.sh

 ./bootstrap.sh

注意:

如果没有前两句的设置权限,否则会出现如下错误

./bootstrap.sh: 210: ./tools/build/v2/engine/build.sh: Permission denied

Building Boost.Build engine with toolset …

Failed to build Boost.Build build engine

Consult ‘bootstrap.log’ for more details

然后,执行刚生成的

./bjam install --prefix=/usr/local   //指定了安装路径

       install会安装头文件和库文件到相应指定目录,头文件安装到/usr/local/include下,库文件安装到/usr/local/lib下。具体指定安装目录见  /bjam –help。

此外,也可以使用./bjam stage

      stage说起来只能说是收集生成的库文件到一个目录下,通常默认就在./stage下。

注意:若编译过程中未指定install或stage,则生成的目标库文件只存在于–build-dir所指的目录中,默认为./bin.v2。考虑到此,若无需将头文件和库文件安装,则推荐使用stage关键字。

编译开始,大约半小时,全部编译结束。

2,测试boost安装

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

4,安装Lapack

安装lapack最主要的是如何修改 make.inc,具体操 作如下:

先将下载的文件解压缩:tar xvzf lapack-3.4.0.gz

移动文件到制定目录:sudo mv lapack-3.4.0 /usr/local/

安装编译器及相关库文件:sudo apt-get install gfortran

                                          sudo apt-get install libblas-dev

建立make.inc文件: cp make.inc.example make.inc

 编辑make.inc文件:gedit make.inc

红色部分为修改部分  ............                                                                    

                                     FORTRAN  = gfortran -fimplicit-none -g

                                     OPTS     = -O3     //此参数是编译器的版本 根据机器具体安装的编译器来设置

                                     DRVOPTS  = $(OPTS)

                                     NOOPT    =                                    

                                     LOADER   = gfortran -g

                                     LOADOPTS =                                      

                                     ..............

修改makefile文件:gedit Makefile (如果安装了BLAS,此步就不需要进行了)

修改内容如下:(由于事先没有安装BLAS,所以需要对blas进行编译)

原文:

       lib: lapacklib tmglib
       #lib: blaslib variants lapacklib tmglib

修改为:

      #lib: lapacklib tmglib
      lib: blaslib variants lapacklib tmglib

编译文件:make

编译出现以下错误:

./lapack_testing.py

make: execvp: ./lapack_testing.py: 权限不够

make: *** [lapack_testing] 错误 127

授予权限:chmod +x lapack_testing.py

然后再make,程序运行正常。

最后,复制liblapack.a 、 librefblas.a、  libtmglib.a三个文件到/usr/lib和/usr/local/lib两个文件夹中。

Now, only generate static library(.a). I want to generate dynamic library(.so), how to do ?

reference:  http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=908
4,安装CGAL


CGAL,它要求boost要1.39以上)。

cmake-gui .  //后面的.代表是当前目录

make 

sudo make install

默认头文件装在 usr/local/include/,  库文件装在 usr/local/lib/. 

使用CGAL编译代码

复制scripts/cgal_create_cmake_script到你的工程目录并运行

运行下列命令,将地址替换成你当前的工作目录

cmake -DCGAL_DIR=$HOME/CGAL-3.5

然后运行make,即可生成可执行文件

5,软件包的基本结构和安装路径:

安装的软件包, 一般有四部分组成: 头文件, 库文件, 可执行程序,文档。 一般情况下,它们放的位置如下:

/usr/include, /usr/lib, /usr/bin, /usr/share/doc/。 在软件包安装时,一般会自动安装到这些文件夹当中; 但有时候也需要用户自己把头文件、库文件等拷贝到相应的目录下, 或者做一个符号链接也可以。

ln -sf  被链接的目录或文件  链接目录或文件

-s: 符号链接

-f: 硬链接

当然有时会把 软件包放在 /usr/local/ 下(其目录结构和/usr/基本相同), 但要注意 记得将 /usr/local/lib 加入到缺省的共享库搜索路径中,就是在文件 /etc/ld.so.conf 中加入一行:

/usr/local/lib

然后运行

/sbin/ldconfig

6,软件包安装后的常见问题及解决办法:

 (1)软件包已经安装,但仍提示找不到库文件。

       原因一般有二。 第一, 软件包没有安装在缺省的共享库搜索路径中,系统不能自动找到它。 你可以通过添加缺省搜索路径的办法解决, 也可以通过拷贝,链接 把文件放到系统能够自动找到的地方。 第二, 安装的库文件的名字和你需要的名字不同, 可能是大小写,也可能是因为有额外的版本号, 这时你只需要再做一个新的库文件的符号链接, 链接的名字和你需要的相同即可。

ln -sf

(2)如何尽量快速的软件安装。

      首选是在ubuntu的软件库中找,找到后用 sudo apt-get install 进行安装。 比如:

      apt-cache search emacs

      就搜索了所有含有关键词emacs的软件名称。一大堆。如果要分屏,用

      apt-cache search emacs|less

      或者用grep更精确地定位 比如

      apt-cache search emacs|grep emacs22

     当然你也可以通过google, Baidu等来确定你相要的软件包在软件库中的具体名字。

     另一个选择是通过google, baidu搜索 deb包, 然后下载下来进行安装。

     最后的选择才是通过软件包的网站,下载源码进行编译安装, 安装之前要仔细阅读安装说明, 一般以INSTALL, README等命名的文本文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: