Systemnahe Programmierung mit C und Linux (eBook)
1386 Seiten
Rheinwerk Computing (Verlag)
978-3-8362-9750-9 (ISBN)
Alles zur systemnahen Anwendungsprogrammierung: von den E/A-Funktionen, dem Zugriff auf Systeminformationen über Prozesse, Signale, Interprozesskommunikation und Threads bis hin zu Netzwerkprogrammierung, Datenbanken und GUIs. Für alle, die Programme schreiben wollen und alte Software warten oder portieren müssen. Alle Beispiele sind auch auf dem Raspberry Pi ausführbar. Solide C- und Linux-Kenntnisse werden vorausgesetzt.
Aus dem Inhalt:
- E/A-Funktionen
- Attribute von Dateien und Verzeichnissen
- Zugriff auf Systeminformationen
- Devices - eine einfache Verbindung zur Hardware
- System- und Benutzerdateien
- Dämonen, Zombies und Prozesse
- Signale
- IPC - Interprozesskommunikation
- Threads
- Netzwerkprogrammierung
- Datenbanken (MySQL, PostgreSQL)
- GUIs mit GTK+
- Werkzeuge für Programmierer
Jürgen Wolf ist seit über 16 Jahren Autor und seit mehr als 10 Jahren passionierter Digitalfotograf. Seine Buchthemen sind Bildbearbeitung, Fotografie, Webentwicklung, Betriebssysteme und Programmierung. Und egal welches Thema: Bei jedem Buch ist es sein Ziel, auch komplexe Zusammenhänge klar und verständlich zu erklären.
1.5 Der Compiler GCC – eine kurze Einführung
Da in diesem Buch Vorkenntnisse in C erforderlich sind, wissen Sie wahrscheinlich schon, womit ein Programm geschrieben, übersetzt und ausgeführt wird. Welchen Editor oder gar welche Entwicklungsumgebung Sie dazu verwenden, bleibt letztendlich Ihnen selbst überlassen. Der eine wird seine Programme vielleicht gerne mit vi oder dem Emacs schreiben, und der andere verwendet vielleicht lieber gleich eine Entwicklungsumgebung wie KDevelop oder Anjuta – dies ist wohl eher Sache des guten Geschmacks. Umsteiger von Windows werden beim Anblick und der Verwendung von vi vielleicht denken, ihre Tastatur sei kaputt, weil sie nicht so reagiert wie bei dem guten alten Edit-Werkzeug, das bei Windows stets mit dabei ist. Echte UNIX-Puristen werden sich dagegen von der überfüllten Entwicklungsumgebung schnell wieder verabschieden.
Lassen Sie sich aber bitte nicht einreden, dass dieses oder jenes Tool oder Editor das Nonplusultra sei. Gehen Sie solchen Puristen am besten gleich aus dem Weg, und verwenden Sie die Programme, die Ihnen am besten zusagen – in 80 Prozent der Fälle tut es nämlich der Editor nano oder der wirklich sehr zu empfehlende Editor SciTE, der allerdings wegen der Menüsteuerung einen Desktop voraussetzt. Ob Ihr Editor und Ihre Kommandozeile dann in einem separaten Fenster laufen oder nicht, ist fast immer zweitrangig. Zum Übersetzen der Programme in diesem Buch reicht jedenfalls die Kommandozeile aus. Daher werden wir gerade für Umsteiger oder Einsteiger hier in einer kurzen Einführung die wichtigsten Optionen des GNU C Compilers (GCC) beschreiben. Für mehr Informationen sollten Sie dann auch die Manual Page von GCC lesen. Dies können Sie mit dem folgenden Kommando in der Kommandozeile erledigen:
man gcc
Hinweis
GCC ist hier übrigens die Abkürzung von »GNU C Compiler Collection«, GCC wird aber meist mit dem Compiler GCC gleichgesetzt. Im Endeffekt ist dies nicht ganz richtig, weil ja zu dem Compiler selbst noch eine Sammlung (engl. collection) nützlicher Bibliotheken gehört. Aber viele Benutzer sind nicht so spitzfindig und setzen GCC mit dem Compiler gleich.
1.5.1 Den GCC von der Kommandozeile aus aufrufen
Generell gibt es vier Aufrufmöglichkeiten des GCC von der Kommandozeile aus, wobei nicht alle Varianten bei Ihnen installiert sein müssen. Gewöhnlich wird für den Aufruf des GCC das Kommando gcc verwendet, aber es sind eventuell auch noch folgende Varianten vorhanden:
-
cc
-
g++
-
c++
In Wahrheit ist der GCC nämlich nur ein sogenanntes Frontend. Ein Frontend ist ein Programm, das andere Programme aufruft, je nachdem, welche Parameter Sie über die Kommandozeile übergeben. Beim GCC sind dies: Der Präprozessor cpp, der Compiler cc1 oder cc1plus, der Assembler as und der Linker collect2 inklusive ld. GCC bestimmt in der Regel anhand der Dateiendung selbst, welchen Compiler er anzuwenden hat. Daher lässt sich GCC sowohl für C und C++ als auch für Assembler-Dateien anwenden. Das ist sogar manchmal sinnvoller, als nur den Assembler as oder den Linker ld aufzurufen, denn das GCC-Frontend übergibt noch weitere Flags, die in der Regel dazu führen, dass man keine Fehlermeldung(en) beim Ausführen bekommt. Ein Flag ist hierbei eine Art Schalter, der eine bestimmte Funktion ein- oder ausschaltet. So kann z. B. durch das Flag -lm die Mathematikbibliothek eingebunden werden, die beispielsweise Fließkommaprozessoren unterstützt.
Die Frontends g++/c++ weisen den Linker ld zusätzlich an, die STL usw. mit einzubinden, was beim GCC trotz der Dateiendung nicht passiert und daher immer wieder bei Anfängern unter Linux zur Verwirrung führt. Meistens sind cc und c++ bzw. posix_cc und posix_c++ aber nur Aliasse für gcc und g++, aber das muss nicht immer der Fall sein. Am besten ist es deshalb, wenn Sie eine C++-Datei mit dem C++-Kommando kompilieren, denn damit können Sie eigentlich nichts falsch machen.
1.5.2 Wichtige Kommandozeilen-Parameter für den GCC
Wenn Sie den GCC aufrufen, erwartet er erst einmal Befehle (sogenannte Parameter), die angeben, was er mit dem Quellcode tun soll. gcc kennt unzählige Optionen. Die wichtigsten finden Sie in Tabelle 1.1 zusammengefasst.
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 sie 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 Levels 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). ... |
Erscheint lt. Verlag | 1.2.2024 |
---|---|
Sprache | deutsch |
Themenwelt | Informatik ► Programmiersprachen / -werkzeuge ► C / C++ |
ISBN-10 | 3-8362-9750-7 / 3836297507 |
ISBN-13 | 978-3-8362-9750-9 / 9783836297509 |
Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
Haben Sie eine Frage zum Produkt? |
Größe: 6,5 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich