在Linux上构建HDF5过滤器插件使用MATLAB HDF5共享库或GNU出口地图
17日视图(30天)
显示旧的评论
我如何在Linux上构建HDF5过滤器插件使用MATLAB HDF5共享库或GNU出口地图吗?
接受的答案
MathWorks支金宝app持团队
2021年12月9日
编辑:MathWorks支金宝app持团队
2022年3月14日
从R2021b开始,如果你正在与HDF5动态加载的过滤器在Linux上,如果你的过滤器插件包含核心HDF5库回调(需要头hdf5.h),那么你需要重建你的过滤器插件symbol-versioned HDF5 1.10.7 MATLAB R2021b或HDF5 1.10.8 MATLAB R2022a和进一步。
重建你的过滤器插件标准Linux配置/制造/ make install构建命令,使用以下选项之一。如果您正在使用CMake,然后进行类似的修改头文件和库路径。
选项1:
构建插件使用HDF5版本1.10.7 (MATLAB R2021b)或1.10.8 (MATLAB R2022a和进一步)共享库libhdf5.so.x.x。x / matlab / bin / glnxa64。
获得HDF5 1.10。从HDF组x头文件https://www.hdfgroup.org/金宝搏官方网站solutions/hdf5/。使用这个PATH_TO_HDF5_INCLUDEDIR。
b。利用matlab / bin / glnxa64 PATH_TO_HDF5_LIBDIR。
c。当调用配置,指定上述INCLUDEDIR和LIBDIR路径。额外的过滤算法路径保持不变:
. / configure——with-hdf5 = PATH_TO_HDF5_INCLUDEDIR PATH_TO_HDF5_LIBDIR
d。像往常一样运行make和make install。
选项2:
构建HDF5 1.10.7 (MATLAB R2021b)或1.10.8 (MATLAB R2022a和进一步)从源使用GNU导出添加symbol-versioning映射到生成的二进制。
下载HDF5 1.10。x导出文本文件hdf5_1_10_7_linux_exported_symbol地图。地图或hdf5_1_10_8_linux_exported_symbol。附加映射到这个答案。
b。在构建HDF5 1.10。x从源,设置LDFLAGS地图:
LDFLAGS+ = - wl——version-script = hdf5_1_10_7_linux_exported_symbol.map
或
LDFLAGS+ = - wl——version-script = hdf5_1_10_8_linux_exported_symbol.map
c。在构建过滤器插件时,指定LIBRDIR路径作为合成1.10。x共享库路径步骤b。
与选择,确保MATLAB HDF5版本字符串是HDF5嵌入任何回调,你可以在你的插件检查动态符号表共享库使用readelf或objdump。例如,如果插件调用H5Pcreate,那么条目应该显示MWHDF5象征符号装饰。看下面的例子:
readelfws < plugin.so >
H5Pcreate@@MWHDF5 0000000000000000 0 FUNC全局缺省和H5Pcreate@MWHDF5
objdump- c - t < plugin.so >
0000000000000000 DF*和* 0000000000000000 MWHDF5 H5Pcreate