Generieren von dynamischen Bibliotheken
Beim Erzeugen von dynamischen Bibliotheken muss man sich an folgende Regeln halten:
- 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
- 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
- Beim gcc sollte niemals die Option -fomit-frame-pointer angegeben werden.
Zurueck || Index || Vor