capribeach software : Kompilieren

Startseite :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register

Kompilieren und Linken


Der Compiler übersetzt den Quellcode

Nach dem Eintippen des Codes in die Quelltextdatei übersetzt der Compiler den C-Code in Maschinencode. Diesen Prozess nennt man Kompilieren. Es entsteht aus jeder Quellcodedatei eine Objektdatei, die nur noch binären, maschinenlesbaren Code enthält. Im Anschluss ergänzt der Linker das Programm mit den notwendigen Bestandteilen aus bereits kompilierten Bibliotheksdateien und bindet diese zu einer lauffähigen Programmdatei zusammen. Unter Windows entsteht auf diesem Wege eine Datei mit der Endung .exe. Diese kann per Mausklick gestartet werden.

compiler

Compiler für C gibt es für nahezu jedes Betriebssystem. Aufgrund der großen Verbreitung der Computersprache ist es fast immer möglich, einen C-Compiler für die gesuchte Computerumgebung zu finden. Es ist zudem möglich, C-Programme mit C++-Compilern zu übersetzen, da diese den C-Standard ebenfalls beherrschen. So können weit verbreiteten Compiler von Microsoft oder Borland auch für das Programmieren mit C genutzt werden, und kostenfreie Lösungen wie DevCPP von Bloodshed oder Code::Blocks sind ebenfalls geeignet.

Ein C-Programm, das nach den Regeln der gültigen ISO-Standards formuliert wird, kann mit jedem der Compiler erzeugt werden. Das der ISO-Standard 99 noch nicht sehr alt ist, kann es allerdings vorkommen, dass einige Compiler die jüngsten Änderungen im Standard noch nicht implementiert haben. Die auf C spezialisierte Entwicklungsumgebung Pelles C bietet bereits den vollen C99-Standard.

Es entsteht dabei wie oben gezeigt eine Programmdatei für das jeweilige Betriebssystem.

C-Programme sind plattformübergreifend nutzbar, allerdings nur solange keine speziellen Systembefehle der Betriebssysteme im Quellcode verwendet werden. Ein für Windows kompiliertes C-Programm läuft nicht auf einem anderen Betriebssystem. Der Programmierer kann allerdings den Quelltext in einem Linux-Compiler erneut übersetzen lassen und erhält auf diese Weise ein lauffähiges, kompiliertes Linux-Programm. Das gleiche gilt für weitere Betriebssysteme. Wer darauf achtet plattformunabhängigen C-Code und plattformunabhängige Bibliotheken in der Quelltextdatei zu verwenden, kann also leicht ein Programm für die verschiedenen Betriebssysteme erzeugen. Wer allerdings plattformabhängige Bibliotheken im Quellcode selbst verwendet, ist auf das jeweilige Betriebssystem festgelegt.

compiler

Der Grund dafür, dass ein C-Quellcode für jede Computerumgebung getrennt kompiliert werden musss, liegt darin, dass ein ausführbares C-Programm bereits den vollständigen Maschinencode für das Betriebssystem enthält. Und die Maschinensprache ist für die Plattformen unterschiedlich, daher müssen sie getrennt übersetzt werden. C ist eine lupenreine Compiler-Sprache. Erst das vollständig kompilierte Programm kann auf dem Rechner gestartet werden. Ein großer Vorteil ist die Schnelligkeit mit der kompilierte Programme laufen. Da sie bereits in Maschinencode vorliegen, arbeiten sie immer schneller als Programme, bei denen die Übersetzung erst zum Zeitpunkt des Programmstarts erfolgt.

Bei Interpreter-Sprachen wie beispielsweise Basic oder Python wird zum Programmstart die Quellcodedatei aufgerufen, übersetzt und bei der Umwandlung in die Programmdatei sofort ausgeführt. Ein Vorteil von Interpreter-Sprachen ist es, dass der Programmierer die einzelnen Schritte des Programmablaufes und ihre Resultate in seiner Entwicklungsumgebung direkt am Bildschirm mitverfolgen kann. Dies gilt für C nicht, hier wird immer erst eine Quelltextdatei gespeichert, diese kompiliert und das ausführbare Programm im Maschinencode erzeugt. Wer mit einer Interpreter-Sprachen programmiert, muss zudem bei der Weitergabe seines Programmes sicherstellen, dass der Anwender eine Laufzeitumgebung für die Sprache auf seinem Rechner zur Verfügung hat. Diese übernimmt die Übersetzung oder Teilübersetzung des Quellcodes und generiert zum Zeitpunkt des ersten Aufrufes des Programmes den Maschinencode für den jeweiligen Rechner.

Programme in Sprachen wie Python oder Java werden also nicht für jedes Betriebssystem einzeln kompiliert. Sie benötigen allerdings auf dem Zielrechner eine jeweils auf das Computersystem und die Programmiersprache abgestimmte Software. Im Falle von Java heißt diese Hilfssoftware Java Runtime Environment (JRE). Bei den Microsoft .NET-Sprachen wie C-Sharp ist es die Common Language Runtime (CLR).
Ein Programm zum Übersetzen und Ausführen des Python-Quellcodes (Interpreter) ist bei Linux in der Regel bereits vorinstalliert. Auch die .NET CLR steht in den neuesten Versionen der Microsoft-Betriebssysteme automatisch bereit.

C-Programmierer haben die Wahl zwischen einer Vielzahl von Compilern und komfortablen integrierten Entwicklungs-Umgebungen (IDE, Integrated Development Environments). Vor allem die IDEs machen das Erstellen der Programme zu einem Kinderspiel. Während frühere Generationen noch mühsam verschiedene Programmerstellungs-Phasen quasi per Hand ausführen mussten, kann heute jeder mit Hilfe einer IDE auf Knopfdruck „Kompilieren“, „Binden“, „Linken“ und „Debuggen“.

Konsolen und Grafikfenster
Für die ersten Schritte mit der Programmiersprache C sind Konsolenprogramme die einfachste Variante. Dabei werden die Ergebnisse des Programmcodes in einem schmucklosen Textfenster ausgegeben, ohne jegliche Grafikelemente. Unter dem Betriebssystem Windows ist die Konsoleneingabe über das Startmenü unter den Zubehörprogrammen zu finden und heißt schlicht „Eingabeaufforderung“. Es erscheint die Systemkonsole, ein schwarzes Fenster mit der Angabe des Laufwerkes, auf dem sich der Benutzer gerade befindet. Wenn im Zusammenhang mit dem Programmieren von Konsolenprogrammen die Rede ist, bedeutet es, dass keine Grafikoberfläche bei der Ausführung geboten wird. Windows-Programme mit der gewohnten Fensteroberfläche mit Menüs und Dialogboxen sind nur über den Aufruf von entsprechenden Grafikbibliotheken möglich. Die Windows-Schnittstelle Win32-API ist komplett in C programmiert und daher direkt mit C-Aufrufen nutzbar. Die Win32-API stellt alle Funktionen zur Fensterprogrammierung zur Verfügung.


CategoryC


There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki
Page was generated in 0.0440 seconds