Ist g++ sowohl ein c++ - compiler und linker?
Schaute ich mir die Ausgabe von meinem build in Eclipse. Ich bin cross-compiling für ein ColdFire Prozessor. Die Zusammenstellung Zeile sieht wie folgt aus:
m68k-elf-g++ -O2 -falign-functions=4 -IC:\nburn\include -IC:\nburn\MOD52...
gefolgt von mehreren include-Datei, offensichtlich "compiler" - Optionen und schließlich die eine Quell-Datei, die ich geändert. Die nächste Zeile ruft das gleiche Werkzeug wieder:
m68k-elf-g++ src\main.o src\TouchPanelMediator.o src\Startup.o....
weitere Folgen .o-Dateien einige .ld-Dateien und einige .a-Dateien. Dies scheint die Verknüpfung all der verschiedenen Arten von Objekt-Dateien zusammen.
In die Gnu-Familie ist die g++ einige uber-Anwendung, die bestimmen können, basierend auf Argumenten, ob es braucht, um zu kompilieren oder einen link? Gibt es beide Funktionen built-in, oder ist es nur Versand kompilieren von gcc und die Verlinkung zu ld und mein log gerade nicht zeigen?
- [stackoverflow.com/questions/172587/... ... das könnte helfen
- Danke, ich durchsucht, bevor Sie Fragen, aber ich denke nicht gut genug, obwohl ich die Antwort zu finden, ich habe hier prägnant und vollständig sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
g++
undgcc
sind Treiber. In der Regel laufen Sie den Präprozessor (cpp
), compiler proper (cc1plus
für C++ undcc1
für C) und der linker (gold-oder GNU-ld) und alle anderen Dinge notwendig. Der Unterschied zwischengcc
undg++
ist, dass die letztere enthält eine zusätzliche Bibliothek zu verlinken, die gegen (libstdc++
).Je nachdem, auf welche Art von Datei, die Sie aufgerufen werden, können Sie einige Schritte weglassen oder es anders machen. Für
.o
- Dateien, es muss nicht laufen der compiler die richtige oder den Präprozessor, zum Beispiel.Wenn Sie pass
-###
zu Ihnen, Sie können es sehen, drucken Sie die tools, die es ruft in jedem Schritt der Ausführung.Entnommen dieses kleine GCC guide:
Mit einem netten kleinen Flussdiagramm von was GCC genau ist, je nachdem, welche Datei-Erweiterungen:
Löst die Verknüpfung auf ld.
Siehe auch hier:
Wie man GCC linker-Befehl?