C/C++ Workshop - Teil 2
Inhalt:

1.) gcc-Grundlagen
2.) Kommandozeilenparameter von gcc
3.) Beispiele für Compileraufrufe
4.) Kurzanleitung zu make
5.) Adresse der FSF (Free Software Foundation)

Autor:
DEMON

gcc-Grundlagen
gcc ist der am meisten verbreitete Compiler für Linux. Seine Vorzüge sind z.B. die stets gleichbleibende Bedienung unter der jeweiligen Kombination aus Rechnerarchitektur und Betriebssystem.

Die GNU-Compiler für C/C++ unterliegen, wie auch jedes Projekt der FSF (Free Software Foundation ), der GNU GPL-Lizenz (General Public License).
Für nähere Informationen lesen Sie bitte die entsprechende Lizenz.

Die offiziellen gcc-Mirrors in Deutschland sind:

Der GNU C Compiler ist ein für viele Rechner-Plattformen erhältlicher und ausgereifter Compiler. Dies hat den Vorteil, daß es beim Kompilieren von Software mit dem gcc oft weniger Probleme gibt als mit einem kommerziellen Compiler.

Das Kompilieren (verarbeiten von Input-Daten) erfolgt beim gcc in 4 Schritten:

  1. preprocessing
  2. compilation
  3. assembly
  4. linking
Der eigentliche Kompiliervorgang wird in mehrere Stufen unterteilt:
  1. lexikalische und syntaktische Analyse
  2. Optimierung
  3. Code-Generierung
Nun, aber genug mit der Fachsimplerei. Wir wollen uns jetzt dem eigentlichen Compiliervorgang widmen. Die Benutzung von gcc erfolgt von der Kommandozeile (Terminal) aus, über direkten Aufruf der Optionen und des Quellcodes. Der gcc wird direkt von der Kommandozeile (Terminal) aus aufgerufen.

Kommandozeilenparameter von gcc

gcc [optionen] sourcefile.cpp

Die wichtigsten Optionen
OptionBeschreibung
-ansiübersetzt Quelltexte genäß dem ANSI-Standard
-cErzeugt ein Objektfile
-Edurchläuft nur den Präprozessor
-gDebugger Informationen
-lBibliotheksanbindung (z.B. gcc -lpthread -o MyThreadDemo MySourceCode.cpp)
-oOutputfile (Standard ist: a.out)
-O[0-4]Optimierungsgrad einstellen
-SErzeugt einen Assembler-Output
-WallGibt alle Warnungen aus

-l??? bedeutet: /usr/lib/lib???.a
Zum Beispiel Mathematische Bibliothek /usr/lib/libm.a:
gcc -lm MySource.c

Beispiele für Compileraufrufe

gcc MeinTest.c
Kompiliert die Datei MeinTest.c und erzeugt als Outputfile (Programm) die Datei a.out
gcc -o MeinTest MeinTest.c
Kompiliert die Datei MeinTest.c und erzeugt das Outputfile (Programm) MeinTest
gcc -c MeinTest.c
Kompiliert die Datei MeinTest.c und erzeugt dabei das Objektfile MeinTest.o
gcc -lm -o MeinTest MeinTest.c
Kompiliert die Datei MeinTest.c mit den aufgerufenen Routinen aus der libm und erzeugt das Programm MeinTest
gcc -ansi -pthread -malign-double -mcpu=i686 -Os -Wall -o MeinTest MeinTest.c
Kompiliert die Datei MeinTest.c nach dem ANSI-Standard mit Optimierungen für eine Pentium II CPU, mit Memory Align, allen Warnmeldungen; es werden Funktionen aus der PThread-Bibliothek benutzt und das Programm MeinTest erzeugt.

Kurzanleitung zu make
Nehmen wir an, Sie haben ein Programm geschrieben, welches folgende Voraussetzungen erfordert:
Eine Parser-Datei die parser.c heisst und zwei Header-Dateien (parser.h und unwichtig.h) beinhaltet, ist erforderlich um Ihr Programm (test.c) zu Kompilieren. Dieses Programm (test.c) braucht die Datei, weil es Routinen aus parser.c verwendet. Zusätzlich beinhaltet (#include) ihr Programm die Datei parser.h

Nun stellen Sie sie ins Netz anderen Benutzern zur Verfügung.

Spätestens jetzt haben Sie dem User, der Ihr Programm mit gcc kompiliert ein Herzversagen verpasst oder die Bekanntschaft mit freundlichen Männern in Weiß die komische Jacken mit sich tragen beschert.

Was tun, sprach Zeus ? -- Einen Makefile erstellen !

Bei einem Makefile handelt es sich um eine Textdatei, die alle Abhängigkeiten zu einem Software-Projekt regelt und durch den Befehl make gelesen wird. In unserem Beispiel würde ein Makefile etwa so aussehen:

Beispiel für einen Makefile

# Beispiel fuer einen Makefile
# Kompiliert das Programm test.c

# test haengt von zwei Objekt-Dateien ab 
test: test.o parser.o
    gcc -o test test.o parser.o -lm

#test.o haengt von zwei Quell-Dateien ab
test.o: test.c parser.h
    gcc -c test.c

#parser.o haengt von drei Quell-Dateien ab
parser.o: parser.c parser.h unwichtig.h
    gcc -c parser.c

#ENDE

Ist erst einmal ein Makefile erstellt, muss der User nur noch make eingeben und alle Source-Codes werden gemäß der Abhängigkeiten kompiliert... Einfacher geht's kaum noch.

Adresse der FSF (für interessierte)

Free Software Foundation 

675 Mass Ave
Cambridge, MA 02139
USA
email: gnu@prep.ai.mit.edu
Tel.: (617) 876-3296

Feedback ist wichtig für die Verbesserung des Service
Letzte Änderung: Thomas Gern
Datum: 17. September 1999 - pro-Linux.de; (c) Pro-Linux