2016-06-09 5 views
1

У меня есть программа на C++, которая имеет дело с файлами HDF5, поэтому при компиляции на самом деле мне нужно использовать компилятор h5C++ вместо g ++. Теперь я хочу создать привязку Boost.Python для этой программы на C++. Поэтому я последовал за the Boost.Build instructions и создал Jamfiles. Теперь я призываю построить систему с помощьюBuild Boost Python с HDF5

b2 toolset=h5c++ 

и ошибка

h5c++.jam: No such file or directory /home/kevin/apps/sources/boost_1_57_0/tools/build/src/build/toolset.jam:43: in toolset.using ERROR: rule "h5c++.init" unknown in module "toolset".

Я знаю, что это не будет работать, если я не указано что-то, или восстановить подталкивание для поддержки h5C++, но я просто не имею подсказка о том, как это сделать.

ответ

1

После того, как вы пробовали целый день, я понял одно решение.

  • Во-первых, h5C++ предоставляет опцию «-show» с флагом, которая позволяет вам узнать, к каким библиотекам, на которые на самом деле ссылается h5C++.
  • Во-вторых, основываясь на том, что вы находите на первом шаге. Определить переменные H5FLAGS и H5LIB. В моем случае это

    постоянных H5FLAGS: "-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_BSD_SOURCE -D_FORTIFY_SOURCE = 2 -fstack-протектор --param = SSP-буфер размер = 4 -Wformat -Werror = формат-безопасность";

    константа H5LIB: «-L/USR/Библиотека/x86_64-Linux-гну /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 
Смежные вопросы