最新消息:

Ubuntu下如何安装boost?

技术文章 NickYang 21734浏览 28评论

最近有开始折腾Linux了,没办法,太多的东西都是在Linux下很高效并且不提供VS的工程文件,所以还是学学Linux吧,免得以后被人说做服务器竟然不懂Linux。

这篇文章的前提是系统是Ubuntu12.04LTS,系统完全更新过,并且一系列编译工具都已经安装过了,如果你还不清楚如何安装开发工具,那请你搜索一下相关文章,搞明白后再来看这个,谢谢。

首先我们需要的最新版本的boost库的源码包,可以通过www.boost.org来下载,现在的最新版本是1.52.0,有兴趣的朋友可以看下这个版本的changelog。

解压(解压这个问题很多人都会用命令解压,不过我觉得既然右键可以直接解压,为何要用命令呢,你要是觉得命令行比较高端或者专业,那请你自己去查找)后放在 文件系统/usr/share目录下,文件夹名为boost_1_52_0,里面有什么大家就自己去看吧。

1.使用bootstrap.bat来编译生成b2和bjam可执行文件。因为默认的boostrap.bat中的工具是msvc,而ubuntu不可能使用msvc的,所以我们修改boostrap.bat文件如下:

::修改前
call .\build.bat %* > ..\..\..\..\bootstrap.log

::修改后
call .\build.bat %* gcc > ..\..\..\..\bootstrap.log
::修改前
set toolset=msvc

::修改后
set toolset=gcc

这样我们就设置它是使用gcc编译。

2.点击bootstrap.sh会在终端编译生成b2和bjam可执行文件.

3.开始编译boost库。从终端进入boost库的目录 cd /usr/share/boost_1_52_0/ ,然后输入sudo ./bjam tolset=gcc –layout=tagged –build-type=complete stage

注意:此处使用的是完全编译,因为省得以后还得编译麻烦,如果你不需要某些库,直接写–without-XXX(库名)。此处为了保证权限没有问题,所以使用了sudo命令,如果你的当前用户是roo权限t,则不需要加sudo

这样生成的.a库文件就会在boost_1_52_0文件夹下的stage/lib目录下了。编译时间比较长,大家耐心等待。

4.关联头文件目录和库文件目录分别到/usr/include和/usr/lib。

#关联头文件
sudo ln /s /usr/share/boost_1_52_0/boost /usr/include/boost

#关联lib文件,需切换到boost_1_52_0/stage目录下,执行如下命令
#注意:linux下的lib文件是以lib开头 .a后缀结束的文件
sudo ind $PWD/lib/*.* -type f -exec ln -s {} /usr/lib/ \;

这样整个编译过程就结束了,剩下就是你自己如何使用了。

 

如果你不想全部安装,或者只是想要.a的库文件,那我推荐如下的安装代码。

./b2 toolset=gcc cxxflags=-fPIC --layout=versioned link=static variant=debug,release threading=multi runtime-link=shared --without-python --without-mpi --without-wave --without-graph --without-math --without-serialization stage

这个编译生成的是.so文件,而且没有那些暂时不需要的库文件,比较精简,我个人是没有试过–build-type=mininal的方式。

转载请注明:C++爱好者博客 » Ubuntu下如何安装boost?

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (28)

  1. 这个bat是windows下的安装脚本,linux的安装脚本也有啊,为什么非要用这个呢。。。
    dengzxf5年前 (2014-03-19)回复
    • 比较直接啊,这就是文档中给出的编译教程啊
      eliteYang5年前 (2014-03-19)回复
  2. 新年乐乐。
    酷特尔5年前 (2014-01-01)回复
  3. 我也是yum install *** 的,也编译过。不过我还是喜欢用.a文件。。下载&尝试中
    Yu Jing5年前 (2013-11-19)回复
  4. "如果你不想全部安装,或者只是想要.a的库文件,那我推荐如下的安装代码。"多谢!,从来全部安装并且很是苦恼可移植性的表示大谢
    Yu Jing5年前 (2013-11-19)回复
    • 额。。google了下,貌似现在不一样了。反正上述的方法是无法搞定的,我使用的是 ./b2 b2 link=static
      Yu Jing5年前 (2013-11-19)回复
    • 测试失败,我使用的是 ./b2 link=static 编译.a文件
      Yu Jing5年前 (2013-11-19)回复
      • 你可以直接看boost的文档,上面有linux的变异方法,这个方法是我成功的试过,具体说下你的错误呗
        eliteYang5年前 (2013-11-20)回复
        • 说没有–layout –without-wave –without-graph –without-math 等选项选项,
          Yu Jing5年前 (2013-11-20)回复
        • 我又看了下文档,发现原因了,因为这东西是 --layout (前面有两个-), --without-wave ... WP有转码的功能,比如双引号变中文什么的,可能把你那东西修改掉了
          Yu Jing5年前 (2013-11-20)回复
        • 另外,include文件在哪啊,如果不安装的话,我从哪里copy呢
          Yu Jing5年前 (2013-11-20)回复
          • include的文件就是下载包里的boost文件夹啊
            eliteYang5年前 (2013-11-21)回复
            • 当时刚回复完就找到了...一叶障目啊
              Yu Jing5年前 (2013-11-21)回复
              • 我最近换工作,也是在linux下工作,确实有点蛋疼
                eliteYang5年前 (2013-11-21)回复
  5. 用了两天UBUNTU,然后换成DEBIAN了~
    粪斗吧,骚年5年前 (2013-11-16)回复
  6. 😥 受教了。
    酷特尔6年前 (2012-12-20)回复
  7. 额,我看不下去了... apt-get install libboost-dev
    egmkang6年前 (2012-11-17)回复
    • 你的命令是下载好的东西,我需要自己练习编译等的一系列东西,谁都是慢慢摸索的。
      eliteYang6年前 (2012-11-17)回复
  8. 不知道你这个第一步是干什么用的,完全不需要啊,Linux就一个编译器,因此连toolset也不需要设置
    rangerlee6年前 (2012-11-15)回复
    • 选项里默认是msvc的,所以就改掉了,以前用vs05和10编译的时候就出现过问题,所以现在习惯都改了。 Linux下那个IDE好呢?codeblocks试了下,提示还是不甚给力,eclipse如何呢?
      eliteYang6年前 (2012-11-15)回复
  9. 没看懂boost是用途是啥呢?
    茶话汇6年前 (2012-11-14)回复
    • boost提供了大量的库,都很好用,可以省很多时间。而且很成熟,现在算是c++标准库了。
      eliteYang6年前 (2012-11-14)回复
  10. 不懂linux的路过
    愚蠢的凡人6年前 (2012-11-13)回复