Mitschrieb
Mitschrieb
Mitschrieb
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4.3 Bibliotheken erzeugen 4 PROGRAMM<br />
gcc -c -fpic f.c ⇒ f.o<br />
gcc -c -fpic g.c ⇒ g.o<br />
gcc -shared -fpic -o fg.so f.o g.o<br />
Das „pic” steht für Position Independant Code. „-shared” heißt: erzeuge shared exe (dll).<br />
.so ist die Standardendung für dlls auf Unix. (s.o = shared Objekt).<br />
Im allgemeinen wird User- Code nicht dynamisch gebunden, sondern die Standard-Bibliotheken<br />
des Systems.<br />
f.o<br />
g.o<br />
gcc −c −o main.o main.c<br />
main.o<br />
gcc −o main main.o fg.so => main<br />
Binder f... g... fg.so<br />
Laden<br />
Binder<br />
Heap<br />
Stack<br />
Code<br />
fstub<br />
gstub<br />
dyn. Bindelader<br />
fg.so<br />
fstub gstub<br />
main<br />
<br />
<br />
<br />
dynamischer<br />
Bindelader<br />
Nach dem ersten Aufruf von f() oder g() im Code sucht der Bindelader die fg.so auf Platte und<br />
lädt diese nach. Falls die fg.so nicht gefunden wird, stürzt das Programm ab. ⇒Standardlösung<br />
für Unix: Es gibt einen Bib-Suchpfad: Liste von Verzeichnissen in denen .so- Dateien gesucht<br />
werden. Die Pfadinfos sind Bestandteil jedes Programms. Suchpfad definieren:<br />
export LD_LIBRARY_PATH=’LD_LIBRARY_PATH’:/home/hg4711/bs1/libexp<br />
14