本博客(http://blog.csdn.net/livelylittlefish)贴出作 者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!

Linux平台Boost的编译方法

Boost的编译使用的不是已经成为公认标准的make,而是专门为Boost开发的工具bjam(boost jam)。

本文以boost1.40为例,在Linux平台的编程环境为gcc4.4.1,假设Boost代码在/usr/src/boost_1_40_0目录,步骤如下。

1. 获得bjam

获得bjam有3种方式,如下:

方法1:Boost网站上提供了各种平台上预编译好的bjam可执行程序,可直接下载使用。

方法2:从Boost源代码中提供的bjam代码编译出可执行程序。

方法3:通过bootstrap程序生成bjam。

方法1:

# apt-get install bjam

方法2:

(1) # cd /usr/src/boost_1_40_0/tools/jam/src

(2) # ./build.sh

编译完成后:

生成的可执行文件为

# /usr/src/boost_1_40_0/tools/jam/src/bin.linuxx86/bjam

需要将bjam.exe拷贝到源代码所在的目录
    # cp bin.linuxx86/bjam  /usr/src/boost_1_40_0

方法3:

(1) # cd /usr/src/boost_1_40_0

(2) # ./bootstrap.sh

该方法直接在Boost源代码目录下生成bjam文件。

2.修改bjam配置

使用bjam前,需要修改bjam的配置文件。Linux平台的配置文件:

/usr/src/boost_1_40_0/tools/build/v2/user-config.jam

修改如下。注:笔者在实验时,不修改貌似也很正常。

将43行的“# using gcc ;”前的注释符号‘#’去掉,表明用到使用gcc编译。

如果要使用STLport作为其标准库,将75行前的‘#’去掉。

3. 完整编译Boost

对Boost进行完整编译,生成所有调试版、发行版的静态库和动态库。

方法1:

# cd /usr/src

# wget http://sourceforge.net/projects/boost/files/boost/1.40.0/boost_1_40_0.tar.bz2

# tar --bzip2 -xvf boost_1_40_0.tar.bz2

# cd boost_1_40_0

# bjam --toolset=gcc --build-type=complete stage

或

# ./bjam --build-type=complete --layout=versioned

或

# ./bjam

方法2:

# cd /usr/src/boost_1_40_0/tools/jam

# ./build_dist.sh

也会完成Linux平台bjam和Boost的所有编译工作,并生成所有调试版、发行版的静态库和动态库。但不推荐该方式。

编译成功后,将在/usr/src/boost_1_40_0/bin.v2目录下生成诸多文件,包括.a和.so.1.40.0文件,这就是在Linux平台要使用Boost需要的,其他的文件可以删除。

安装

# ./bjam install

将生成的库默认安装到/urs/local/lib目录。

4 部分编译Boost

完整编译Boost费时费力,且这些库在开发过程中并不一定全部用到,因此,bjam也支持用户自行选择要编译的库。

在完全编译的基础上,使用--with或者—without选择可以打开或者关闭某个库的编译,例如,仅仅编译date_time库:

# cd /usr/src/boost_1_40_0

# ./bjam --toolset=msvc --with-date_time --build-type=complete stage

当然,bjam还有很多其他选项,如指定安装路径,指定debug或release等,可参考bjam文档或帮助。

Linux平台Boost的编译方法的更多相关文章

  1. Linux平台Boost 1.6.7的编译方法

    boost库下载地址:https://dl.bintray.com/boostorg/release/ 编译: 1. 获得bjam (1) # cd /usr/src/boost_1_67_0 (2) ...

  2. 使用opencv320演示window平台cmake的使用方法以及一个使用CNN识别字符的例子 20180408

    cmake是干啥的: 本来是Linux平台的一个编译工具. window平台上,cmake可以生成一个可以用vs(可以指定)打开的工程,然后使用 vs 编译相关的 lib.dll 或者 exe以供使用 ...

  3. 在 Linux 平台中调试 C/C++ 内存泄漏方法(转)

    由于 C 和 C++ 程序中完全由程序员自主申请和释放内存,稍不注意,就会在系统中导入内存错误.同时,内存错误往往非常严重,一般会带来诸如系统崩溃,内存耗尽这样严重的后果.本文将从静态分析和动态检测两 ...

  4. qemu-trustzone编译&运行(包含linux内核的编译方法)

    由于之前都是用的mtk6797开发板,回到实验室之后想要做实验的话需要弄一个支持trustzone的qemu,在这里记录一下我的编译和调试过程.本来最近一直忙着看论文和写论文,但是忽然发现自己在实验部 ...

  5. jsoncpp linux平台编译和arm移植

    下载 http://sourceforge.net/projects/jsoncpp/ 或者 http://download.csdn.net/detail/chinaeran/8631141 Lin ...

  6. 如何在linux平台上编译安装zlib软件(公司部分线上机器缺少zlib不能安装supervisor)

    文章在Centos  6.5 linux平台上演示一下如何进行编译安装zlib软件,并配置相关的选项加载使用.示范从下载到安装并配置进行使用过程一系列整套讲解,希望可以给网友考虑使用,谢谢.   工具 ...

  7. 在Linux平台上搭建EasyDarwin,编译代码并简单部署

    測试环境: Ubuntu gcc / g++ 从https://github.com/EasyDarwin/EasyDarwin下载代码 1.编译 第一步:进入源码文件夹下 cd ./EasyDarw ...

  8. Linux下boost编译安装

    说明:下面内容仅针对Linux环境(boost官网为:http://www.boost.org/,可从这里下载它的源代码包,这里要求下载.tar.gz包,而非.7z..zip或bz2包). 在当前目录 ...

  9. Linux平台下卸载MySQL的方法

    转载自: https://www.cnblogs.com/taomylife/p/7234925.html Linux平台下卸载MySQL的方法: MySQL的安装主要有三种方式:二进制包安装.RPM ...

随机推荐

  1. Markdown---锚点使用

    Markdown目前还没有支持文内锚点的标记语法:但是支持html,所以锚点可以通过html语法来实现 使用方法 <a href='#jump'>第一个题目</a> 带有锚点的 ...

  2. Android 出现java.lang.NoClassDefFoundError错误

    项目中用到了Retrofit在android4.4以下版本发生的问题 因为项目的build.gradle文件沿用于一个项目的,在defaultConfig z中已经声明了 multiDexEnable ...

  3. nginx hello模块代码

    // ngx_http_mytest_module.c #include "ngx_core.h" #include "ngx_string.h" #inclu ...

  4. PHP -- 页面传值的6种获取方法

    1.PHP4以后获取传值的方法 一般在页面中传值常见的是POST.GET和COOKIE几种,所以下面我也主要介绍这几种.PHP4以后都采用的是$_POST.$_GET等数组来获取网页传值.在PHP3. ...

  5. Java--tomcat线程池(分析)

    以apache-tomcat-7.0.57 为例子 tomcat的默认配置如下: <Connector connectionTimeout="/> 默认的线程池为: maxThr ...

  6. Microsoft Visual Studio 2010导致系统C盘不断增大问题处理。

    一直用Microsoft Visual Studio 2010做开发,发现最近C盘空间是越来越小,一开始以为是IE或者一些系统补丁造成的临时文件,但是使用360,windows优化大师之类的软件都清过 ...

  7. webstrom内置压缩工具YUI-compressor详解

    压缩工具层次不穷,各有优点,选择适合的压缩工具为将来做项目开发使用是一件很重要的事情!!在这介绍YUI-compressor 英文官网:http://yui.github.io/yuicompress ...

  8. C# 读取EXCEL文件出现数据丢失问题,数据不完整

    将EXCEL数据导出的时候如果同一列数据中既有文字,又有数字!读取时一列中要么文字丢失只剩下数字,要么数字丢失,只剩下文字,这是由第一行的数据类型决定的.出现这种问题是由于数据类型不统一造成的. 原来 ...

  9. 《C++反汇编与逆向分析技术揭秘》之十——析构函数

    局部对象 当对象所在作用域结束之后,销毁栈空间,此时析构函数被调用. 举例: 函数返回时自动调用析构函数: 堆对象 调用析构代理函数来处理析构函数: 为什么使用析构代理函数来调用析构函数?考虑到如果d ...

  10. Python性能优化:PyPy、Numba 与 Cython。PyPy的安装及对应pip的安装

    性能优化讨论见参考1:大概意思是,PyPy内置JIT,对纯Python项目兼容性极好,几乎可以直接运行并直接获得性能提升:缺点是对很多C语言库支持性不好.Numba是一个库,可以在运行时将Python ...