【问题标题】:Build Boost Python with HDF5使用 HDF5 构建 Boost Python
【发布时间】:2025-12-01 21:40:01
【问题描述】:

我有一个处理 HDF5 文件的 C++ 程序,所以在编译它时,实际上我需要使用编译器 h5c++ 而不是 g++。现在我想为这个 C++ 程序创建一个 Boost.Python 绑定。所以我关注the Boost.Build instructions 并创建了 Jamfiles。现在我通过

调用构建系统
b2 toolset=h5c++

错误是

h5c++.jam: 没有这样的文件或目录 /home/kevin/apps/sources/boost_1_57_0/tools/build/src/build/toolset.jam:43:在toolset.using 错误:模块“工具集”中的规则“h5c++.init”未知。

我知道除非我指定某些内容或重建 Boost 以支持 h5c++,否则它将无法工作,但我只是不知道如何去做。

【问题讨论】:

    标签: c++ boost hdf5 boost-python


    【解决方案1】:

    尝试了一整天后,我想出了一个解决方案。

    • 首先,h5c++ 提供了一个标志选项“-show”,它使您能够找出 h5c++ 实际链接到的库。
    • 其次,根据您在第一步中找到的内容。定义变量 H5FLAGSH5LIB。在我的情况下是

      常量 H5FLAGS : "-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_BSD_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security" ;

      常量 H5LIB : "-L/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libhdf5_hl_cpp.so /usr/lib/x86_64-linux-gnu/libhdf5_cpp.so /usr/ lib/x86_64-linux-gnu/libhdf5_hl.so /usr/lib/x86_64-linux-gnu/libhdf5.so -Wl,-Bsymbolic-functions -Wl,-z,relro -lpthread -lz -ldl -lm -Wl, -rpath -Wl,/usr/lib/x86_64-linux-gnu" ;

    • 第三,在建筑特征中添加如下规则

      <cxxflags>"$(H5FLAGS)" <linkflags>"$(H5LIB)"

    现在是时候触发建筑系统了

    b2
    

    【讨论】: