2012-04-12 186 views
0

我正在使用MPI創建並行進程的項目,每個進程使用dlopen()加載已作爲共享對象庫構建的模塊。我正在編寫的一個模塊使用第三方庫(HDF)。當我運行該程序,dlopen的拋出一個錯誤: dlopen的失敗:/home/jwomble/QTProjects/Sur​​rogateModule/libsurrogate.so:未定義的符號:H5T_NATIVE_INT32_g共享對象庫和MPI

未定義的符號在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 [email protected] $< 

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

謝謝!

回答

1

你實際上並沒有鏈接到hdf5。與-c一起使用時,-l標誌無效。

移動-lhdf5重新連接libsurrogate.so應該解決問題。