zoukankan      html  css  js  c++  java
  • linux下编译安装boost库

    先看一下系统环境

    Linux o-pc 3.19.0-22-generic #22-Ubuntu SMP Tue Jun 16 17:15:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

    本文由乌合之众 lym瞎编,欢迎转载 blog.cnblogs.net/oloroso
    本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso

    1、下载并解压boost 1.58 源代码

    可以去boost的官网下载,这里提供一个下载地址

    下载

    wget http://jaist.dl.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.tar.bz2
    

    解压

    tar -xjf boost_1_58_0.tar.bz2
    

    2、运行bootstrap.sh

    bootstrap.sh是用来检查安装环境的,如果报错了,看一下是缺少了什么,安装一下即可(g++)。

    ./bootstrap.sh
    

    运行完成之后会在当前目录生成一些文件,用于下一步安装。

    3、使用b2进行构建

    b2是上一步成功后生成的,使用它来进行构建boost库。

    sudo ./b2
    

    这里也可能遇到错误,比如没有bzlib.h这个头文件的。

    cc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.9.2/release/link-static/threading-multi/bzip2.o
    libs/iostreams/src/bzip2.cpp:20:56: fatal error: bzlib.h: 没有那个文件或目录
     #include "bzlib.h"  // Julian Seward's "bzip.h" header.
                                                            ^
    compilation terminated.
    

    解决办法也是很简单的,执行下面的语句(前提是debina系的linux发行版,或者安装了apt-get)

     sudo apt-get install libbz2-dev 
    

    构建成功的提示

    The Boost C++ Libraries were successfully built!
    
    The following directory should be added to compiler include paths:
    
        /home/o/Boost库/boost_1_58_0
    
    The following directory should be added to linker library paths:
    
        /home/o/Boost库/boost_1_58_0/stage/lib
    

    上面两句的意思是提示你编译使用了boost库的代码的时候指定的include目录和lib目录位置。

    4、安装boost库到指定目录

    第三步骤只是说了构建的情况,其实这已经可以用了。如果想安装boost库到指定目录,比如说usr/local目录,可以使用下面的命令来进行。

    sudo ./b2 --prefix=/usr/local/boost install
    

    安装以后编译代码的时候还是要指定目录,可以将它添加到环境变量CPLUS_INCLUDE_PATHLIBRARY_PATH中去。

    export CPLUS_INCLUDE_PATH=/usr/local/boost/include
    export LIBRARY_PATH=/usr/local/boost/lib
    

    这只是临时的,乐意的可以写入/etc/profile文件中。

    5、测试一下

    先写一个简单的获取当前日期的小程序

    代码

    #include <boost/date_time/gregorian/gregorian.hpp> 
    #include <iostream> 
    int main() 
    { 
        boost::gregorian::date d(boost::gregorian::day_clock::local_day());
        std::cout << d.year() << d.month() <<d.day() << std::endl; 
    }
    

    编译运行

    g++ -I /usr/local/boost/include -L /usr/local/boost/lib boost.cpp -o boost
    
     ./boost 
    
    2015Jul9

    http://www.cnblogs.com/oloroso/p/4632848.html

  • 相关阅读:
    Android应用增量更新
    corner2
    UIProject
    Argo
    flower-recognition
    Android-Chat-Widget
    leanchat-android
    Beautyacticle
    XianBicycle
    完整性约束(章节摘要)
  • 原文地址:https://www.cnblogs.com/findumars/p/6253092.html
Copyright © 2011-2022 走看看