Kompilieren und Linken von Anwendungen mit Makefiles

Wenn Sie eine Anwendung erstellen, schreiben Sie Ihren Code in verschiedenen Quellcodedateien. Für eine Anwendung können Sie viele verschiedene Quellcode-Dateien. Einige große Unternehmensprojekte haben hunderte (oder sogar Tausende) von Quellcode-Dateien mit Dutzenden von Programmierer arbeiten an den verschiedenen Dateien.

Wie Sie sich vorstellen können, Dutzende von willensstark Programmierer arbeiten zusammen sorgt für eine ganz Erlebnis- aber durch Tools wie mit machen, diese Programmierer können leicht zusammen zu arbeiten.

Um diese Quellcodedateien in einer einzigen Anwendung umwandeln, müssen Sie zu kompilieren und zu verknüpfen.

Zusammenstellung bedeutet, dass Ihr C ++ Code (oder was auch immer von Ihnen verwendete Sprache) in eine maschinenlesbare Sprache namens Assembler verwandeln. Die Assembler-Sprache unterscheidet zwischen Arten von Prozessoren. Die meisten von Ihnen die Lektüre dieses Buches arbeiten wahrscheinlich auf irgendeiner Version von AMD oder Intel-Prozessor, so dass die C ++ Compiler Sie verwenden in der Regel Ihre Anwendungen in Assembler-Code zu übersetzen (auch als Maschinencode), das ist angemessen für den Prozessor auf Ihrem System.

Sie können auch den Compiler sagen, einen anderen Prozessor in vielen Fällen zu zielen. Der Compiler stopft all diesen Assembler-Code in eine Datei ein genannt Objektdatei und in der Regel Namen der Datei die gleiche wie die Original-Quellcode-Datei, aber mit ein .obj oder .O Erweiterung. Für jede Quellcodedatei, macht der Compiler eine einzige Objektdatei.

Nachdem Sie alle Quellcode-Dateien erstellt haben, führen Sie den Linker. Das Linker nimmt die Objektdateien und kombiniert sie in einer einzigen Datei, die Sie auf Ihrem Computer ausgeführt werden können. Diese Datei wird in der Regel ein .exe Erweiterung, das steht für executable.

Der Ursprung dieser Begriff stammt aus Ausführung, die bezieht sich auf die Ausführung einer Anwendung und hatte wahrscheinlich etwas mit dem zu tun, was der Benutzer des ersten Computeranwendung wollte nach der Verwendung der Anwendung für den Programmierer zu tun.

Der Linker kann andere Arten von Ausgabedateien erzeugen. Zum Beispiel können Sie eine erstellen .lib (Bibliothek) oder .dll (Dynamic Link Library oder DLL-Datei). Diese Dateien enthalten ausführbaren Code, ebenso wie die EXE-Datei funktioniert, aber Sie führen sie nicht als Stand-alone-Dateien - ein .exe Datei normalerweise lädt sie und verwendet den ausführbaren Code enthalten sie.

Der Compiler fügt auch in das Objekt eine große Menge an Informationen zusätzlich zu den Assembler-Code-Dateien. Zum Beispiel, wenn Sie sich noch im Prozess der Entwicklung Ihrer Anwendung sind, können Sie den Compiler anweisen, Debug-Informationen in der Datei setzen. (Obwohl es manchmal die Debug-Informationen geht in einem separaten File- es auf dem Compiler abhängig ist.)

Debug-Informationen enthält die Namen Ihrer Variablen und den Zeilennummern des Quellcodes. Wenn Sie einen Debugger-Tool verwenden, weiß, dass das Werkzeug über Ihren Code durch an der Debug-Informationen.

Der Compiler stellt auch Informationen über den Code, wie beispielsweise die Namen von Elementen, die, in anderen Quellcodedateien auftreten. Zum Beispiel, wenn Sie Code schreiben, der Code in einer anderen Quellcodedatei aufruft, nimmt der Compiler den Namen dieser Code in der Objektdatei. Auf diese Weise kann der Linker die beiden verbinden.

Schließlich kann ein Compiler Ressourcen auf die Objektdateien wie Grafiken hinzufügen und Klänge, die Ihre Anwendung erfordert. Diese Ressourcen werden als Daten, die die Anwendung später zugreift. Daten erscheinen in getrennten Bereichen von ausführbaren Code in der Datei, aber Sie brauchen sich nicht um die Objektdatei Organisation zu kümmern - der Compiler kümmert sich sowohl Code und Daten für Sie zu verwalten.

Menü