Ich arbeite an einem Projekt, das MPI verwendet, um parallele Prozesse zu erstellen, jeder Prozess verwendet dlopen(), um ein Modul zu laden, das als eine gemeinsame Objektbibliothek erstellt wurde. Eines der Module, die ich schreibe, verwendet eine 3rd Party Library (HDF). Wenn ich das Programm laufen, wirft dlopen einen Fehler: dlopen fehlgeschlagen: /home/jwomble/QTProjects/SurrogateModule/libsurrogate.so: undefined Symbol: H5T_NATIVE_INT32_gGemeinsame Objektbibliothek und MPI
Das undefinierte Symbol in der HDF-Bibliothek ist. Wie lade ich die Symbole aus der HDF-Bibliothek?
Derzeit sieht mein Make-Datei wie folgt:
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 $<
Dank!