2012-05-26 63 views
3

我想學習如何在C程序,我想能夠從.hdf文件導入數據到我的C程序。如何在Mac OS X上的C程序中包含hdf5頭文件?

我正在使用Mac OS X獅子2009年中期的MacBook Pro。

我想我有問題,因爲我不知道我的系統上的所有頭文件與hdd相關聯(請記住,我有點小菜鳥)。所以我剛剛從hdd網站上下載了hdf5-1.8.9-freebsd-shared文件夾,並手動將/include子目錄中的所有.h文件拖到我的電腦上的/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時產生的。

有沒有人有任何經驗讓hdf5在Mac OS X中的C工作?我發現這一切都很混亂。

順便說一句,我通常使用python,並經常使用h5py沒有麻煩。

+0

這似乎是一個比較隨意的猜測,該庫的FreeBSD版本適用於OSX。找到一個OSX版本,或自己編譯一個。除了包含頭文件之外,還需要鏈接到hdf5庫,這裏的錯誤消息說明你沒有 – nos

回答

1

如果您使用的庫爲-l<library-name>-L<library-dir>用於非標準位置,則必須告知鏈接器。如果您使用的是高級別API,還加-lhdf5_hl

gcc -o h5ex_d_rdwr h5ex_d_rdwr.c -I/usr/local/hdf5/include -L/usr/local/hdf5/lib -lhdf5 

如果您在安裝/usr/local/hdf5 HDF5,你需要這樣的東西。


如果您安裝了pkg-config,它知道你的HDF5安裝的,你可以讓它爲你做:

gcc -o h5ex_d_rdwr h5ex_d_rdwr.c `pkg-config hdf5 --cflags --libs`