logo

Kompilierungsprozess in c

Was ist eine Zusammenstellung?

Die Kompilierung ist ein Prozess der Konvertierung des Quellcodes in Objektcode. Dies geschieht mit Hilfe des Compilers. Der Compiler prüft den Quellcode auf syntaktische oder strukturelle Fehler und generiert bei fehlerfreiem Quellcode den Objektcode.

Kompilierungsprozess in c

Der C-Kompilierungsprozess konvertiert den als Eingabe verwendeten Quellcode in den Objektcode oder Maschinencode. Der Kompilierungsprozess kann in vier Schritte unterteilt werden, nämlich Vorverarbeitung, Kompilierung, Assemblierung und Verknüpfung.

Der Präprozessor nimmt den Quellcode als Eingabe und entfernt alle Kommentare aus dem Quellcode. Der Präprozessor übernimmt die Präprozessoranweisung und interpretiert sie. Zum Beispiel, wenn , Wenn die Direktive im Programm verfügbar ist, interpretiert der Präprozessor die Direktive und ersetzt diese Direktive durch den Inhalt des 'stdio.h' Datei.

Fabrikdesignmuster

Die folgenden Phasen durchläuft unser Programm, bevor es in eine ausführbare Form umgewandelt wird:

    Präprozessor Compiler Monteur Linker
Kompilierungsprozess in c

Präprozessor

Der Quellcode ist der Code, der in einem Texteditor geschrieben wird, und die Quellcodedatei erhält die Erweiterung „.c“. Dieser Quellcode wird zunächst an den Präprozessor übergeben, und dann erweitert der Präprozessor diesen Code. Nach der Erweiterung des Codes wird der erweiterte Code an den Compiler übergeben.

Compiler

Der vom Präprozessor erweiterte Code wird an den Compiler übergeben. Der Compiler wandelt diesen Code in Assembler-Code um. Oder wir können sagen, dass der C-Compiler den vorverarbeiteten Code in Assembler-Code umwandelt.

Monteur

Der Assemblercode wird mithilfe eines Assemblers in Objektcode umgewandelt. Der Name der vom Assembler generierten Objektdatei ist derselbe wie der der Quelldatei. Die Erweiterung der Objektdatei lautet unter DOS „.obj“ und unter UNIX lautet die Erweiterung „o“. Wenn der Name der Quelldatei lautet 'Hallo c', dann wäre der Name der Objektdatei „hello.obj“.

Linker

Hauptsächlich verwenden alle in C geschriebenen Programme Bibliotheksfunktionen. Diese Bibliotheksfunktionen sind vorkompiliert und der Objektcode dieser Bibliotheksdateien wird mit der Erweiterung „.lib“ (oder „.a“) gespeichert. Die Hauptfunktion des Linkers besteht darin, den Objektcode von Bibliotheksdateien mit dem Objektcode unseres Programms zu kombinieren. Manchmal kommt es vor, dass unser Programm auf die in anderen Dateien definierten Funktionen verweist; Dann spielt der Linker dabei eine sehr wichtige Rolle. Es verknüpft den Objektcode dieser Dateien mit unserem Programm. Daher kommen wir zu dem Schluss, dass die Aufgabe des Linkers darin besteht, den Objektcode unseres Programms mit dem Objektcode der Bibliotheksdateien und anderer Dateien zu verknüpfen. Die Ausgabe des Linkers ist die ausführbare Datei. Der Name der ausführbaren Datei ist derselbe wie der der Quelldatei, unterscheidet sich jedoch nur in ihren Erweiterungen. Unter DOS lautet die Erweiterung der ausführbaren Datei „.exe“, und unter UNIX kann die ausführbare Datei „a.out“ heißen. Wenn wir beispielsweise die Funktion printf() in einem Programm verwenden, fügt der Linker den zugehörigen Code in einer Ausgabedatei hinzu.

Lassen Sie es uns anhand eines Beispiels verstehen.

Hallo c

 #include int main() { printf('Hello javaTpoint'); return 0; } 

Jetzt erstellen wir ein Flussdiagramm des obigen Programms:

Kompilierungsprozess in c

Im obigen Flussdiagramm werden die folgenden Schritte ausgeführt, um ein Programm auszuführen:

  • Erstens die Eingabedatei, d. h. Hallo c, wird an den Präprozessor übergeben und der Präprozessor wandelt den Quellcode in erweiterten Quellcode um. Die Erweiterung des erweiterten Quellcodes wäre Hallo ich.
  • Der erweiterte Quellcode wird an den Compiler übergeben und der Compiler konvertiert diesen erweiterten Quellcode in Assemblercode. Die Erweiterung des Assembler-Codes wäre hallo.s.
  • Dieser Assembler-Code wird dann an den Assembler gesendet, der den Assembler-Code in Objektcode umwandelt.
  • Nach der Erstellung eines Objektcodes erstellt der Linker die ausführbare Datei. Der Loader lädt dann die ausführbare Datei für die Ausführung.