我最近接到电话要这样做,如果它对其他人有用,这些是我遵循的步骤:
- 下载并安装 LSB SDK
- 下载一个版本的 boost 并解压到 /opt/boost/boost_<version> (我用的是 1.43)
- 确保已安装 libbz2-dev。
- 引导与
cd /opt/boost/boost_<version>
./bootstrap.sh --prefix=/opt/boost --without-libraries=python,mpi --without-icu
- 编辑
/opt/boost/boost_<version>/project-config.jam
并添加行
using gcc : : /opt/lsb/bin/lsbc++ : <cflags>-U_GNU_SOURCE <cxxflags>-U_GNU_SOURCE ;
文件顶部附近。请注意,如果您在 bjam 从中读取其配置的其他文件之一中有 using 声明,这将失败,您可以传递--debug-configuration
以了解它正在读取哪些文件。
./bjam cflags=-fPIC cxxflags=-fPIC linkflags=-fPIC install
我没有尝试让 python 或 MPI 库工作,也没有尝试让 ICU 使用 boost.regex 库。后者可能是使用 LSB 工具集构建 ICU 库的静态版本的情况。
这-fPIC
对于 32 位 Linux 不是绝对必要的,但如果要将静态库链接到 64 位 Linux 的共享库,则需要。
最终结果应该是 in 中的二进制文件/opt/boost/lib
和 in 中的标头/opt/boost/include
,显然您可以修改前缀以适合您自己的偏好。在将所有代码移植到 LSB 之前,我还有大量工作要做,因此我无法报告认证过程的进展情况。