zoukankan      html  css  js  c++  java
  • [原]Linux平台Boost的编译方法

    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            //库名带gcc版本

    # ./bjam --build-type=complete --layout=tagged stage


    # ./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目录。

    也可以把编译和安装写在一起,如:./bjam --build-type=complete --layout=tagged stage install

    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文档或帮助。

    NOTE:1.48版本已经支持b2进行编译,功能和bjam类似。

    5. bjam的一些参数:

    --build-dir=<builddir> 编译的临时文件会放在builddir里(编译完就可删除)
    --stagedir=<stagedir> 存放编译后库文件的路径,默认是stage
    --build-type=complete 编译所有版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared)
    variant=debug|release 编译什么版本(Debug or Release?)
    link=static|shared 使用静态库还是动态库。
    threading=single|multi 单线程还是多线程库。
    runtime-link=static|shared 决定是静态还是动态链接C/C++标准库。
    --with-<library> 只编译指定的库,如输入--with-regex就只编译regex库了。
    --show-libraries 显示需要编译的库名称



    另外可以参考:

    Linux中安装boost库详解:http://blog.csdn.net/zhoudaxia/article/details/4292953

    http://www.th7.cn/Program/cp/201303/127637.shtml


    作者:yuandianlws 发表于2011-11-30 15:59:18 原文链接
    阅读:977 评论:0 查看评论
  • 相关阅读:
    poj 3528 (三维几何求凸包+凸包表面积)
    dijkstra模板(好像是斐波那契额堆优化,但我为什么看起来像优先队列优化,和spfa一样)
    最大空凸包模板
    ICPC 2017–2018, NEERC, Northern Subregional Contest St Petersburg, November 4, 2017 I题
    hdu 5248 序列变换
    hdu 2063(二分图模板测试)
    组合数
    85. Maximal Rectangle 由1拼出的最大矩形
    750. Number Of Corner Rectangles四周是点的矩形个数
    801. Minimum Swaps To Make Sequences Increasing 为使两个数组严格递增,所需要的最小交换次数
  • 原文地址:https://www.cnblogs.com/yuandianliws/p/3570622.html
Copyright © 2011-2022 走看看