2012-04-12 2 views
0

Я работаю над проектом, который использует MPI для создания параллельных процессов, каждый процесс использует dlopen() для загрузки модуля, который был создан как библиотека общих объектов. Один из модулей, которые я пишу, использует стороннюю библиотеку (HDF). Когда я запускаю программу, dlopen выдает ошибку: dlopen не удался: /home/jwomble/QTProjects/SurrogateModule/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. Флаг -l бесполезен при использовании вместе с -c.

Перемещение -lhdf5 upt на ссылку libsurrogate.so должно устранить проблему.

Смежные вопросы