文档章节

Ubuntu下编译boost(附Eclipse静态链接库设置)

viwii
 viwii
发布于 2012/04/16 22:14
字数 751
阅读 794
收藏 0

Ubuntu下编译boost(附Eclipse静态链接库设置)

这不是一篇向导,全面的向导请看 这里 (http://goo.gl/XcAf)。
这仅是一篇笔记。这里用 bjam方式 进行编译。
  1. 下载boost。(http://cdnetworks-kr-1.dl.sourceforge.net/project/boost/boost/1.42.0/boost_1_42_0.tar.bz2)
  2. 解压到指定文件夹,我是将它解压到根目录下的一个sourcecode文件夹下。
        /home/volnet/sourcecode/boost_1_42_0
  3. 启动终端(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,已经存在的脚本将被自动备份。
    volnet@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
  4. 然后就是利用生成的bjam脚本编译源码了。
    volnet @Ubuntu :~/sourcecode/boost_1_42_0$ sudo ./bjam -a -sHAVE_ICU=1 installNote: Building Boost.Regex with Unicode/ICU support enabled    Using ICU in  /usr/include
    • ./是unix-like系统执行文件的前缀,这里就是指要执行bjam文件。
    • -a是参数,代表重新编译(Rebuild)。输入./bjam -h获得更多帮助。
    • -sHAVE_ICU=1,代表支持Unicode/ICU。点击这里(http://goo.gl/ySEe)
      前提:系统内需要安装有libicu-dev,可以在终端输入:
      sudo apt-get install libicu-dev
    • install,表示安装
    • --clean,表示清理。当前语句中包含-a,则不需要先手动清理,否则需要先运行
      ./bjam --clean
  5. 如果你执行上一步,会出现诸如:mpi的问题,多半是本机没有安装mpi。根据系统提示,你可以找到有/home/volnet/sourcecode/boost_1_42_0/tools/build/v2/user-config.jam。在文件最后跟上
    using mpi ;
    即可。然后如果还是有mpi问题,说明本机没有安装mpi。
    sudo apt-get install mpi-default-dev

界此应该顺利通过编译了。并在/usr/local/lib下有了boost的库了。
下面讨论一下链接静态链接库在Eclipse里的问题。
Unix variants 向导里,官方提供了一个使用正则表达式的程序。
在Eclipse里,新增c++ project,并使用Linux C++编译器。将代码拷贝到文件中:
因为要静态链接到正则表达式的库,所以如下图所示,设置对应的*.a文件路径到eclipse,以使链接器能够找到它。


编译通过!
为了我们的程序能够正确载入,我们需要让我们的程序在我们的系统范围内也能够找到我们的库。这时候我们需要在设置一下。详见 这部分 的相关介绍。
测试程序!
volnet @Ubuntu :~/workspace/boost_get_started/Debug$ ./boost_get_started < test
Will Success Spoil Rock Hunter?
这里test是一个文件。

© 著作权归作者所有

viwii

viwii

粉丝 15
博文 35
码字总数 30868
作品 0
海淀
程序员
私信 提问
加载中

评论(1)

viwii
viwii 博主
Posted on 2011-04-06 13:15 ZLD 阅读(881) 评论(5) 编辑 收藏 引用 所属分类: boost
作为一个ubuntu新手,对于好多东西都折腾的很辛苦,花了好多时间,而且过程非常艰辛,所以总结了一下网上的一些资料写了这篇文章作为笔记,希望可以给新手们带来一些启发.........



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 ./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/ \;
(普通用户执行: sudo find $PWD/lib/*.* -type f -exec ln -s {} /usr/lib/ \; )

执行完以上操作就算ok了




Feedback

# re: ubuntu 10.10下 boost1.46.1编译[未登录] 回复 更多评论

2011-04-06 16:23 by jc
bjam有一个install的命令,可以把boost的头文件和库文件复制到/usr/local/lib下
# re: ubuntu 10.10下 boost1.46.1编译 回复 更多评论

2011-04-15 22:47 by sunoom
你好,请问按照你这种方式编译完毕后如何使用boost? 可否举个例子说下 #include<*> *应当怎么写? 多谢。
# re: ubuntu 10.10下 boost1.46.1编译 回复 更多评论

2011-04-18 17:54 by 亡灵
#include <boost/thread.hpp>
# re: ubuntu 10.10下 boost1.46.1编译 回复 更多评论

2011-04-19 13:51 by ZLD
@sunoom
就象楼上说的那个格式,这是在网上找到的代码:
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
}

运行后输入1 2 3 结果为3 6 9
# re: ubuntu 10.10下 boost1.46.1编译 回复 更多评论

2011-04-19 13:56 by ZLD
@jc
多谢指点,不过对于bjam的install 命令不是很了解,还请详说
Win32平台Boost的编译方法

本博客(http://blog.csdn.net/livelylittlefish )贴出作 者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Win32 平台 Boost 的编译方法 本文以 boost1.40 为例,在 Wi...

晨曦之光
2012/03/09
372
0
2018-01-07 win10 vs2017 编译boost

G:boost1580>b2.exe stage --toolset=msvc-14.0 --stagedir="g:boost1580bin1.58.0vc14.1" threading=multi --build-type=complete --build-dir="g:boost158build" --with-locale 具体介绍:......

我就是我2017
2018/01/07
0
0
boost 1.56.0 编译及使用

boost的编译和使用,经过搜集资料和总结,记录成文。感谢文后所列参考资料的作者。 1 下载 地址:http://sourceforge.net/projects/boost/files/boost/1.56.0/ 可以选择 boost1560.7z 下载。...

元谷
2016/01/29
279
1
Boost库的命名规则

本博客(http://blog.csdn.net/livelylittlefish )贴出作 者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Boost库的命名规则 例如: Win32平台 libboost_filesystem-...

晨曦之光
2012/03/09
544
0
cocos2d-x android 移植 问题

由于android系统目前没有将boost加入,这里面使用了大量的STL及C++的一些语言特性,导致编译出现令人非常头痛的问题。 1、出现类似的异常函数错误 boost/exception/detail/exceptionptr.hpp:...

予木
2013/06/25
868
1

没有更多内容

加载失败,请刷新页面

加载更多

sync 包讲解

sync.Once Once 的作用是多次调用但只执行一次,Once 只有一个方法,Once.Do(),向 Do 传入一个函数,这个函数在第一次执行 Once.Do() 的时候会被调用,以后再执行 Once.Do() 将没有任何动作...

李琼涛
22分钟前
4
0
java中的byte占一字节或4字节

https://www.jianshu.com/p/2f663dc820d0

南桥北木
36分钟前
5
0
Cassandra 常用命令

Linux控制台命令 #进入Cassandra的安装目录 cd /home/db/cassandra/cassandra #进入Cassandra 无密码 ./bin/cqlsh localhost(IP)有密码 ./bin/cqlsh localhost(IP)-u 用户名 #显示所...

最菜最菜之小菜鸟
41分钟前
6
0
自建redis笔记

自建redis笔记 最近在linux安装了一下redis,特做一些笔记! 本文先单节点启动redis,然后再进行持久化配置,在次基础上,再分享搭建主从模式的配置以及Sentinel 哨兵模式及集群的搭建 单节点...

北极之北
49分钟前
5
0
扛住阿里双十一高并发流量,Sentinel是怎么做到的?

Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景 本文介绍阿里开源限流熔断方案Sentinel功能、原理、架构、快速入门以及相关框架比较 基本介绍 1 名词解释 服务限流 :当系统资源...

分布式系统架构
57分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部