Linux上安装Boost C++ Libraries

转自:http://www.cnblogs.com/cocowool/archive/2011/08/18/2144142.html

假设要安装的是boost 1.47

$cd path/to/boost_1_47_0

$./bootstrap.sh --prefix=/path/to/installation/prefix

$./b2 install

如果不带--prefix参数的话(推荐),默认路径是 /usr/local/include 和 /usr/local/lib

以上操作需要一段时间,可能比较长。完成后,会在 /path/to/installation/prefix 下看到 include 和 lib 两个子目录,分别是 boost 安装后的头文件和库文件(静态库和动态库)


注意,./bootstrap.sh中使用了--prefix参数,可能导致链接了boost动态库的可执行程序在运行时,找不到boost动态库文件。例如,例如一个可执行文件t,运行时需要依赖libboost_system.so.1.52.0,而libboost_system.so.1.52.0位于/maomao/boost-install/lib 路径下。执行./t 时提示找不到libboost_system.so.1.52.0:

./t: error while loading shared libraries: libboost_system.so.1.52.0: cannot open shared object file: No such file or directory

执行ldd -d ./t 时,输出如下:

        linux-vdso.so.1 =>  (0x00007fff7dfff000)
        libboost_system.so.1.52.0 => not found
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b67800000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003b5b800000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b66c00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003b5ac00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b5b400000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003b5a800000)

即,没有找到libboost_system.so.1.52.0动态库文件。一个可行的解决办法是:在/lib64 下创建一个软链接

ln -s /maomao/boost-install/lib/libboost_system.so.1.52.0 /lib64/libboost_system.so.1.52.0

再次执行 ldd -d ./t,输出为:

        linux-vdso.so.1 =>  (0x00007ffff4bff000)
        libboost_system.so.1.52.0 => /lib64/libboost_system.so.1.52.0 (0x00007fe4ad0d7000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b67800000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003b5b800000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b66c00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003b5ac00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b5b400000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003b5bc00000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003b5a800000)

即找到了那个动态库文件。


这样做虽然可行,但如果多个boost动态库文件都找不到,就要建多个软链接。更好的办法是:

打开/etc/ld.so.conf加入一行:/maomao/boost-install/lib,即在/etc/ld.so.conf 中加入boost的所有库文件的路径。

然后执行/sbin/ldconfig /etc/ld.so.conf 就可以了。


另外,build过程中可能出现某些boost库build失败,有类似下面的error输出:

boost/python/object_slices.hpp PyObject was not declared in this scope
/libs/iostreams/src/bzip2.cpp:83: error: expected type-specifier before 'bz_stream'

实际上是没装相应的开发包,解决办法就是先安装这些开发包:

yum install python-devel.x86_64
yum install bzip2-devel.x86_64

然后再执行 ./b2 install

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值