|
1a.
Für kleinere Projekte
sind große Entwicklungsumgebungen wie KDevelop oder Anjuta
eher ungeeignet bzw. überdimensioniert. Hierbei kommen Sie mit
einfachen Editoren und der Kommandozeile häufig schneller ans
Ziel. Sind Sie z. B. mit einem entfernten Rechner über SSH oder
über OpenVPN verbunden, stehen Ihnen auch keine
solche Entwicklungsumgebungen zur Verfügung. Gerne wird
hierbei auf Kommandozeilen-Editoren wie bspw. vi, pico (wie in der
folgenden Abbildung zu sehen) oder emacs
zurückgegriffen um den Quellcode einzugeben.

1b. Für
Einsteiger ist
die
Verwendung solcher Kommandozeilen-Editoren zunächst eher
gewöhnungsbedürftigt. Natürlich
können Sie auch auf die einfachen (Text-)Editoren des
entsprechenden Fenstermanager (GNOME oder KDE) zurückgreifen.
In der
Abbildung sehen Sie z. B. den Editor gedit
(gewöhnlich unter GNOME behaimatet) mit dem
Hallo-Welt-Programm.

2.
Egal, welchen Editor Sie
den nun verwenden, dass Kompilieren und Linken eines Quelltext zu einem
ausführbaren Programm ist immer gleich. In der folgenden
Abbildung
wird aus dem Quelltext hallo.c
ein ausführbares Programm namens hallo erstellt.
In diesem Beispiel hätte natürlich auch einfach nur
das Flag -o
(gcc
-o hallo hallo.cpp) gerreicht. Ich persönlich
verwende mittlerweile gerne zur Sicherheit mehrere Flags wie hier mit -pedantic,
-Wall
und -ansi.
Wollen Sie außerdem ein Programm explizit im C89- bzw.
C99-Standard übersetzen, müssen Sie das Flag -std
(bspw.: -std=c89
oder -std=c99)
verwenden. Die Bedeutung der einzelnen Compiler-Flags und noch einige
mehr, finden Sie in der Tabelle hinter der folgenden Abbildung.

| Option |
Bedeutung |
| -o |
(Output)
Wollen Sie, dass
der Compiler die ausführbare Datei anders benennt als a.out,
dann
sollten Sie mit dieser Option den Namen der Ausgabedatei angeben. |
| -c |
(Compile)
Kompilieren ohne zu linken. |
| -Dname=value |
(Define)
Definiert ein Präprozessor-Makro mit dem Namen name
und dem Wert value
in der Kommandozeile. |
| -Idirname |
(Include-directory)
Fügt dirname
zur Liste der Include-Dateien
hinzu, in denen danach gesucht werden soll. |
| -Ldirname |
(Library)
Fügt dirname zur
Liste der Verzeichnisse hinzu, in denen nach Bibliotheksdateien gesucht
werden soll (-L
gilt für .so
und .a).
|
| -static |
Es werden nur statische Bibliotheken
zum Linken verwendet. |
| -lname |
(Library)
Gibt die
Bibliothek an, die hinzugelinkt werden soll. Hier die Bibliothek name
(wird eine .so-Datei
gefunden, wird diese benutzt, andernfalls .a,
sollte diese existieren). |
| -O |
(Optimize)
Den kompilierten Quellcode optimieren. |
| -On |
(Optimize)
Wie das Flag -O,
nur kann mit n die
Optimierungsstufe angegeben werden. Mindestens ist 1
und maximal 3 möglich. Mit der Angabe von 0 wird die
Optimierung
ausgeschaltet. Es sind auch Level oberhalb 3 möglich, die
haben aber
keinen Effekt. |
| -g |
(Debug)
Fügt Standard-Debug-Informationen zum Debuggen hinzu. |
| -ggdb |
(Debug
gdb) Fügt
Debug-Informationen hinzu, die nur der Debugger gdb versteht (auch
hier
gibt es wieder verschiedene Stufen; wer in der Welt der vielen -g-Möglichkeiten
einfach nur »alles« will, gibt am besten -ggdb3
an; da
hat man alles (laut Manpage). |
| -ansi |
Erlaubt nur ANSI C++-konforme
Konstrukte. |
| -pedantic |
Gibt alle Warnungen aus, die vom ANSI
C++-Standard gefordert werden. |
| -pedantic-errors |
Gibt alle Fehler aus, die vom ANSI
C++-Standard gefordert werden. |
| -Wall |
Aktiviert allgemeine sinnvolle
Warnungen, die vom g++-Compiler unterstützt werden. |
| -p, -pg |
(Profiling)
Fügt dem
Objektcode Profiling-Informationen hinzu, die vom Profiler gprof ausgewertet
werden können. -pg
gibt Profiling-Informationen für gprof aus. |
| -v |
Zeigt alle Schritte und
Kommandos in der Kommandozeile an, die der Compiler gerade
ausführt (siehe da: cpp,
cc1,
as
und ld).
|
|