|
|
| (23 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| Der GNU C Compiler, häufig als GCC (GNU Compiler Collection) bezeichnet, ist ein weit verbreiteter Compiler, der ursprünglich für die Programmiersprache C entwickelt wurde. Heute unterstützt GCC eine Vielzahl von Programmiersprachen und Prozessorarchitekturen. Hier sind einige wichtige Punkte über den GNU C Compiler: | | Der GNU C Compiler, häufig als GCC (GNU Compiler Collection) bezeichnet, ist ein weit verbreiteter Compiler, der ursprünglich für die Programmiersprache C entwickelt wurde. Heute unterstützt GCC eine Vielzahl von Programmiersprachen und Prozessorarchitekturen. Hier sind einige wichtige Punkte über den GNU C Compiler: |
|
| |
|
| == Geschichte und Entwicklung ==
| | *[[Geschichte und Entwicklung]] |
| GCC wurde von Richard Stallman als Teil des GNU-Projekts entwickelt und 1987 erstmals veröffentlicht. Es war ein wichtiger Bestandteil der GNU-Initiative zur Entwicklung einer komplett freien Unix-ähnlichen Betriebssystemumgebung.
| | *[[Hauptmerkmale]] |
| | *[[Verwendung und Befehlszeilenoptionen]] |
| | *[[Präprozessor-Direktiven]] |
| | *[[Präfixoperatoren]] |
| | *[[Infix-Operatoren]] |
| | *[[Bedingte Kompilierung]] |
| | *[[Makros]] |
| | *[[Kommentare]] |
|
| |
|
| Ursprünglich als reiner C-Compiler konzipiert, wurde GCC im Laufe der Jahre erweitert, um auch andere Sprachen wie C++, Fortran, Ada, und viele mehr zu unterstützen.
| | ----- |
| == Hauptmerkmale ==
| |
| * Mehrsprachigkeit: Neben C unterstützt GCC eine Vielzahl von Programmiersprachen, darunter C++, Objective-C, Fortran, Ada, Go und D.
| |
| * Plattformübergreifend: GCC ist äußerst portabel und läuft auf einer Vielzahl von Betriebssystemen und Hardwareplattformen, von eingebetteten Systemen bis hin zu Supercomputern.
| |
| * Optimierungen: GCC bietet eine Vielzahl von Optimierungsoptionen, die es Entwicklern ermöglichen, den erzeugten Maschinencode für verschiedene Ziele zu optimieren, wie z.B. Geschwindigkeit, Speicherplatz oder Energieverbrauch.
| |
| * Modularität: GCC besteht aus mehreren modularen Komponenten, darunter Frontends für verschiedene Programmiersprachen und Backends für verschiedene Architekturen.
| |
| == Verwendung und Befehlszeilenoptionen ==
| |
| Der grundlegende Befehl zur Kompilierung eines C-Programms lautet:
| |
| gcc -o ausgabe programm.c
| |
| Hierbei wird der Quellcode ''programm.c'' kompiliert und die ausführbare Datei ''ausgabe'' erzeugt.
| |
| === Optimierungsoptionen ===
| |
| Einige gängige Optimierungsoptionen sind:
| |
| *-O1, -O2, -O3: Verschiedene Stufen der Code-Optimierung.
| |
| *-Os: Optimiert den Code für eine kleinere Größe.
| |
| *-Ofast: Aktiviert aggressive Optimierungen.
| |
| === Debugging ===
| |
| Die Option -g fügt Debugging-Informationen hinzu, die von Debuggern wie GDB verwendet werden können:
| |
| gcc -g -o ausgabe programm.c
| |
| === Warnungen ===
| |
| GCC bietet eine Vielzahl von Warnoptionen, um potenzielle Probleme im Code zu identifizieren, z.B. -Wall, -Wextra, -Werror.
| |
| === Erweiterbarkeit und Community ===
| |
| GCC unterstützt Plugins, die Entwicklern ermöglichen, den Compiler zu erweitern und anzupassen.
| |
|
| |
|
| GCC wird unter der GNU General Public License (GPL) veröffentlicht, was bedeutet, dass der Quellcode frei verfügbar ist und jeder ihn einsehen, modifizieren und weiterverbreiten kann.
| | {| style="width: 100%; |
| | | | style="width: 33%;" | [[GNU Assembler|< Zurück (GNU Assembler)]] |
| GCC hat eine große und aktive Community, die kontinuierlich zur Weiterentwicklung und Verbesserung des Compilers beiträgt.
| | | style="width: 33%; text-align:center;" | [[Hauptseite|< Hauptseite >]] |
| === Beispiele === | | | style="width: 33%; text-align:right;" | [[Geschichte und Entwicklung|Weiter (Geschichte und Entwicklung) >]] |
| Ein einfaches C-Programm kann wie folgt kompiliert werden:
| |
| <syntaxhighlight lang="C">
| |
| #include <stdio.h>
| |
| | |
| int main() {
| |
| printf("Hello, World!\n");
| |
| return 0;
| |
| }
| |
| </syntaxhighlight>
| |
| Kompiliere es mit:
| |
| gcc -o hello hello.c
| |
| ./hello
| |
| | |
| == Präprozessor-Direktiven ==
| |
| Präprozessor-Direktiven sind Anweisungen, die vor der eigentlichen Kompilierung des Codes durch den C-Präprozessor verarbeitet werden. Diese Direktiven beginnen immer mit dem #-Zeichen und können eine Vielzahl von Aufgaben erfüllen, wie z.B. das Einfügen von Header-Dateien, das Definieren von Makros, das Bedingungskompilieren und mehr. Hier sind einige der wichtigsten Präprozessor-Direktiven, die im GCC verwendet werden:
| |
| {| class="wikitable"
| |
| |+ Präprozessor-Direktiven
| |
| |-
| |
| | #include || Diese Direktive wird verwendet, um den Inhalt einer anderen Datei in die aktuelle Datei einzufügen
| |
| |- | |
| | #define <br /> #undef || Mit #define können Makros definiert werden. Makros sind Platzhalter, die durch ihren definierten Wert ersetzt werden, bevor die eigentliche Kompilierung beginnt. <br />#undef wird verwendet, um eine zuvor definierte Makrodefinition aufzuheben.
| |
| |- | |
| | #if<br />#ifdef<br />#ifndef<br />#else<br />#elif<br />#endif || Diese Direktiven ermöglichen die bedingte Kompilierung von Codeabschnitten. Dies ist besonders nützlich für plattformspezifischen Code oder für das Ein- und Ausschalten von Debugging-Funktionen. | |
| |} | | |} |