Inhaltsverzeichnis
Erstens: C/C++-Compiler gcc, cc, c++, g++ in Linuxgcc enthalten
Zweitens: GCC-Funktionen
Drittens: laufender gcc-Prozess
Viertens: GCC-Option
Fünftens: Einige der vereinbarten Regeln, die von gcc befolgt werden
Erstens: C/C++-Compiler gcc, cc, c++, g++ in Linuxgcc enthalten
Unter diesen sind gcc und cc gleich, C++ und g++ sind normalerweise gleich. C-Sprachprogramme werden mit gcc kompiliert. So kompilieren Sie Linux mit gcc . Zweitens: GCC-Funktionen gcc ist ein tragbarer Compiler, der mehrere Hardwareplattformen unterstützt. Wie ARM, X86 usw.
Gcc ist nicht nur ein lokaler Compiler, sondern kann auch plattformübergreifend kompilieren. Der sogenannte lokale Compiler bedeutet, dass das kompilierte Programm nur in der lokalen Umgebung ausgeführt werden kann. Auf anderen Plattformen können nur von gcc kompilierte Programme ausgeführt werden.
gcc verfügt über mehrere Sprach-Backends zum Parsen verschiedener Sprachen. Darüber hinaus ist gcc ein modular aufgebauter Linux-VI-Befehl, der Unterstützung für neue Sprachen und neue CPU-Architekturen hinzufügen kann. gcc ist freie Software. Jeder kann diese Software nutzen oder verändern.
Drittens: GCC-Laufprozess
(1) Geben Sie gcctest.c
in der Befehlszeile einDadurch wird standardmäßig ein Programm mit dem Namen a.out kompiliert,
Geben Sie in der Befehlszeile ein: ./a.out
Sie können das Programm ausführen.
(2) Wenn Sie in der Befehlszeile Folgendes eingeben: gcctest.c-otest
Dadurch wird ein Programm namens test kompiliert
Geben Sie in der Befehlszeile ein: ./test
Sie können das Programm ausführen.
Hinweis: Der Parameter -o wird verwendet, um den Namen des generierten Programms anzugeben
(3) Schritt-für-Schritt-Ausführung der Linux-Betriebssystemversion, genaueres Bild
Es enthält 4 Prozesse:
1. Vorverarbeitung
Im Wesentlichen werden 4 Vorgänge ausgeführt (einschließlich Erweiterung von Header-Dateien, Entfernung von Kommentaren, Makroersetzung und bedingte Kompilierung),
Spezifischer Vorgang: Befehlszeileneingabe: gcc-Etest.c-otest.i
Dieser Befehl bedeutet: Nach Abschluss des ersten Schritts der Vorverarbeitung wird dieser gestoppt und der temporäre Inhalt wird in der Datei test.i gespeichert
2.Kompilieren
Die Essenz besteht darin, die C-Sprache in eine Assemblersprache umzuwandeln
Spezifischer Vorgang: Befehlszeileneingabe: gcc-Stest.i-otest.s
Dieser Befehl bedeutet: Nach dem zweiten Kompilierungsschritt wird er gestoppt und der temporäre Inhalt wird in der Datei test.s gespeichert
3.Zusammenstellung
Die Essenz besteht darin, die Assemblersprache in eine Ziel-Zweierkomplementdatei (nicht ausführbar) umzuwandeln
Spezifischer Vorgang: Befehlszeileneingabe: gcc-ctest.s-otest.o
Dieser Befehl bedeutet: Nach Abschluss des dritten Montageschritts wird er angehalten und der temporäre Inhalt wird in der test.o-Datei gespeichert
4.Link
Der Kern besteht darin, die Bibliotheken von Drittanbietern einzuführen, die wir im Code verwenden, um ausführbare Dateien oder Bibliotheksdateien zu generieren
(Bibliotheken von Drittanbietern werden durch den Compiler und das Dateisuffix bestimmt)
Viertens: GCC-Option
-E führt nur Vorverarbeitungsvorgänge aus
-S kompiliert bis zum Assembly-Stopp (assembliert nicht, schließt nur die Vorverarbeitung und Kompilierung ab)
-c führt Assembleroperationen aus (kompiliert in Assemblercode)
-O[0,1,2,3]
Optimierungsprogramm (Standard ist Optimierungsstufe 2, 0 ist nicht optimiert, 3 ist die höchste Optimierungsstufe)
-static verwendet statische Verknüpfungen für generierte Dateien
-gemeinsamer Versuch, dynamische Bibliotheken zu verwenden
-Idir
Fügen Sie das Verzeichnis dir zum Verzeichnispfad für die Suche nach Header-Dateien hinzu
-Ldir
Fügen Sie das Verzeichnis dir zum Verzeichnispfad der Suchbibliothek hinzu
-llib
Lib-Bibliothek verbinden
-Wall veranlasst gcc, Warnmeldungen für Codeprobleme in Quelldateien auszugeben
-WGeben Sie keine Warnmeldungen aus
-g generiert Debugging-Informationen in der Zieldatei, um das Debuggen durch Debugger wie gdb zu erleichtern
Das obige ist der detaillierte Inhalt vonc/c++-Compiler, der den Prozess basierend auf der Befehlszeileneingabe ausführt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!