0

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

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

現在、私のmakeファイルは次のようになっています。

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 $@ $<

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

ありがとう!

4

1 に答える 1

1

実際にはhdf5に対してリンクしていません。-lと一緒に使用すると、フラグは役に立ちません-c

libsurrogate.so-lhdf5のリンクにuptを移動すると、問題が修正されるはずです。

于 2012-04-12T17:11:15.307 に答える