Was ist mit Compilieren und linken gemeint?
Hallo. Wie ich es verstanden habe: Unter einen Compiler versteht man ein Programm, welches Compiliert. Compilieren bedeutet hier das man den Text in die Computer sprache übersetzt. Ist das richtig? Und was ist mit linken gemeint? Außerdem in c++ habe ich folgende situation,( programm name main.cpp):
- g++ -c main.cpp
- g++ -o A unit.o main.o
g++ ist ja der compiler. -c steht für kompilieren. und schritt 2 ist ja das zusammen linken. Was bedeutet das zusammen linken? Und warum steht da bei main aufeinmal .o am ende? Heißt das alle datein mit .o enden das sie schon in Computersprache übersetzt wurden?
Außerdem was ist der Unterschied von oben zu:
g++ -g -std=c++17 -o A main.cpp unit.o
Danke
3 Antworten
Compilieren ist übesetzen des Quellcodes in Maschinencode. Dabei einsteht ein object file (.o).
Das Linken ist das zusammenführen der Objekte zu einem Ganzen, beispielsweise einem Executeable, das dann ausgeführt werden kann.
Für gcc gilt: -g erzeugt Debug-Symbole, -std gibt den gewünschten Sprachstandard an.
Ein Programm kann beim Programmieren in hunderte einzelne Dateien aufgespalten werden, um diese nach Themen zu trennen.
Beim Compilieren wird jede dieser menschlich lesbaren Dateien übersetzt in Code, den der Computer direkt mit dessen CPU ausführen kann.
Diese übersetzten Dateien müssen als letzter Schritt mit einem Linker zu einer ausführbaren Datei / Programm zusammengesetzt werden. Das ist das Linken mit einem Linker. Wort kommt von Link = Kettenglied.
compilieren = den menschlich lesbaren Quelltext in computerlesbaren Programmcode verwandeln
linken = den erzeugten Programmcode aus verschiedenen Quellen zusammenfügen und zu einem Programm verbinden (z.B. aus den eigenen Dateine, zugekauften Komponenten, Bibliotheken usw)