3

C でプログラミングする方法を学ぼうとしていて、.hdf ファイルから C プログラムにデータをインポートできるようにしたいと考えています。

Mac OS X lion を搭載した 2009 年半ばの MacBook Pro を使用しています。

hdd に関連するすべてのヘッダー ファイルをシステムのどこに置くべきかわからなかったため、問題が発生していると思います (覚えておいてください、私は少し初心者です)。そのため、hdd Web サイトから 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

正確なエラーは、コンパイルしようとしているコードによって異なります。これは、サンプル プログラムをコンパイルしようとしたときに生成されました。

Mac OS X の C で hdf5 を動作させた経験のある人はいますか? 私はそれがすべて非常に混乱していることに気づきました。

ちなみに私は普段pythonを使っていて、h5pyも問題なくよく使っています。

4

1 に答える 1

1

非標準の場所に-l<library-name>andを使用してライブラリを使用しているときは、リンカーに通知する必要があります。-L<library-dir>

に hdf5 をインストールした場合は/usr/local/hdf5、次のようなものが必要です。

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

高レベル API を使用している場合は、 も追加し-lhdf5_hlます。


インストール済みで、hdf5 のインストールを認識している場合pkg-configは、それを実行させることができます。

gcc -o h5ex_d_rdwr h5ex_d_rdwr.c `pkg-config hdf5 --cflags --libs`
于 2012-05-28T16:11:56.807 に答える