24.02.2013 Aufrufe

Einf ¨uhrung in UNIX - CIS

Einf ¨uhrung in UNIX - CIS

Einf ¨uhrung in UNIX - CIS

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

2.7 Writer’s Workbench 171<br />

vorhanden, wobei von FORTRAN gegenwärtig die Versionen 77 und 90 nebene<strong>in</strong>ander<br />

laufen.<br />

Kompilieren bedeutete vor der EDV-Zeit zusammentragen. Im alten Rom<br />

hatte es auch noch die Bedeutung von plündern. In unseren Herzensergießungen<br />

haben wir viel aus Büchern, Zeitschriften, WWW-Seiten und<br />

Netnews kompiliert.<br />

E<strong>in</strong> Compiler übersetzt den Quellcode e<strong>in</strong>es Programmes <strong>in</strong> Masch<strong>in</strong>ensprache.<br />

Die meisten Programme enthalten Aufrufe von externen Programmodulen,<br />

die bereits vorübersetzt und <strong>in</strong> Bibliotheken zusammengefaßt<br />

s<strong>in</strong>d. Beispiele s<strong>in</strong>d Ausgaberout<strong>in</strong>en oder mathematische Funktionen. Der<br />

ausführbare Code dieser externen Module wird erst vom L<strong>in</strong>ker 36 mit dem<br />

Programmcode vere<strong>in</strong>igt, so daß e<strong>in</strong> vollständiges ausführbares Programm<br />

entsteht. Es gibt die Möglichkeit, die externen Module erst zur Laufzeit h<strong>in</strong>zuzunehmen;<br />

das heißt dynamisches L<strong>in</strong>ken und spart Speicherplatz. Dabei<br />

werden die Module entweder beim Laden des Programms <strong>in</strong> den Arbeitsspeicher<br />

oder erst bei ihrem Aufruf h<strong>in</strong>zugeladen (load on demand). Benutzen<br />

mehrere Programme e<strong>in</strong> <strong>in</strong> den Arbeitsspeicher kopiertes Modul geme<strong>in</strong>sam<br />

anstatt jeweils e<strong>in</strong>e eigene Kopie anzulegen, so kommt man zu den Shared<br />

Libraries und spart nochmals Speicherplatz.<br />

Die Aufrufe lauten cc(1), f77(1), f90(1) und pc(1). Diese Kommandos<br />

rufen Compilertreiber auf, die ihrerseits die eigentlichen Compiler<br />

/lib/ccom, f77comp, f90comp und pascomp starten und noch weitere D<strong>in</strong>ge<br />

erledigen. Ohne Optionen rufen die Compilertreiber auch noch den L<strong>in</strong>ker<br />

/b<strong>in</strong>/ld(1) auf, so daß das Ergebnis e<strong>in</strong> lauffähiges Programm ist, das als<br />

Default den Namen a.out(4) trägt. Mit dem Namen a.out(4) sollte man<br />

nur vorübergehend arbeiten (mit mv(1) ändern). Der Aufruf des C-Compilers<br />

sieht beispielsweise so aus:<br />

cc -g source.c -lm<br />

Die Option -g veranlaßt den Compiler, zusätzliche Informationen für den<br />

symbolischen Debugger zu erzeugen. Der Quelltext des C-Programmes steht<br />

im File source.c, das e<strong>in</strong>en beliebigen Namen tragen kann, nur sollte der<br />

Name mit der Kennung .c enden. Die abschließende Option -lm fordert<br />

den L<strong>in</strong>ker auf, die mathematische Bibliothek e<strong>in</strong>zub<strong>in</strong>den. Weitere Optionen<br />

s<strong>in</strong>d:<br />

• -v (verbose) führt zu etwas mehr Bemerkungen beim Übersetzen,<br />

• -o (output) benennt das ausführbare File mit dem auf die Option folgenden<br />

Namen, meist derselbe wie die Quelle, nur ohne Kennung:<br />

cc -o myprogram myprogram.c,<br />

• -c hört vor dem L<strong>in</strong>ken auf, erzeugt Objektfile mit der Kennung .o,<br />

• -p (profile) erzeugt beim Ablauf des Programmes e<strong>in</strong> File mon.out, das<br />

mit dem Profiler prof(1) ausgewertet werden kann, um Zeit<strong>in</strong>formationen<br />

zum Programm zu erhalten,<br />

36 L<strong>in</strong>ker werden auch B<strong>in</strong>der, Mapper oder Loader genannt. Manchmal wird auch<br />

zwischen B<strong>in</strong>der und Loader unterschieden, soll uns hier nicht beschäftigen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!