A. Willemer Wie werde ich UNIX-Guru
| | I ANWENDUNG |
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.
|
II ADMINISTRATION |
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel
|
III NETZWERK |
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls
|
IV DAS X-WINDOW SYSTEM |
Die grafische Oberfläche von UNIX einrichten und nutzen
|
V PROGRAMMIERUNG VON SHELLSKRIPTEN |
Automatisieren von Tasks durch Shell-Skripte.
|
VI PERL |
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk
|
VII PROGRAMMIERWERKZEUGE |
C-Compiler, Analyse-Tools, CVS, yacc, diff
|
VIII UNIX-SYSTEMAUFRUFE |
UNIX-Befehle in eigenen Programmen nutzen
|
IX LITERATUR |
Weiterführende Literatur zu UNIX und LINUX
|
| |
Lange Zeit wurde jeder UNIX Maschine immer auch ein C-Compiler beigelegt.
Selbst wenn dieser in den späteren Jahren
als Handwerkszeug für den Softwareentwickler aufgrund mangelnder Aktualität
wenig brauchbar war, benötigte ihn der Administrator, um einen neuen Kernel
zu erstellen. Inzwischen ist es längst üblich, dass man den C-Compiler zu
UNIX kaufen muss.
Dies, die Qualität manches Compilers und die Inkompatibilität zwischen den
Compilern führte dazu, dass inzwischen der
GNU-Compiler ein wichtiger Standard auf den UNIX-Maschinen ist. Er ist für
fast jede Plattform verfügbar, er verhält sich überall in etwa gleich und ist
immer auf dem neuesten Stand. Dazu kommt, dass er kostenlos ist.
Das klingt fast nach einem Perpetuum Mobile der Informatik.
Der Hintergrund sind die Universitäten, die mit diesem Compiler ein Grundgerüst
zur Verfügung haben, um Studenten die Prinzipien des Compilerbaus zu lehren.
Ergebnisse der Compilerbauforschung gelangen über Diplomarbeiten sehr schnell
in die Weiterentwicklung.
Der UNIX-C-Compiler wird immer als cc aufgerufen. Dabei erkennt er
selbst, ob er als Präcompiler, als Compiler oder als Linker tätig werden
soll. Selbst ob es sich um C oder C++ handelt erkennt er an der Extension
der Dateien. Obwohl hinter dem cc sehr unterschiedliche Compiler
verschiedenster Hersteller stecken können, sind die wichtigsten Optionen
überall gleich.
Wer vom PC oder Mac kommt, wundert sich vielleicht, dass sich unter UNIX
keine IDE (Integrated Development Environment) durchgesetzt hat. Tatsächlich
gibt es diese Umgebungen natürlich auch für X, wie beispielsweise das Apex
unter Solaris. Dennoch arbeiten die meisten UNIX Programmierer von der Shell
aus. Durch das sehr leistungsfähige make (siehe S.
make) braucht das
Übersetzen nur ein Kommando und man kann Abhängigkeiten definieren, die mit
IDEs kaum machbar sind.
Für einen ersten Versuch soll ein einfaches Programm übersetzt und gestartet
werden. Es heißt moin.c und grüßt die RegionDie weltmännischeren
Programmierer können auch gern die Welt grüßen.
gaston> cat moin.c
main()
{
puts("Moin, Torfmoorholm!");
}
gaston> cc moin.c
gaston> a.out
Moin, Torfmoorholm!
gaston>
Der C-Compiler wird mit cc gefolgt von dem Dateinamen der Quelldatei
aufgerufen. Es entsteht die ausführbare Datei a.out.
Mit Hilfe der Flag -o kann der Name der Zieldatei geändert werden.
cc ruft nacheinander Precompiler, C-Compiler, Assembler und Linker
auf.
Wichtige Optionen beim Aufruf des C-Compilers lauten:
- [-o Dateiname]
Die Ausgabedatei erhält den Namen Dateiname.
- [-c Dateiname]
Kompiliert eine einzelne C-Quelltextdatei.
Es entsteht eine linkfähige Objektdatei mit der Endung .o.
- [-IPfad]
Ergänzt den Pfad, in dem nach Headerdateien gesucht werden soll.
- [-LPfad]
Ergänzt den Pfad, in dem nach Bibliotheken gesucht werden soll.
- [-lName]
Verwendet beim Linklauf die Bibliothek lib Name.a .
Die Datei wird in den Standardlinkpfaden (beispielsweise /usr/lib) und
denen durch -L angegebenen gesucht.
- [-g]
Dem Code werden Informationen für den Debugger hinzugefügt. So können Sie
im Debugger Variablen und Funktionen über ihre Namen ansprechen.
- [-DName]
Mit dieser Option könnnen Namen definiert werden. Diese sind mit denen der
Präprozessoranweisung #define gleichwertig. Soll der Name
einen Wert zugewiesen bekommen, muss -DName=Wert angegeben
werden.
Weil es so leicht zu verwechseln ist, sei es hier noch einmal auseinander
gehalten. Die Option -I ist ein großes i (für include) und gibt den Headerpfad
an und die Option -l ist ein kleines L (für library) und gibt die
hinzuzubindende Bibliothek an.
Ein paar kleine Fallstricke gibt es, auf die Programmierer, die von anderen
Umgebungen her kommen, unter UNIX leicht hereinfallen können.
- UNIX unterscheidet streng zwischen Groß- und Kleinschreibung. Die Datei
Test.H ist nicht gleich test.h.
- UNIX verwendet den Schrägstrich und nicht den Backslash als Pfadtrenner.
- Unter UNIX ist es ein Unterschied, ob der Dateiname hinter #include
in spitzen Klammern oder den Anführungszeichen gesetzt wird.
#include "test1.h"
#include <test2.h>
test1.h wird zuerst im Sourceverzeichnis gesucht, ist also vom
Programmierer geschrieben worden und gehört zum Projekt. test2.h
wird ausschließlich im Include-Path gesucht, ist also ein System-Header.
- Der Linker verhält sich im Gegensatz zu den meisten PC-Compilern so, dass er
nur dann Funktionen aus Bibliotheken dazubindet, wenn deren Name als noch
nicht aufgelöst offen sind.
Damit hat die Reihenfolge der Dateien und Bibliotheken eine Bedeutung. Aus
diesem Grund werden die Bibliotheken zum Schluß genannt.
| |
|
|
Ihre Meinung? |
|
|
|
|
| |
| |
Shopping |
|
Versandkostenfrei bestellen in Deutschland und Österreich Info
|
|
| |
| |
|