我最近安装了一个Ubuntu机器上的HDF5库,我现在有链接到导出的函数的麻烦。 我写了一个简单的测试脚本readHDF.cpp来解释这个问题:
#include <hdf5.h>
int main(int argc, char * argv[])
{
hid_t h5_file_id = H5Fopen(argv[1], H5F_ACC_RDWR, H5P_DEFAULT);
return 0;
}
编译命令是
g++ -Wl,-rpath,$HOME/hdf5/lib -I$HOME/hdf5/include \
-L$HOME/hdf5/lib -l:$HOME/hdf5/lib/libhdf5.so readHDF.cpp
它返回下列错误
/tmp/cc6DXdxV.o: In function `main':
readHDF.cpp:(.text+0x1f): undefined reference to `H5check_version'
readHDF.cpp:(.text+0x3c): undefined reference to `H5Fopen'
collect2: ld returned 1 exit status
我很困惑,因为nm命令似乎是说,该功能已远销:
nm -C $HOME/hdf5/lib/libhdf5.so | grep H5check_version
返回
0000000000034349 T H5check_version
和类似的结果H5Fopen
。 什么任何想法可能是想错了? 不知道是否有帮助,但如果我注释掉H5Fopen
脚本的一部分,那么它编译罚款:
#include <hdf5.h>
int main(int argc, char * argv[])
{
hid_t h5_file_id;// = H5Fopen(argv[1], H5F_ACC_RDWR, H5P_DEFAULT);
return 0;
}
还有一些被各种Python模块,如h5py和表使用安装在服务器上HDF5的多个版本,但我无法得到其中的任何工作,所以我安装了这个版本在我的本地目录,并改变了rpath的选项为克++接头。