Was ist der Unterschied zwischen Kompilierungscode und ausführbarem Code?

Antworten:

159

Beim Kompilieren wird Quellcode in Objektcode umgewandelt.

Beim Verknüpfen werden Objektcode mit Bibliotheken zu einer ausführbaren Rohdatei kombiniert.

Gebäude sind die Sequenz , die aus Kompilieren und Linken, mit der Sie möglicherweise anderen Aufgaben wie die Konstruktion von Setups.

Viele Compiler erledigen den Verknüpfungsschritt nach dem Kompilieren des Quellcodes automatisch.

Ignacio Vazquez-Abrams
quelle
19

Aus Wikipedia :

Auf dem Gebiet der Computersoftware bezieht sich der Begriff Software- Build entweder auf den Prozess der Konvertierung von Quellcodedateien in eigenständige Software-Artefakte, die auf einem Computer ausgeführt werden können, oder auf das Ergebnis davon. Einer der wichtigsten Schritte eines Software-Builds ist der Kompilierungsprozess , bei dem Quellcodedateien in ausführbaren Code konvertiert werden.

Während bei einfachen Programmen der Prozess aus einer einzelnen Datei besteht, die kompiliert wird, kann der Quellcode bei komplexer Software aus vielen Dateien bestehen und auf unterschiedliche Weise kombiniert werden, um viele verschiedene Versionen zu erstellen.

Codaddict
quelle
9

Ein Build kann als Skript angesehen werden, das aus vielen Schritten besteht. Der wichtigste besteht darin, den Code zu kompilieren. Andere könnten es sein

  • Tests ausführen
  • Berichterstattung (zB Berichterstattung)
  • statische Analyse
  • Schritte vor und nach dem Bau
  • Ausführen von benutzerdefinierten Tools über bestimmte Dateien
  • Installationen erstellen
  • Beschriften und Bereitstellen / Kopieren in ein Repository
Gishu
quelle
7

Sie werden oft verwendet, um dasselbe zu bedeuten. "Build" kann jedoch auch den vollständigen Prozess des Kompilierens und Verknüpfens einer gesamten Anwendung (im Fall von z. B. C und C ++) oder sogar mehr bedeuten, einschließlich unter anderem

  • Verpackung
  • automatischer Test (Einheit und / oder Integration)
  • Installer-Generierung
  • Installation / Bereitstellung
  • Dokumentation / Site-Generierung
  • Berichterstellung (z. B. Testergebnisse, Abdeckung).

Es gibt Systeme wie Maven , die dies mit dem Konzept des Lebenszyklus verallgemeinern , das aus mehreren Stufen besteht und unterschiedliche Artefakte erzeugt, möglicherweise unter Verwendung von Ergebnissen und Artefakten aus früheren Stufen.

Péter Török
quelle
5

Aus meiner Erfahrung würde ich sagen, dass "Kompilieren" sich auf die Konvertierung einer oder mehrerer von Menschen lesbarer Quelldateien in Bytecode (Objektdateien in C) bezieht, während "Erstellen" den gesamten Prozess des Kompilierens, Verknüpfen und was auch immer sonst sein muss von einem ganzen Paket oder Projekt gemacht.

chris
quelle
2

Die meisten Leute würden die Begriffe wahrscheinlich synonym verwenden. Sie konnten eine Nuance erkennen: Das Kompilieren ist nur der Schritt, bei dem Sie eine Quelldatei durch den Compiler übergeben (gcc, javac, was auch immer).

Das Erstellen kann als allgemeinerer Prozess zum Auschecken der Quelle, Erstellen eines Zielordners für die kompilierten Artefakte, Überprüfen von Abhängigkeiten, Auswählen der zu kompilierenden Elemente, Ausführen automatisierter Tests, Erstellen von Tar / Zip / Verteilungen und Pushing auf ein FTP angesehen werden , etc...

phtrivier
quelle