我正在尝试学习如何用C编程,我希望能够从.hdf文件中将数据导入我的C程序。
我正在使用2009年中期MacBook Pro和Mac OS X Lion。
我认为我遇到了问题,因为我不知道我的系统在哪里放置与hdd相关的所有头文件(记住,我有点像菜鸟)。所以我刚刚从hdd网站下载了hdf5-1.8.9-freebsd-shared文件夹,并将所有.h文件从/include
子目录手动拖到我的计算机上的/usr/include
目录中。
当我尝试使用普通的gcc终端命令编译我的.c程序时,我得到的错误就是这样(对于格式化很抱歉,但我认为确切的错误无关紧要):< / p>
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时生成的。
有没有人有使用hdf5在Mac OS X中使用C的经验?我发现这一切都非常混乱。
顺便说一下,我通常使用python,经常使用h5py而不会有麻烦。
答案 0 :(得分:1)
当您使用-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`