我正在尝试学习如何使用C编程,并且希望能够从.hdf文件将数据导入到我的C程序中。
我正在将Mac OS X Lion使用2009年中的MacBook Pro。
我想我遇到了问题,因为我不知道将与HDD相关联的所有头文件放在系统上的哪个位置(请记住,我有点笨拙)。因此,我只是从hdd网站下载了hdf5-1.8.9-freebsd-shared文件夹,然后将所有.h文件从/include
子目录中手动拖到了/usr/include
目录中。
当我尝试使用普通的gcc终端命令编译.c程序时,出现了一条错误消息(对格式感到抱歉,但是我认为确切的错误关系不大):
Undefined symbols for architecture x86_64:
"_H5check_version", referenced from:
_main in cc9FVO6S.o
"_H5Fcreate", referenced from:
_main in cc9FVO6S.o
"_H5Screate_simple", referenced from:
_main in cc9FVO6S.o
"_H5open", referenced from:
_main in cc9FVO6S.o
"_H5T_STD_I32LE_g", referenced from:
_main in cc9FVO6S.o
"_H5Dcreate2", referenced from:
_main in cc9FVO6S.o
"_H5T_NATIVE_INT_g", referenced from:
_main in cc9FVO6S.o
"_H5Dwrite", referenced from:
_main in cc9FVO6S.o
"_H5Dclose", referenced from:
_main in cc9FVO6S.o
"_H5Sclose", referenced from:
_main in cc9FVO6S.o
"_H5Fclose", referenced from:
_main in cc9FVO6S.o
"_H5Fopen", referenced from:
_main in cc9FVO6S.o
"_H5Dopen2", referenced from:
_main in cc9FVO6S.o
"_H5Dread", referenced from:
_main in cc9FVO6S.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
尽管确切的错误会因我尝试编译的代码而异。这是我尝试编译sample program时生成的。
是否有人在Mac OS X中使hdf5在C中工作有任何经验?我发现这一切都很混乱。
顺便说一句,我通常使用python,并且经常使用h5py而不会有麻烦。
最佳答案
当使用库使用非标准位置的-l<library-name>
和-L<library-dir>
时,必须告诉链接程序。
如果您在/usr/local/hdf5
中安装了hdf5,则需要类似以下内容:
gcc -o h5ex_d_rdwr h5ex_d_rdwr.c -I/usr/local/hdf5/include -L/usr/local/hdf5/lib -lhdf5
如果您使用的是高级API,还请添加
-lhdf5_hl
。如果您已安装
pkg-config
并且知道您已经安装了hdf5,则可以让它为您完成:gcc -o h5ex_d_rdwr h5ex_d_rdwr.c `pkg-config hdf5 --cflags --libs`
关于c - 如何在Mac OS X的C程序中包含hdf5头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10766246/