Hallo,
ich hoffe ich bin im richtigen Forum gelandet und kann mein Problem auch korrekt beschreiben.
Die Suchfunktion hat nichts ergeben und ich hoffe mal, dass es wirklich noch kein Thema hierzu gibt. Sonst: Asche auf mein Haupt
Ich habe ein Programm, für das ich gerne kleine Plugins möglich machen möchte.
Dies ist soweit auch kein Problem.
Das Shared Object File soll auch funktionen des Hauptprogramms nutzen können und auch das klappt soweit.
Aber nur wenn ich das Hauptprogramm so kompiliere/linke:
g++ -c *.cpp
g++ -lpthread -ldl -rdynamic -o myprogram *.o
Das Shared Object Dings kompiliere ich dann so:
g++ -c *.cpp
g++ -shared -o test.so *.o
Wenn ich das so mache funktioniert auch alles.
Nun möchte ich aber das Hauptprogramm STATISCH linken.
Ok, also mache ich:
g++ -c *.cpp
g++ -rdynamic -static -o myprogram *.o /usr/lib/libpthread.a /usr/lib/libdl.a
Wenn ich nun aber versuche im Programm das Shared Object File zu laden meldet er mir "unresolved symbol" Fehler.
Allerdings nur, wenn ich versuche eine Funktoin des Hauptprogramms zu nutzen.
Das heisst für mich wenn ich statisch will funktioniert das mit -rdynamic irgendwie nicht.
Gibt es da eine Möglichkeit das dennoch hinzubekommen?
Habe auch schon versucht das .so File auch static zu machen aber bringt nichts.
Jemand hat mir dann gesagt ich soll mal g++ -fPIC -DPIC -c datei.cpp probieren,
also positionsunabhängigen Code oder wie das heisst hat auch nicht funktioniert.
Vielen Dank schonmal.
Marius
ich hoffe ich bin im richtigen Forum gelandet und kann mein Problem auch korrekt beschreiben.
Die Suchfunktion hat nichts ergeben und ich hoffe mal, dass es wirklich noch kein Thema hierzu gibt. Sonst: Asche auf mein Haupt
Ich habe ein Programm, für das ich gerne kleine Plugins möglich machen möchte.
Dies ist soweit auch kein Problem.
Das Shared Object File soll auch funktionen des Hauptprogramms nutzen können und auch das klappt soweit.
Aber nur wenn ich das Hauptprogramm so kompiliere/linke:
g++ -c *.cpp
g++ -lpthread -ldl -rdynamic -o myprogram *.o
Das Shared Object Dings kompiliere ich dann so:
g++ -c *.cpp
g++ -shared -o test.so *.o
Wenn ich das so mache funktioniert auch alles.
Nun möchte ich aber das Hauptprogramm STATISCH linken.
Ok, also mache ich:
g++ -c *.cpp
g++ -rdynamic -static -o myprogram *.o /usr/lib/libpthread.a /usr/lib/libdl.a
Wenn ich nun aber versuche im Programm das Shared Object File zu laden meldet er mir "unresolved symbol" Fehler.
Allerdings nur, wenn ich versuche eine Funktoin des Hauptprogramms zu nutzen.
Das heisst für mich wenn ich statisch will funktioniert das mit -rdynamic irgendwie nicht.
Gibt es da eine Möglichkeit das dennoch hinzubekommen?
Habe auch schon versucht das .so File auch static zu machen aber bringt nichts.
Jemand hat mir dann gesagt ich soll mal g++ -fPIC -DPIC -c datei.cpp probieren,
also positionsunabhängigen Code oder wie das heisst hat auch nicht funktioniert.
Vielen Dank schonmal.
Marius