使用HDF5构建Boost Python

时间:2016-06-09 14:48:54

标签: c++ boost hdf5 boost-python

我有一个处理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   错误:模块“toolset”中的规则“h5c ++。init”未知。

我知道除非我指定一些东西,或者重建Boost以支持h5c ++,否则它将无法工作,但我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:1)

经过一整天的努力,我想出了一个解决方案。

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

    常量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