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

标签 c macos compilation hdf5

我正在尝试学习如何使用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/

相关文章:

node.js - 库未加载 :/usr/lib/libc++. 1.dylib OSX

macos - 在OSX中通过对话打开点文件

opencv - 如何编译我的使用opencv的c程序

C++ Setprecision 返回错误

c - 如何在 C 中使用 strtok() 分割字符串?

c - 在没有指针的情况下返回 C 中的字符串?

c++ - 我应该担心指针转换期间的对齐吗?

c语言,全局符号,局部符号详解

c++ - 为什么模板类函数必须在同一个翻译单元中声明?

macos - OSX 加载 dylib Lua 模块