GNU C und C ++ Compiler für Linux

Die wichtigste Software-Entwicklungs-Tool in Linux ist GCC - der GNU-C und C ++ Compiler. In der Tat kann GCC drei Sprachen kompiliert: C, C ++ und Objective-C (eine Sprache, die Fähigkeiten C objektorientierte Programmierung hinzufügt).

Menu

Sie verwenden die gleiche gcc Befehl zu kompilieren und zu verknüpfen beide C und C ++ Quelldateien. Der GCC Compiler unterstützt ANSI-Standard-C, ist es einfach zu portieren jede ANSI-C-Programm auf Linux zu machen. wenn Sie jemals einen C-Compiler auf anderen Unix-Systemen Darüber hinaus verwendet haben, sollten Sie sich wie zu Hause mit GCC fühlen.

Mit GCC

Verwenden Sie die gcc Befehl GCC aufzurufen. In der Standardeinstellung, wenn Sie die gcc Befehl auf einer Quelldatei, GCC vorverarbeitet, kompiliert und Verknüpfungen eine ausführbare Datei zu erstellen. Sie können jedoch GCC-Optionen verwenden, diesen Prozess in einem Zwischenstadium zu stoppen.

Zum Beispiel könnten Sie aufrufen gcc durch die Verwendung von -c Option, um eine Quelldatei zu kompilieren und eine Objektdatei zu erzeugen, aber nicht den Link Schritt auszuführen.

Mit GCC ein paar C-Quelldateien zu kompilieren und zu verknüpfen ist einfach. Angenommen, Sie möchten ein einfaches Programm zu kompilieren und zu verknüpfen aus zwei Quelldateien gemacht. Um diese Aufgabe zu erfüllen, verwenden Sie die folgende Programmquelle Code- die Aufgabe, die in der Datei gespeichert wird area.c berechnet die Fläche eines Kreises, dessen Radius in der Befehlszeile angegeben wird.

Kompilieren C ++ Programme

GNU CC ist eine Kombination aus C und C ++ Kompilierer, so das gcc Befehl kann auch C ++ Quelldateien kompilieren. GCC verwendet die Dateierweiterung, um zu bestimmen, ob eine Datei ist C oder C ++. C-Dateien haben eine Klein .c Erweiterung, während C ++ Dateien enden mit .C oder .cav.

Obwohl die gcc Befehl kann eine C ++ Datei zu kompilieren, dass der Befehl Verknüpfung nicht automatisch mit verschiedenen Klassenbibliotheken, die C ++ Programme in der Regel erforderlich. Kompilieren und Verknüpfen eines C ++ Programm durch die Verwendung von g ++ Befehl ist einfach, weil es läuft gcc mit entsprechenden Optionen.

Explo GCC-Optionen

Hier ist die grundlegende Syntax von der gcc Befehl:

gcc-Optionen Dateinamen

Jede Option beginnt mit einem Bindestrich (-) und hat in der Regel einen langen Namen, wie zum Beispiel -funsigned-char oder -Rippenleitungsfunktionen. Viele häufig verwendete Optionen sind kurz, aber wie -c, nur zu kompilieren, und -g, Debug-Informationen zu generieren (benötigt, um das Programm zu debuggen, indem Sie den GNU-Debugger, gDB).

Sie können, indem Sie den folgenden Befehl in einem Terminal-Fenster eine Zusammenfassung aller GCC-Optionen anzuzeigen:

Mann gcc

Dann können Sie die üblicherweise verwendeten GCC Optionen durchsuchen. Normalerweise müssen Sie nicht explizit GCC Optionen bieten, da die Standardeinstellungen sind in Ordnung für die meisten Anwendungen. In dieser Tabelle sind einige der GCC Optionen, die Sie verwenden können.

Gemeinsame GCC-Optionen
OptionBedeutung
-ansiUnterstützt nur ANSI-Standard-C-Syntax. (Diese Option disablessome GNU C-spezifische Funktionen, wie the_asm and_Art derSchlüsselwörter.) Wenn Sie mit g ++ verwendet, unterstützt nur ISO-Standard C ++.
-cStellt zusammen und bildet nur die Objektdatei.
-DMACRODefiniert das Makro mit der Zeichenfolge "1"als Wert.
-DMACRO = DEFNDefiniert das Makro als DEFN, woherDEFN ist ein Text-String.
-ELäuft nur den C-Präprozessor.
-Brache-Single-PrecisionFührt alle mathematischen Berechnungen in einfacher Genauigkeit.
-FPCC-Strukt-RückkehrGibt alle struct und die Werte der Union im Speicher, anstatt inregisters. (Rückgabe von Werten auf diese Weise ist weniger effizient, aber atleast ist es kompatibel mit anderen Compilern.)
-fPICErzeugt positionsunabhängigen Code (PIC) für den Einsatz in ashared Bibliothek.
-freg-Strukt-RückkehrWenn möglich, Retouren struct undUnion Werte Register.
-GErzeugt Debug-Informationen. (Der GNU Debugger kann dieser Information verwenden.)
-I VERZEICHNISSucht nach dem angegebenen Verzeichnis für Dateien, die Sie umfassen die durchverwenden #einschließen preprocessordirective.
-L-KATALOGSucht nach dem angegebenen Verzeichnis für Bibliotheken.
-l BIBLIOTHEKDurchsucht die angegebene Bibliothek bei der Verknüpfung.
-mcpu = CPUTYPEOptimiert Code für einen bestimmten Prozessor. (CPUTYPE können viele verschiedene Werte annehmen -Einige häufigsten sind i386, i486, i586, i686, pentium, PentiumPro, Pentium2, pentium3, pentium4.)
-o FILEErzeugt die angegebene Ausgabedatei (verwendet, um die nameof eine ausführbare Datei benennen).
-00 (zwei Nullen)Nicht optimiert.
-O oder -O1 (Buchstabe O)Optimiert den generierten Code.
-O2 (Buchstabe O)Optimiert noch mehr.
-O3 (Buchstabe O)Führt Optimierungen über diejenigen getan für -O2
-Os (Buchstabe O)Optimiert für die Größe (die Gesamtmenge an Code zu reduzieren).
-pedantischErzeugt Fehler, wenn alle nicht-ANSI-Standard-Erweiterungen areUsed.
-pgso fügt zusätzlichen Code für das Programm, dass bei der Ausführung, programgenerates diese Informationen, dass die gprofProgramm kann Timing Details für verschiedene Teile von TheProgram anzuzeigen verwenden.
-gemeinsam genutztErzeugt eine Shared Object-Datei (in der Regel verwendet, um ashared Bibliothek zu erstellen).
-UMACROUndefines die angegebenen Makros.
-vZeigt die GCC-Versionsnummer.
-wErzeugt keine Warnmeldungen.
-W1, OPTIONPässe der OPTION Zeichenkette (mit multiplecomma getrennte Optionen) an den Linker. Zur Erstellung eines gemeinsamen librarynamed libXXX.so.1, zum Beispiel verwenden thefollowing Flagge: -wl,-soname, libXXX.so.1.

Menü