aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/de/books/developers-handbook/tools/chapter.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/content/de/books/developers-handbook/tools/chapter.adoc')
-rw-r--r--documentation/content/de/books/developers-handbook/tools/chapter.adoc70
1 files changed, 35 insertions, 35 deletions
diff --git a/documentation/content/de/books/developers-handbook/tools/chapter.adoc b/documentation/content/de/books/developers-handbook/tools/chapter.adoc
index 9175b8f6c2..599080b478 100644
--- a/documentation/content/de/books/developers-handbook/tools/chapter.adoc
+++ b/documentation/content/de/books/developers-handbook/tools/chapter.adoc
@@ -151,14 +151,14 @@ Das Wort _kompilieren_ wird häufig für die Schritte 1 bis 4 verwendet-die ande
Glücklicherweise werden alle diese Details vor Ihnen verborgen, da `cc` ein Frontend ist, welches sich um die Ausführung all dieser Programme mit den richtigen Argumenten für Sie kümmert; einfaches eingeben von
-[source,bash]
+[source,shell]
....
% cc foobar.c
....
führt zur Übersetzung von [.filename]#foobar.c# durch alle bereits erwähnten Schritte. Wenn Sie mehr als eine Datei übersetzen wollen müssen Sie etwas wie folgt eingeben
-[source,bash]
+[source,shell]
....
% cc foo.c bar.c
....
@@ -170,7 +170,7 @@ Es gibt haufenweise Optionen für `cc`, die alle in der zugehörigen Manualpage
`-o _filename_`::
Die Name der Ausgabedatei. Wenn Sie diese Option nicht verwenden erstellt `cc` eine Datei mit dem Namen [.filename]#a.out#.
+
-[source,bash]
+[source,shell]
....
% cc foobar.c executable is a.out
% cc -o foobar foobar.c executable is foobar
@@ -179,7 +179,7 @@ Die Name der Ausgabedatei. Wenn Sie diese Option nicht verwenden erstellt `cc` e
`-c`::
Dies kompiliert die Datei nur, verlinkt sie jedoch nicht. Nützlich für Spielereien, um die Syntax auf Korrektheit zu überprüfen, oder falls Sie ein [.filename]#Makefile# verwenden.
+
-[source,bash]
+[source,shell]
....
% cc -c foobar.c
....
@@ -189,7 +189,7 @@ Dieser Befehl erzeugt eine _Objektdatei_ (nicht ausführbar) mit den Namen [.fil
`-g`::
Diese Option erzeugt die Debug-Version einer ausführbaren Datei. Dabei fügt der Compiler zusätzliche Informationen darüber, welcher Funktionsaufruf zu welcher Zeile im Quelltext gehört, der ausführbaren Datei hinzu. Ein Debugger kann Ihnen mit Hilfe dieser Information den zugehörigen Quelltext anzeigen, während Sie den Programmverlauf schrittweise verfolgen, was _sehr_ hilfreich sein kann; der Nachteil dabei ist, daß durch die zusätzlichen Informationen das Programm viel größer wird. Normalerweise verwendet man die Option `-g` während der Entwicklung eines Programms, und für die "Release-Version", wenn man von der Korrektheit des Programms überzeugt ist, kompiliert man das Programm dann ohne diese Option.
+
-[source,bash]
+[source,shell]
....
% cc -g foobar.c
....
@@ -201,7 +201,7 @@ Diese Option erzeugt eine optimierte Version der ausführbaren Datei. Der Compil
+
Optimierungen werden normalerweise nur beim Kompilieren von Release-Versionen aktiviert.
+
-[source,bash]
+[source,shell]
....
% cc -O -o foobar foobar.c
....
@@ -223,7 +223,7 @@ Ohne diese Flags wird Ihnen der `cc` die Verwendung eigener Erweiterungen des St
Im Allgemeinen sollten Sie versuchen, Ihren Code so portabel wie möglich zu schreiben, da Sie ansonsten eventuell das gesamte Programm noch einmal neu schreiben müssen, falls dieser in einer anderen Umgebung laufen soll-und wer weiß schon was er in ein paar Jahren verwenden wird?
-[source,bash]
+[source,shell]
....
% cc -Wall -ansi -pedantic -o foobar foobar.c
....
@@ -237,7 +237,7 @@ Das am häufigsten auftretende Beispiel dieser Option ist die Übersetzung eines
+
Angenommen eine Bibliothek heißt [.filename]#libirgendwas.a#, dann müssen Sie dem `cc` als Argument `-l _irgendwas_` übergeben. Zum Beispiel heißt die Mathematik-Bibliothek [.filename]#libm.a#, und daher müssen Sie dem `cc` als Argument `-lm` übergeben. Ein typisches "Manko" der Mathematik-Bibliothek ist, daß diese immer die letzte Bibliothek auf der Kommandozeile sein muß.
+
-[source,bash]
+[source,shell]
....
% cc -o foobar foobar.c -lm
....
@@ -246,7 +246,7 @@ Durch diesen Befehl werden die Funktionen aus der Mathematik-Bibliothek in [.fil
+
Wenn Sie {c-plus-plus-command} -Code kompilieren wollen, müssen Sie {lg-plus-plus}, bzw. {lstdc-plus-plus} falls Sie FreeBSD 2.2 oder neuer verwenden, zu Ihrer Kommandozeile hinzufügen, um Ihr Programm gegen die Funktionen der C++ Bibliothek zu linken. Alternativ können Sie anstatt cc auch {c-plus-plus-command} aufrufen, welcher dies für Sie erledigt. C++ kann unter FreeBSD auch als {gcc-plus-plus} aufgerufen werden.
+
-[source,bash]
+[source,shell]
....
% cc -o foobar foobar.cc -lg++ Bei FreeBSD 2.1.6 oder älter
% cc -o foobar foobar.cc -lstdc++ Bei FreeBSD 2.2 und neuer
@@ -261,7 +261,7 @@ Beide Varianten erzeugen eine ausführbare [.filename]##foobar## aus der {c-plus
Wenn Sie mathematische Funktionen wie `sin()` verwenden wollen, müssen Sie den `cc` anweisen, die Mathematik-Bibliothek wie folgt zu verlinken:
-[source,bash]
+[source,shell]
....
% cc -o foobar foobar.c -lm
....
@@ -285,7 +285,7 @@ int main() {
Nach erneutem Compilieren sollte das Folgende bei der Ausführung ausgegeben werden:
-[source,bash]
+[source,shell]
....
% ./a.out
2.1 ^ 6 = 85.766121
@@ -297,7 +297,7 @@ Wenn Sie irgendwelche mathematischen Funktionen verwenden sollten Sie _immer_ di
Denken Sie daran, daß der `cc` die ausführbare Datei [.filename]#a.out# nennt, wenn Sie nicht explizit einen Namen angeben. Verwenden Sie in solch einem Fall die Option `-o _filename_`:
-[source,bash]
+[source,shell]
....
% cc -o foobar foobar.c
....
@@ -306,7 +306,7 @@ Denken Sie daran, daß der `cc` die ausführbare Datei [.filename]#a.out# nennt,
Im Gegensatz zu MS-DOS(R) sucht UNIX(R) nicht im aktuellen Verzeichnis nach einem ausführbaren Programm, das Sie versuchen auszuführen, solange Sie dies nicht explizit mit angeben. Sie können entweder `./foobar` eingeben, was soviel bedeutet wie "führe eine Datei namens [.filename]#foobar# im aktuellen Verzeichnis aus", oder Sie können Ihre Umgebungsvariable `PATH` so erweitern, daß sie ähnlich wie folgt aussieht
-[source,bash]
+[source,shell]
....
bin:/usr/bin:/usr/local/bin:.
....
@@ -317,7 +317,7 @@ Der Punkt am Ende bedeutet "siehe im aktuellen Verzeichnis nach, wenn es in kein
Bei den meisten UNIX(R)-Systeme existiert bereits ein Programm mit dem Namen `test` im Verzeichnis [.filename]#/usr/bin#, und die Shell nimmt dieses, bevor sie im aktuellen Verzeichnis nachsieht. Sie können entweder den folgenden Befehl eingeben:
-[source,bash]
+[source,shell]
....
% ./test
....
@@ -399,14 +399,14 @@ Nein, glücklicherweise nicht (es sei denn Sie haben wirklich ein Hardwareproble
Ja, nehmen sie einfach eine andere Konsole oder XTerm und führen Sie
-[source,bash]
+[source,shell]
....
% ps
....
aus, um die Prozess-ID Ihres Programms herauszufinden. Führen Sie anschließend
-[source,bash]
+[source,shell]
....
% kill -ABRT pid
....
@@ -426,7 +426,7 @@ Wenn Sie einen core dump von außerhalb Ihres Programms erzeugen wollen, ohne da
Wenn Sie an einem einfachen Programm mit nur einer oder zwei Quelltextdateien arbeiten, ist die Eingabe von
-[source,bash]
+[source,shell]
....
% cc file1.c file2.c
....
@@ -435,7 +435,7 @@ zwar nicht aufwendig, wird aber mit zunehmender Anzahl der Quelltextdateien sehr
Eine Möglichkeit dies zu umgehen besteht in der Verwendung von Objektdateien, wobei man nur die Quelltextdateien neu kompiliert, die verändert wurden. So könnten wir etwa folgendes erhalten:
-[source,bash]
+[source,shell]
....
% cc file1.o file2.o … file37.c …
....
@@ -483,7 +483,7 @@ install:
Wir können make sagen welches Ziel wir erzeugt haben wollen, indem wir etwas wie folgt eingeben:
-[source,bash]
+[source,shell]
....
% make target
....
@@ -573,7 +573,7 @@ Falls Sie einen Blick in die makefiles des Systems werfen möchten, finden Sie d
Die Version von make, die in FreeBSD enthalten ist, ist Berkeley make; es gibt eine Anleitung dazu in [.filename]#/usr/shared/doc/psd/12.make#. Um sich diese anzusehen, müssen Sie
-[source,bash]
+[source,shell]
....
% zmore paper.ascii.gz
....
@@ -598,14 +598,14 @@ in die Datei. Nachdem Sie dies getan haben können Sie `info` eingeben und dann
Der Debugger bei FreeBSD heißt `gdb` (GNU debugger). Sie können Ihn durch die Eingabe von
-[source,bash]
+[source,shell]
....
% gdb progname
....
starten, wobei viele Leute ihn vorzugsweise innerhalb von Emacs aufrufen. Sie erreichen dies durch die Eingabe von:
-[source,bash]
+[source,shell]
....
M-x gdb RET progname RET
....
@@ -622,7 +622,7 @@ Dieser Abschnitt ist als Einführung in die Verwendung des `gdb` gedacht und bei
Sie müssen das Programm mit der Option `-g` kompiliert haben um den `gdb` effektiv einsetzen zu können. Es geht auch ohne diese Option, allerdings werden Sie dann nur den Namen der Funktion sehen, in der Sie sich gerade befinden, anstatt direkt den zugehörigen Quelltext. Falls Sie eine Meldung wie die folgende sehen:
-[source,bash]
+[source,shell]
....
… (no debugging symbols found) …
....
@@ -659,7 +659,7 @@ Dieses Programm setzt i auf den Wert `5` und übergibt dies einer Funktion `bazz
Wenn wir das Programm kompilieren und ausführen erhalten wir
-[source,bash]
+[source,shell]
....
% cc -g -o temp temp.c
% ./temp
@@ -669,7 +669,7 @@ anint = 4231
Das ist nicht was wir erwartet hatten! Es ist Zeit, daß wir sehen was hier passiert!
-[source,bash]
+[source,shell]
....
% gdb temp
GDB is free software and you are welcome to distribute copies of it
@@ -691,7 +691,7 @@ bazz (anint=4231) at temp.c:17 gdb displays stack frame
Halt mal! Wieso hat denn anint den Wert `4231`? Haben wir dieser Variablen nicht in `main()` den Wert `5` zugewiesen? Gehen wir mal zurück zu `main()` und schauen dort nach.
-[source,bash]
+[source,shell]
....
(gdb) up Move up call stack
#1 0x1625 in main () at temp.c:11 gdb displays stack frame
@@ -725,7 +725,7 @@ Eine Kernspeicherdatei ist im Prinzip eine Datei, die den vollständigen Zustand
Um eine Kernspeicherdatei zu untersuchen müssen Sie den `gdb` wie gewohnt starten. An Stelle von `break` oder `run` müssen Sie das Folgende eingeben
-[source,bash]
+[source,shell]
....
(gdb) core progname.core
....
@@ -734,7 +734,7 @@ Wenn Sie sich nicht in demselben Verzeichnis befinden wie die Kernspeicherdatei
Sie sollten dann etwas wie folgt sehen:
-[source,bash]
+[source,shell]
....
% gdb a.out
GDB is free software and you are welcome to distribute copies of it
@@ -753,7 +753,7 @@ In diesem Fall hieß das Programm [.filename]#a.out#, weshalb die Kernspeicherda
Manchmal ist es ganz nützlich zu sehen, wie eine Funktion aufgerufen wurde, da bei komplexen Programmen das eigentliche Problem schon sehr viel weiter oben auf dem Aufruf-Stack aufgetreten sein könnte. Der Befehl `bt` veranlaßt den `gdb` dazu, einen Backtrace des Aufruf-Stacks auszugeben:
-[source,bash]
+[source,shell]
....
(gdb) bt
#0 0x164a in bazz (anint=0x5) at temp.c:17
@@ -770,7 +770,7 @@ Eine der tollsten Features des `gdb` ist die Möglichkeit, damit bereits laufend
Was Sie an solch einer Stelle machen ist, Sie starten einen weiteren `gdb`, ermitteln mit Hilfe von `ps` die Prozess-ID des Kindprozesses, und geben
-[source,bash]
+[source,shell]
....
(gdb) attach pid
....
@@ -779,7 +779,7 @@ im `gdb` ein, und können dann wie üblich mit der Fehlersuche fortfahren.
"Das ist zwar alles sehr schön," werden Sie jetzt vielleicht denken, "aber in der Zeit, in der ich diese Schritte durchführe, ist der Kindprozess schon längst über alle Berge". Fürchtet euch nicht, edler Leser, denn Ihr müßt wie folgt vorgehen (freundlicherweise zur Verfügung gestellt von den Info-Seite des `gdb`):
-[source,bash]
+[source,shell]
....
if ((pid = fork()) < 0) /* _Always_ check this */
@@ -858,7 +858,7 @@ Bedauerlicherweise gibt es hier viel zu viel, um es im Detail zu erklären; es g
* Emacs hat bereits eine vordefinierte Funktion mit dem Namen `next-error`. Diese erlaubt es einem, in einem Fenster mit der Kompilierungsausgabe mittels `M-n` von einem zum nächsten Kompilierungsfehler zu springen; wir definieren eine komplementäre Funktion `previous-error`, die es uns erlaubt, mittels `M-p` von einem zum vorherigen Kompilierungsfehler zu springen. Das schönste Feature von allen ist, daß mittels `C-c C-c` die Quelltextdatei, in der der Fehler aufgetreten ist, geöffnet und die betreffende Zeile direkt angesprungen wird.
* Wir aktivieren die Möglichkeit von Emacs als Server zu agieren, so daß wenn Sie etwas außerhalb von Emacs machen und eine Datei editieren möchten, Sie einfach das folgende eingeben können
+
-[source,bash]
+[source,shell]
....
% emacsclient filename
....
@@ -1163,7 +1163,7 @@ Das ist jetzt alles sehr schön wenn Sie ausschließlich in einer der Sprachen p
Als erstes muß festgestellt werden, ob whizbang mit irgendwelchen Dateien daherkommt, die Emacs etwas über die Sprache sagen. Diese enden üblicherweise auf [.filename]#.el#, der Kurzform für "Emacs Lisp". Falls whizbang zum Beispiel ein FreeBSD Port ist, könnten wir diese Dateien mittels
-[source,bash]
+[source,shell]
....
% find /usr/ports/lang/whizbang -name "*.el" -print
....
@@ -1172,14 +1172,14 @@ finden und durch Kopieren in das Emacs-seitige Lisp-Verzeichnis installieren. Un
Wenn zum Beispiel die Ausgabe des find-Befehls wie folgt war
-[source,bash]
+[source,shell]
....
/usr/ports/lang/whizbang/work/misc/whizbang.el
....
könnten wir das folgende tun
-[source,bash]
+[source,shell]
....
# cp /usr/ports/lang/whizbang/work/misc/whizbang.el /usr/local/shared/emacs/site-lisp
....