[原创]CentOS 6.5/7.2安装boost 1.49

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: [原创]CentOS 6.5/7.2安装boost 1.49

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

执行结果:

QQ截图20160801142239

中间可能遇到的问题:

编译程序可能会出现如下错误:

/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
原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: [原创]CentOS 6.5/7.2安装boost 1.49

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: