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插件自动生成