Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
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

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Programmierwerkzeuge Programmierwerkzeuge make »

C-Compiler

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 libName.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.

  1. UNIX unterscheidet streng zwischen Groß- und Kleinschreibung. Die Datei Test.H ist nicht gleich test.h.
  2. UNIX verwendet den Schrägstrich und nicht den Backslash als Pfadtrenner.
  3. 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.

  4. 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.



« Programmierwerkzeuge | Programmierwerkzeuge | make »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de