如何在Mac OS X上的C程序中包含hdf5头文件?

时间:2012-05-26 12:34:37

标签: c macos compilation hdf5

我正在尝试学习如何用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而不会有麻烦。

1 个答案:

答案 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`