在Ubuntu 10.04下安装最新的1.44版本Boost库

17
我有一台装有ubuntu 10.04的电脑,想要安装最新的boost库1.44_0。我已经下载了tar.gz文件并将其解压到了/usr/local/boost_1_44_0目录下。我之前已经从synaptic中安装了boost 1.40版本。因此,我想要编译和链接1.44版本,因为我想要使用一些新的库,这些库不在旧版本中,例如property tree。但是,我遇到了一些问题。我运行了sudo ./bootstrap.sh(这个运行正常),然后运行了./bjam install,但是出现了bzip2错误。
gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.4.3/release/threading-multi/file_descriptor.o
gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.4.3/release/threading-multi/mapped_file.o
gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.4.3/release/threading-multi/zlib.o
gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.4.3/release/threading-multi/gzip.o
gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.4.3/release/threading-multi/bzip2.o
libs/iostreams/src/bzip2.cpp:20:56: error: bzlib.h: No such file or directory
libs/iostreams/src/bzip2.cpp:31: error: ‘BZ_OK’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:32: error: ‘BZ_RUN_OK’ was not declared in this scope
...

虽然我没有使用bzip2,所以我不担心。

但是在编译过程中不久之后,出现了满屏的错误。错误太多,无法在此列出,但它们经常包含python。

... on::list]’: ./boost/python/str.hpp:285: 实例化自‘boost::python::str boost::python::str::join(const T&) const [with T = boost::python::list]’ libs/python/src/object/function_doc_signature.cpp:321: 从这里实例化 ./boost/python/object_core.hpp:334: error: ‘object_base_initializer’ was not declared in this scope

    "g++"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC  -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE -DNDEBUG  -I"." -I"/usr/include/python2.6" -c -o "bin.v2/libs/python/build/gcc-4.4.3/release/threading-multi/object/function_doc_signature.o" "libs/python/src/object/function_doc_signature.cpp"

...failed gcc.compile.c++ bin.v2/libs/python/build/gcc-4.4.3/release/threading-multi/object/function_doc_signature.o...
...skipped <pstage/lib>libboost_python.so.1.44.0 for lack of <pbin.v2/libs/python/build/gcc-4.4.3/release/threading-multi>numeric.o...
...skipped <pstage/lib>libboost_python.so for lack of <pstage/lib>libboost_python.so.1.44.0...
gcc.compile.c++ bin.v2/libs/random/build/gcc-4.4.3/release/threading-multi/random_device.o

首先,为什么会出现这么多错误?还有其他的错误类型,但太多了无法一一列举。

但我主要遇到的问题是我想要连接这些库文件,但它们没有放在我期望的位置。我原以为它们会在boost_1_44_0/libs目录下,但是没有找到。不过我还是找到了一些散落的.a文件。

我是不是整个构建过程都错了?


好的,我清空了整个东西并重新开始。我添加了引导参数,告诉它将包含文件放置在 /usr/local/boost/include 和 /usr/local/boost/lib 中,这起作用了。我还在 bjam 命令行中添加了 --layout=system 选项。文件似乎都在那里。虽然还有构建错误,但大部分东西似乎都在里面了。明天会尝试链接... - hookenz
2个回答

38
你缺少的是 Boost Python 库依赖的 bz2 库。首先使用以下命令安装此库:sudo apt-get install libbz2-dev

1
谢谢,这也帮助我移除了旧的boost库。 - hookenz
1
在我编译Boost 1.60的经验中,我不得不安装python-devlibbz2-dev两个软件包才能使其成功构建。 - MatrixManAtYrService

3

Boost 1.41有类似的东西吗? - user1918858

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接