• Linux编译和安装boost库


    https://blog.csdn.net/this_capslock/article/details/47170313

    1. 下载boost安装包并解压缩
    到http://www.boost.org/下载boost的安装包,以boost_1_58_0.tar.gz为例
    下载完成后进行解压缩:

    tar zxvf boost_1_58_0.tar.gz

    2.设置编译器和所选库
    先进入解压缩后的目录:

    cd boost_1_58_0

    然后运行bootstrap.sh脚本并设置相关参数:

    ./bootstrap.sh --with-libraries=all --with-toolset=gcc

    --with-libraries指定编译哪些boost库,all的话就是全部编译,只想编译部分库的话就把库的名称写上,之间用 , 号分隔即可,可指定的库有以下几种:

    库名 说明
    atomic
    chrono
    context
    coroutine
    date_time
    exception
    filesystem
    graph 图组件和算法
    graph_parallel
    iostreams
    locale
    log
    math
    mpi 用模板实现的元编程框架
    program_options
    python 把C++类和函数映射到Python之中
    random
    regex 正则表达式库
    serialization
    signals
    system
    test
    thread 可移植的C++多线程库
    timer
    wave
    --with-toolset指定编译时使用哪种编译器,Linux下使用gcc即可,如果系统中安装了多个版本的gcc,在这里可以指定gcc的版本,比如--with-toolset=gcc-4.4

    命令执行完成后看到显示如下即为成功:

    Building Boost.Build engine with toolset gcc... tools/build/src/engine/bin.linuxx86_64/b2
    Detecting Python version... 2.6
    Detecting Python root... /usr
    Unicode/ICU support for Boost.Regex?... not found.
    Generating Boost.Build configuration in project-config.jam...

    Bootstrapping is done. To build, run:

    ./b2

    To adjust configuration, edit 'project-config.jam'.
    Further information:

    - Command line help:
    ./b2 --help

    - Getting started guide:
    http://www.boost.org/more/getting_started/unix-variants.html

    - Boost.Build documentation:
    http://www.boost.org/build/doc/html/index.html

    3.编译boost
    执行以下命令开始进行boost的编译:

    ./b2 toolset=gcc

    编译的时间大概要10多分钟,耐心等待,结束后会有以下提示:

    ...failed updating 60 targets...
    ...skipped 21 targets...
    ...updated 663 targets...
    4.安装boost
    最后执行以下命令开始安装boost:

    ./b2 install --prefix=/usr

    --prefix=/usr用来指定boost的安装目录,不加此参数的话默认的头文件在/usr/local/include/boost目录下,库文件在/usr/local/lib/目录下。这里把安装目录指定为--prefix=/usr则boost会直接安装到系统头文件目录和库文件目录下,可以省略配置环境变量。

    安装完毕后会有以下提示:

    ...failed updating 60 targets...
    ...skipped 21 targets...
    ...updated 11593 targets...

    最后需要注意,如果安装后想马上使用boost库进行编译,还需要执行一下这个命令:

    ldconfig

    更新一下系统的动态链接库

    5.boost使用测试
    以boost_thread为例,测试刚安装完的boost库是否能正确使用,测试代码如下:

    #include <boost/thread/thread.hpp> //包含boost头文件
    #include <iostream>
    #include <cstdlib>
    using namespace std;

    volatile bool isRuning = true;

    void func1()
    {
    static int cnt1 = 0;
    while(isRuning)
    {
    cout << "func1:" << cnt1++ << endl;
    sleep(1);
    }
    }

    void func2()
    {
    static int cnt2 = 0;
    while(isRuning)
    {
    cout << " func2:" << cnt2++ << endl;
    sleep(2);
    }
    }

    int main()
    {
    boost::thread thread1(&func1);
    boost::thread thread2(&func2);

    system("read");
    isRuning = false;

    thread2.join();
    thread1.join();
    cout << "exit" << endl;
    return 0;
    }

    在编译程序时,需要加入对boost_thread库的引用:

    g++ main.cpp -g -o main -lboost_thread
    如果boost库的安装位置不是在系统目录下,则还需要在编译时加上-I和-L指定boost头文件和库文件的位置

    编译成功后运行程序,利用boost实现的多线程任务正确运行:

    func1: func2:00

    func1:1
    func2:1
    func1:2
    func1:3
    func2:2
    func1:4
    func1:5
    func2:3
    func1:6
    func1:7
    func2:4
    func1:8
    func1:9
    func2:5
    func1:10
    func1:11
    func2:6
    func1:12
    func1:13
    func2:7
    func1:14
    func1:15
    func2:8
    func1:16

    exit
    转自:https://blog.csdn.net/this_capslock/article/details/47170313

    诸位正值青春年少,一定恣情放纵,贪恋香艳梅施之情,喜欢风流雅韵之事,洒脱木拘。然而诸位可知,草上露一碰即落,竹上霜一触即溶,此种风情难于长久。
  • 相关阅读:
    ajax怎么打开新窗口具体如何实现
    关于springcloud hystrix 执行 hystrix.stream 跳转失败的问题
    Zookeeper 和Eureka比较
    Maven Install报错:Perhaps you are running on a JRE rather than a JDK?
    Oracle11g卸载步骤
    Oracle数据库备份及恢复
    python是如何进行内存管理的?
    python面试题
    json模块与hashlib模块的使用
    随机验证码、打印进度条、文件copy脚本
  • 原文地址:https://www.cnblogs.com/shilipojianshen/p/13354161.html
Copyright © 2020-2023  润新知