PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Linux, C) dynamische Bibliothek erstellen



SeeksTheMoon
21-03-2003, 19:28
Wie kann ich unter Linux eine dynamische Bibliothek (*.so) für C-Programme erstellen?
Bei welchem Programm muss da ich welche Optionen mitgeben?

Lin728
21-03-2003, 20:56
gcc file1.c file2.c -fpic -shared -o lib.so (fpic ist wichtig!).

Sollte so klappen, beim gcj klappt es jedenfalls so..

Mfg

anda_skoa
22-03-2003, 10:06
-fpic beim Kompikieren aller Object Files, -shared beim Linken in die Lib.

Eventuell braucht man noch -fPIC

Ciao,
_

HackThor
22-03-2003, 23:18
Hi!

Der "Herold" sagt dazu:


gcc -shared -Wl,-soname,<libname.so.x> -o <libname.so.x.y.z> <Objektdateien> <Bibliotheken>

Als Beispiel steht da:

gcc -shared -Wl,-soname,libtoll.so.1 -o libtoll.so.1.2.5 toll.o symtab.o -lc
Wobei:
- "libtoll.so.1" der (richtige) Bibliotheken-Name mit Hauptversionsnummer ist (das "-Wl" heißt daß alles kommagetrennte dahinter an den "ld" weitergeleitet wird - das "-soname ..." ist also für den Linker)
- "libtoll.so.1.2.5" der Name der kompilierten Datei ist
- "toll.o" und "symtab.o" 2 Objektdateien sind aus der die Bibliothek erstellt werden soll
- "-lc" die Anweisung ist das ganze gegen die C-Bibliothek zu linken

Außerdem muß "-fPIC" angegeben werden um den entsprechenden Quellcode zu kompilieren (anda_skoa - you're right :) )

Ich gehe mal davon aus daß es stimmt - der Rest in dem Buch "Linux UNIX-Systemprogrammierung" funktioniert ja auch :D

ciao

Michael