共享对象库和MPI

时间:2012-04-12 17:06:45

标签: linux shared-libraries mpi dlopen

我正在开发一个使用MPI创建并行进程的项目,每个进程使用dlopen()来加载一个已构建为共享对象库的模块。我正在编写的其中一个模块使用第三方库(HDF)。当我运行程序时,dlopen会抛出一个错误: dlopen失败:/home/jwomble/QTProjects/Sur​​rogateModule/libsurrogate.so:unfined defined symbol: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 $<

谢谢!

1 个答案:

答案 0 :(得分:1)

你实际上并没有链接到hdf5。与-l一起使用时,-c标记无效。

-lhdf5向上移动到libsurrogate.so的链接应该可以解决问题。