Hi,
so ganz hab ich das alles nicht verstanden, daher leider nur eine vage Beschreibung. Bei Unklarheiten bitte nachfragen.
Ich habe einen Batzen C-Quellen, die kompiliere und linke (mit
# gcc -shared -fPIC -o libfoo.so \*.o
) ich zu einem shared object. In diesen Quellen gibt es eine Funktion foobar().
Weiterhin habe ich ein anderes shared object libbar.so, das ebenfalls eine gleichartige Funktion foobar() enthaelt. Beide Bibliotheken werden jetzt von einem Programm geladen, welches eine Funktion Init() aus libfoo.so aufruft. Das Problem ist jetzt, dass Init() foobar() ruft, und zwar das falsche aus libbar.so.
Wie kann ich das verhindern? Kann ich beim linken irgendwie sagen, dass er Referenzen auf Funktionen nur innerhalb des objects aufloesen soll? Das Umbenennen der Funktion in einer der beiden objects ist leider keine Option, da die Quellen von libfoo.so ueberwiegend automatisch von dem Programm einschliesslich libbar.so generiert werden (letzten Endes ist das foobar() aus libfoo.so das generierte Gegenstueck von foobar() aus libbar.so).
Hoffe, ich konnte mich verstaendlich ausdruecken. Danke im Vorraus fuer jede Hilfe,
Gruss vom Frank.