Linux如何编译和安装boost库

 更新时间:2024年01月11日 16:46:58   作者:this_CAPSLOCK  
这篇文章主要介绍了Linux如何编译和安装boost库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1.下载boost安装包并解压缩

https://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 << "\tfunc2:" << 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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • LNMP系列教程之 解决sendmail不能发送邮件问题

    LNMP系列教程之 解决sendmail不能发送邮件问题

    客户需要验证邮件注册用户我发现邮件发送不了。一般的主机我用过,直接在dz后台开启就可以实现。查阅相关资料应该是sendmail不能发送邮件导致的。那我们如何解决呢
    2012-09-09
  • Linux下性能分析工具Perf安装与用法

    Linux下性能分析工具Perf安装与用法

    perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找,它由一个叫“Performance counters“的内核子系统实现,可用于性能瓶颈的查找与热点代码的定位,本文给大家介绍了Linux Perf安装与使用,需要的朋友可以参考下
    2024-05-05
  • Linux中修改环境变量及生效方法

    Linux中修改环境变量及生效方法

    下面小编就为大家带来一篇浅谈Linux中修改环境变量及生效方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Ubuntu20.04开机黑屏光标闪烁进不去系统的解决方案

    Ubuntu20.04开机黑屏光标闪烁进不去系统的解决方案

    文章主要描述了作者在使用命令行升级Ubuntu系统时遇到的问题以及解决方法,升级过程中断电导致系统无法正常启动,最终通过切换到命令行界面、联网更新和重启等步骤解决问题
    2026-04-04
  • 在CentOS上安装nmap失败的完整解决方案

    在CentOS上安装nmap失败的完整解决方案

    在CentOS/RHEL系统上安装nmap失败的问题通常与软件源配置或依赖关系有关,以下是专业解决方案,包括修复软件源配置、手动安装nmap、使用EPEL仓库和编译安装等方法,需要的朋友可以参考下
    2025-10-10
  • centos7修改系统语言为简体中文的实现

    centos7修改系统语言为简体中文的实现

    这篇文章主要介绍了centos7修改系统语言为简体中文的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Linux内核宏Container_Of的详细解释

    Linux内核宏Container_Of的详细解释

    我们在分析Linux内核链表的时候注意到内核在求解结构体偏移的时候巧妙的使用了container_of宏定义,本文我们就来详细剖析下内核到底是如何求解结构体成员变量的地址的
    2021-09-09
  • linux之如何杀掉指定端口

    linux之如何杀掉指定端口

    这篇文章主要介绍了linux之如何杀掉指定端口问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Linux使用stty显示修改终端行设置

    Linux使用stty显示修改终端行设置

    这篇文章主要介绍了Linux使用stty显示修改终端行设置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Linux本机与服务器文件互传及Linux服务器文件上传下载命令写法

    Linux本机与服务器文件互传及Linux服务器文件上传下载命令写法

    这篇文章主要介绍了Linux本机与服务器文件互传及Linux服务器文件上传下载命令写法,需要的朋友可以参考下
    2017-08-08

最新评论