编译安装boost

来源:互联网 发布:星际1 asl 知乎 编辑:程序博客网 时间:2024/05/21 12:50

 理论上,本文适用于boost的各个版本,尤其是最新版本1.48.0;适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,VS2010,gcc,C++ Builder等。

1.下载boost源文件

http://www.boost.org/users/download/ 

2.安装

cd /home/boost_1_48_0/
首先需要编译bjam: ./bootstrap.sh --prefix=/home/boost-1.48.0/sdk/  设置库安装路径

通过bjam编码boost库: ./bjam  install


3.设置环境变量
        在/etc/profile.d新建可执行文件boost.sh,添加文件内容:

#!/bin/shBOOST_INCLUDE=/home/boost-1.48.0/sdk/include/boost BOOST_LIB==/home/boost-1.48.0/sdk/libexport BOOST_INCLUDE BOOST_LIB 


命令行执行:source /etc/profile.d/boost.sh
        以后在编译程序时,只需要用:-I$BOOST_INCLUDE -L$BOOST_LIB 即可,还要使用-l指定了链接库。

 

然后, /etc/ld.so.conf 文件添加so库的环境变量 /home/boost-1.48.0/sdk/lib(主要关键问题)

修改完成后,通过ldconfig命令进行重启



4.遇到的问题及解决方案
安装过程出现很多和bz及python库相关的错误,解决方案如下

命令方式

sudo apt-get install libbz2-dev    yum install python-dev
或yum install libbz2-dev   yum install python-dev

图像界面方式

   点击Applications---->Add/Remove Software 去安装这个包文件


PS 安装过程中的错误:

libs/iostreams/src/bzip2.cpp:20:56: error: bzlib.h: 没有那个文件或目录libs/iostreams/src/bzip2.cpp:31: error: ‘BZ_OK’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:32: error: ‘BZ_RUN_OK’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:33: error: ‘BZ_FLUSH_OK’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:34: error: ‘BZ_FINISH_OK’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:35: error: ‘BZ_STREAM_END’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:36: error: ‘BZ_SEQUENCE_ERROR’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:37: error: ‘BZ_PARAM_ERROR’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:38: error: ‘BZ_MEM_ERROR’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:39: error: ‘BZ_DATA_ERROR’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:40: error: ‘BZ_DATA_ERROR_MAGIC’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:41: error: ‘BZ_IO_ERROR’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:42: error: ‘BZ_UNEXPECTED_EOF’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:43: error: ‘BZ_OUTBUFF_FULL’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:44: error: ‘BZ_CONFIG_ERROR’ was not declared in this scopelibs/iostreams/src/bzip2.cpp:48: error: ‘BZ_FINISH’ was not declared in this scope//mostly like above....

 

 

./boost/python/detail/wrap_python.hpp:50:23: error: pyconfig.h: No such file or directory
./boost/python/detail/wrap_python.hpp:75:24: error: patchlevel.h: No such file or directory
./boost/python/detail/wrap_python.hpp:78:2: error: #error Python 2.2 or higher is required for this version of Boost.Python.
./boost/python/detail/wrap_python.hpp:142:21: error: Python.h: No such file or directory
./boost/python/instance_holder.hpp:34: error: ‘PyObject’ has not been declared
./boost/python/instance_holder.hpp:41: error: expected ‘;’ before ‘(’ token
./boost/python/instance_holder.hpp:45: error: ‘PyObject’ has not been declared
./boost/python/detail/wrapper_base.hpp:21: error: expected initializer before ‘*’ token
./boost/python/detail/wrapper_base.hpp:23: error: expected initializer before ‘*’ token
./boost/python/detail/wrapper_base.hpp:30: error: expected initializer before ‘*’ token
./boost/python/detail/wrapper_base.hpp:34: error: expected initializer before ‘*’ token
./boost/python/detail/wrapper_base.hpp:43: error: ‘PyObject’ has not been declared
./boost/python/detail/wrapper_base.hpp:44: error: ISO C++ forbids declaration of ‘PyObject’ with no type
./boost/python/detail/wrapper_base.hpp:44: error: ‘PyObject’ is neither function nor member function; cannot be declared friend

windows下编译安装boost.

先生成bjam,要在vs附带的命令行下执行才可以,在cmd下运行bat可能会卡主不动

bjam stage --toolset=msvc-9.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="E:\boost_1_49" link=static runtime-link=static threading=multi debug release

默认为32位版本,编译成64位:

bjam stage --toolset=msvc-9.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="E:\boost_1_49_new" link=static runtime-link=static threading=multiaddress-model=64 debug release

原创粉丝点击