1:下载boost源码包,亲测如下版本都是顺利编译安装成功:
CentOS 6.x + boost 1.49 + gcc (GCC) 4.8.2
CentOS 7.x + boost_1_51_0 + gcc (GCC) 4.8.5
版本号很重要,切记切记,避免遇到坑!!!
下载地址:https://sourceforge.net/projects/boost/
2:解压:
tar zxf boost_1_49_0.tar.gz
3:进入boost文件夹,进行配置
建议在配置前:
在开始编译boost之前,建议先将依赖包都装一遍:
yum -y install gcc gcc-c++ python python-devel libicu libicu-devel zlib zlib-devel bzip2 bzip2-devel
cd boost_1_49_0 ./bootstrap.sh --prefix=/usr/local/
执行完脚本后,其中,部分依赖包的提示信息如下,建议配置之前把依赖包全部装上最好:
提示信息【Unicode/ICU support for Boost.Regex?... not found.】,依赖包【 libicu libicu-devel 】
提示信息【error: no command provided, default command 'g++' not found】,依赖包【 gcc-c++ 】
提示信息【- zlib : no】,依赖包【 zlib zlib-devel 】
提示信息【- bzip2 : no】,依赖包【 bzip2 bzip2-devel 】
4:进行编译
./b2
5:进行安装:
./b2 install
安装完成显示:
common.copy /usr/local/lib/libboost_prg_exec_monitor.a
common.copy /usr/local/lib/libboost_unit_test_framework.a
common.copy /usr/local/lib/libboost_thread.a
common.copy /usr/local/lib/libboost_timer.a
common.copy /usr/local/lib/libboost_wave.a
...updated 9831 targets...
6:进行拷贝:
将/usr/local/include下的boost文件夹及里面的内容全部拷贝到/usr/include/下;
将/usr/local/lib下的所有文件拷贝到/usr/lib下
cd /usr/local/include/ \cp -rf boost/ /usr/include/ cd /usr/local/lib cp lib* /usr/lib
7:进行测试:
#include <boost/thread.hpp>
#include <iostream>
void task1() {
// do stuff
std::cout << "This is task1!" << std::endl;
}
void task2() {
// do stuff
std::cout << "This is task2!" << std::endl;
}
int main (int argc, char ** argv) {
using namespace boost;
thread thread_1 = thread(task1);
thread thread_2 = thread(task2);
// do other stuff
thread_2.join();
thread_1.join();
return 0;
}
编译:
g++ test.cpp -o test -lboost_thread
如果编译报错:
/usr/local/lib/libboost_system.so.1.51.0: could not read symbols: 无效的操作
那么增加编译选项-lboost_system即可:
g++ test.cpp -o test -lboost_thread -lboost_system
执行结果:
中间可能遇到的问题:
编译程序可能会出现如下错误:
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
解决办法:
先阅读参考文章,再做操作:
解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found问题
cd /usr/lib64 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX cp /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64/ rm libstdc++.so.6 ln libstdc++.so.6.0.18 libstdc++.so.6 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
当然还有可能遇到找不到libboost_xxx.so相关的问题
比如:error while loading shared libraries: libboost_thread.so.1.49.0: cannot open shared object file: No such file or directory
解决这个问题的主要是配置库路径【此处可以参考:
error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
】:
有两种方式,一种是永久生效【建议使用这种方式】:
执行命令:
ldconfig
另外一种是临时使用,直接追加LD_LIBRARY_PATH的变量值,在命令行中输入:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/lib64
当然这条命令仅是针对当前shell终端起作用,如果希望下次重启依然生效,那么编辑当前用户目录下.bashrc文件,追加该文件即可:
vim ~/.bashrc
文件内容如下:
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/lib64
文章的脚注信息由WordPress的wp-posturl插件自动生成

微信扫一扫,打赏作者吧~![[转载学习]Linux下boost库的安装](http://www.jyguagua.com/wp-content/themes/begin/img/random/15.jpg)
![[整理][转载]win下网卡抓包发包库Npcap使用](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2023/08/demo_1-1024x711.jpg&w=280&h=210&zc=1)
![[转载]基础数据char,int,double,string是线程安全的吗?](http://www.jyguagua.com/wp-content/themes/begin/img/random/5.jpg)
![[已解决]nc命令报错 close: Bad file descriptor](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2022/03/Snipaste_2022-03-18_20-16-48.png&w=280&h=210&zc=1)