20.07.2013 Aufrufe

Mitschrieb

Mitschrieb

Mitschrieb

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!