Linux下Boost编译安装
来源:互联网 发布:淘宝联盟网站推广设置 编辑:程序博客网 时间:2024/05/28 15:39
Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。
安装步骤:
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gztar zxvf boost_1_64_0.tar.gzcd boost_1_64_0.tar.gz./bootstrap.sh --with-libraries=all --with-toolset=gcc ##--with-libraries指定编译哪些boost库,all的话就是全部编译,只想编译部分库的话就把库的名称写上,之间用 , 号分隔即可,可指定的库下面介绍。--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/b2Detecting Python version... 2.6Detecting Python root... /usrUnicode/ICU support for Boost.Regex?... not found.Generating Boost.Build configuration in project-config.jam...Bootstrapping is done. To build, run: ./b2To 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
编译
./b2 toolset=gcc
安装boost
./b2 install --prefix=/usr ##--prefix=/usr用来指定boost的安装目录,不加此参数的话默认的头文件在/usr/local/include/boost目录下,库文件在/usr/local/lib/目录下。这里把安装目录指定为--prefix=/usr则boost会直接安装到系统头文件目录和库文件目录下,可以省略配置环境变量。
最后,如果安装后想马上使用boost库进行编译,还需要执行一下这个命令:
ldconfig
可指定的库有:
库名 说明
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
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;}
编译程序:
g++ main.cpp -g -o main -lboost_thread
如果boost库的安装位置不是在系统目录下,则还需要在编译时加上-I和-L指定boost头文件和库文件的位置
编译成功后运行程序,利用boost实现的多线程任务正确运行:
编译时如果遇到图中所示错误:
执行:
LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATHexport LD_LIBRARY_PATH
之后再重新编译运行即可。
- Linux下boost编译安装
- Linux下编译安装BOOST
- Linux下编译安装boost
- Linux下Boost编译安装
- LINUX 下BOOST完整编译与安装
- LINUX 环境下BOOST 库安装编译
- linux下编译安装boost库
- linux下编译boost
- linux下编译BOOST
- linux下编译boost
- linux 下boost编译
- linux 下编译boost
- linux下编译boost
- boost linux下编译
- linux下boost编译
- Linux 编译安装Boost
- Linux编译安装boost
- Linux 编译安装Boost
- Angular2 + node 接口调试解决方案
- Intellij IDE设置文件打开方式
- java中重定向标准IO
- 文章标题
- Vue的加载顺序探讨(二):如何判断所有的子组件加载完成
- Linux下Boost编译安装
- 斐波那契数列
- Cordavo和PhoneGap
- 图像缩放函数(CImage)
- Centos7.0编译安装lnmp环境(nginx1.9.9+php7.1.6+mysql5.7.17)
- GET 和 POST区别
- 牛客网算法学习笔记-概率(2)
- 一篇文章告诉你关于NFC的方方面面
- $.ajax使用总结(二):伪造IP地址