zoukankan      html  css  js  c++  java
  • (转载)Linux中安装编译Boost库

    (转载)http://kongxue448.blog.163.com/blog/static/1680531842011215113615215/

    Linux中安装编译Boost库


    介绍
        Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。 Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文 件系统库等)需要链接库。但Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。


    编译、安装
    我的实现步骤如下:
    1、官网下载boost_1_46_0.tar.gz,按照默认的情况,把它解包到 /usr/local/ 里面。
          下载地址:
    http://sourceforge.net/projects/boost/files/boost/
    2、boost 库的安装应该分为两部分:第一部分是安装无需编译(Head Only)的boost库,第二部分是安装需要单独编译(Separately-Compiled)的boost库。
    3、Head Only的编译:Boost的User Guide中说,Head Only的编译是无需做任何操作的。运行它提供的例子,是可以显示的。
    #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) << " " );
    
        return 0;
    }

    将其保存为:example.cpp
    编译:[root@localhost boost_1_46_0]#c++ -I /usr/local/boost_1_46_0 example.cpp -o example
    运行:[root@localhost boost_1_46_0]#echo 1 2 3 | ./example
    显示结果; 3 6 9
    4、Separately-Compiled的编译,需要用到bjam(boost jam),这是专门为boost开发的编译工具。
    进到/usr/local/boost_1_46_0文件夹
    [root@localhost boost_1_46_0]#./bootstrap.sh
    [root@localhost boost_1_46_0]#./bjam install
    到这里就算编译完成了,在/usr/local/的include和lib中生成了boost库文件和头文件。其中/usr/local/是boost的默认安装路径,如果需要指明include和lib的安装位置,可以通过一下命令实现。
    [root@localhost boost_1_46_0]#./bjam -a "-sTOOLS=gcc" "--includedir=/usr/include" "--libdir=/usr/lib/boost" "--build-type=complete" threading=multi "--layout=tagged" install

    总结
    Boost编译用到了专门的编译工具bjam,而不是平时常用的make。网上提供了很多种方式获取bjam,有人总结了三种,因为没有尝试过其他的方式,就不一一列出。boost_1_46_0版本不需要单独再获取bjam,只需要运行 [root@localhost boost_1_46_0]#./bootstrap.sh 即可自动生成bjam。


    详细的内容可以参阅:boost_1_46_0/more/getting_started/index

     
     
     

    笔者很简单的安装了,boost_1_53_0.tar.bz2这个版本。

    执行了./bootstrap.sh和./bjam install,仅仅这两条命令。

    也没有设置环境变量,如头文件路径和库函数路径。

    但是发现头文件和库文件的默认安装到的位置了,如下图:

    例子:

    #include <iostream>
    #include <boost/shared_ptr.hpp>  // shared_ptr
    #include <boost/array.hpp>  // array
    #include <boost/tokenizer.hpp>  // tokenizer
    #include <boost/format.hpp>  // format
    #include <boost/date_time/gregorian/gregorian.hpp>  // date_time
    #include <memory>  // auto_ptr
    #include <string>
    #include <vector>
    #include <list>
    #include <deque>
    #include <algorithm>
    
    using namespace std;
    using namespace boost;
    using namespace boost::gregorian;  // 需要使用这个
    template<typename T>
    void printElement(T element)
    {
            cout << element << " ";
    }
    
    int main()
    {
        date d1;
        date d2(2012, 9, 11);
    
        cout << d1 << endl;
        cout << d2 << endl;
    
        assert(d2.year() == 2012);
        assert(d2.month() == 9);
        assert(d2.day() == 11);
    
        cout << day_clock::local_day() << endl;
        cout << day_clock::universal_day() << endl;
    
        return 0;
    }

    程序输出:

  • 相关阅读:
    395. Coins in a Line II
    394. Coins in a Line
    221. Maximal Square
    64. Minimum Path Sum
    [LeetCode] 129. Sum Root to Leaf Numbers Java
    [LeetCode] 117. Populating Next Right Pointers in Each Node II Java
    [LeetCode] 116. Populating Next Right Pointers in Each Node Java
    [LeetCode] 114. Flatten Binary Tree to Linked List Java
    [LeetCode] 113. Path Sum II Java
    [LeetCode] 112. Path Sum Java
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3073643.html
Copyright © 2011-2022 走看看