2012-04-12 16 views
0

MPIを使用して並列プロセスを作成するプロジェクトでは、各プロセスがdlopen()を使用して共有オブジェクトライブラリとしてビルドされたモジュールを読み込みます。私が書いているモジュールの1つはサードパーティのライブラリ(HDF)を使います。私はプログラムを実行すると、dlopenのは、エラーがスローされます: のdlopenが失敗しました:/home/jwomble/QTProjects/Sur​​rogateModule/libsurrogate.so:未定義のシンボル:H5T_NATIVE_INT32_g共有オブジェクトライブラリとMPI

を未定義のシンボルは、HDFライブラリです。 HDFライブラリからシンボルをロードするにはどうすればいいですか?

現在、私のメイクファイルは次のようになります。

CC  = mpicc 

INCDIR = -I /home/jwomble/QTProjects/STARExecutive/src/star_comm \ 
     -I /home/jwomble/QTProjects/STARExecutive/src/executive \ 
     -I /home/jwomble/QTProjects/Star \ 
    -I ./phdf/include 

CFLAGS = -Wall -rdynamic -g -fPIC $(INCDIR) 

all: libsurrogate.so 

libsurrogate.so: SurrogateModule.o 
    $(CC) -shared --export-dynamic -o [email protected] $< 

SurrogateModule.o: SurrogateModule.c 
    $(CC) $(CFLAGS) -lhdf5 -c $< 

ありがとう!

答えて

1

あなたは実際にhdf5とリンクしていません。 -cと一緒に使用すると、-lフラグは無意味です。

libsurrogate.soのリンクに-lhdf5 uptを移動すると問題が解決するはずです。

関連する問題