Generieren von dynamischen Bibliotheken


Beim Erzeugen von dynamischen Bibliotheken muss man sich an folgende Regeln halten:
  1. Beim Kompilieren des Quellcodes mit gcc muss die Option 0fPIC (Position-Independent-Code) angegeben werden, um positionsunabhaengigen Code zu erzeugen, der an jede beliebige Adresse gelinkt und geladen werden kann
  2. Zum Linken sollte cc bzw. gcc verwendet werden. Ein direktes Linke mit dem Linker ld ist nicht empfehlenswert, da der jeweilige C-Compiler automatisch den Linker ld mit den erforderlichen Optionen aufruft. Ein typische Aufruf zum linken einer dynamischen Bibliothek mit gcc waere z. B.: gcc -shared -Wl,soname,soname -o bibname object bibliothek
    -Wl leitet dabei die Optionen an ld weiter, wobei die Kommata durch Leerzeichen ersetzt werden. Fuer soname ist der Bibliotheksname (mit Hauptversionsnummer) und fuer bibname der vollstaendige Bibliotheksname mit allen zugehoerigen Versionsnummern anzugeben. Fuer object ist eine Liste der Objectdateien anzugeben, die in diese dynamische Bibliothek aufzunehmen sind und fuer bibliothek ist evtl. eine Liste der Bibliotheken anzugeben, aus denen Funktionen in den Objectdateien aufgerufen werden. So empfiehlt es sich fast immer, die C-Bibliothek hier anzugeben (-lc). Um z. B. die dynamische Bibliothek libfnord.so.1.2.3 mit dem soname libfnord.so.1 aus den Objectdateien fnord.o und foobar.o zu erzeugen, koennte man folgenden Aufruf verwenden:
    gcc -shared -Wl,-soname,libfnord.so.1 -o libfnord.so.1.2.3 fnord.o foobar.o -lc
  3. Beim gcc sollte niemals die Option -fomit-frame-pointer angegeben werden.


Zurueck || Index || Vor