Kompilieren und Linken



Ähnliche Dokumente
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Die Post hat eine Umfrage gemacht

Professionelle Seminare im Bereich MS-Office

Sie werden sehen, dass Sie für uns nur noch den direkten PDF-Export benötigen. Warum?

Alle gehören dazu. Vorwort

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Zeichen bei Zahlen entschlüsseln

Was meinen die Leute eigentlich mit: Grexit?

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Objektorientierte Programmierung für Anfänger am Beispiel PHP

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Leichte-Sprache-Bilder

Das Persönliche Budget in verständlicher Sprache

Kleines Handbuch zur Fotogalerie der Pixel AG

Welche Bereiche gibt es auf der Internetseite vom Bundes-Aufsichtsamt für Flugsicherung?

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

proles-login. Inhalt [Dokument: L / v1.0 vom ]

Inkrementelles Backup

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Artikel Schnittstelle über CSV

Step by Step Webserver unter Windows Server von Christian Bartl

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Anleitung über den Umgang mit Schildern

Erstellen von x-y-diagrammen in OpenOffice.calc

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 14 und VMware Player

Wir machen uns stark! Parlament der Ausgegrenzten

Durchführung der Datenübernahme nach Reisekosten 2011

Print2CAD 2017, 8th Generation. Netzwerkversionen

Hinweise in Leichter Sprache zum Vertrag über das Betreute Wohnen

Statuten in leichter Sprache

Nicht über uns ohne uns

Eine Einführung in die Installation und Nutzung von cygwin

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Modul 2: Automatisierung des Posteingangs - Regel- und Abwesenheits-Assistent

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Das Leitbild vom Verein WIR

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Informationen zur Verwendung von Visual Studio und cmake

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Mehrere PDF-Dokumente zu einem zusammenfügen

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

WAS finde ich WO im Beipackzettel

* Leichte Sprache * Leichte Sprache * Leichte Sprache *

YouTube: Video-Untertitel übersetzen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

Was ist Sozial-Raum-Orientierung?

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Tevalo Handbuch v 1.1 vom

mit dem TeXnicCenter von Andreas Both

AutoCAD Dienstprogramm zur Lizenzübertragung

Workshop: Eigenes Image ohne VMware-Programme erstellen

Erstellen einer digitalen Signatur für Adobe-Formulare

Denken und Träumen - Selbstreflexion zum Jahreswechsel

Grundlagen der Theoretischen Informatik, SoSe 2008

! " # $ " % & Nicki Wruck worldwidewruck

Festplatte defragmentieren Internetspuren und temporäre Dateien löschen

Änderungsbeschreibung HWS32 SEPA Überweisungen

Windows 10 > Fragen über Fragen

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Rillsoft Project - Installation der Software

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

Anleitung zum Computercheck Windows Firewall aktivieren oder eine kostenlose Firewall installieren

Lernwerkstatt 9 privat- Freischaltung

Was ist das Budget für Arbeit?

Qt-Projekte mit Visual Studio 2005

Visual Basic Express Debugging

10.1 Auflösung, Drucken und Scannen

DeltaVision Computer Software Programmierung Internet Beratung Schulung

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 11 und VMware Player

ALF-BanCo - Chipkarte einrichten in 3 Schritten

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

teamsync Kurzanleitung

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Professionelle Seminare im Bereich MS-Office

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

2. Word-Dokumente verwalten

Professionelle Seminare im Bereich MS-Office

Pflegende Angehörige Online Ihre Plattform im Internet

ALEMÃO. Text 1. Lernen, lernen, lernen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Niedersächsisches Kultusministerium. Die wichtigsten Fragen und Antworten zur inklusiven Schule. - Leichte Sprache - Niedersachsen

-Inhalte an cobra übergeben

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Informatik I Tutorial

Transkript:

Kapitel 2 Kompilieren und Linken Bevor wir uns auf C++ selbst stürzen, brauchen wir einiges Vorgeplänkel, wie man komfortabel ein größeres C++- kompilieren kann. Mit Java stellt sich der Kompiliervorgang folgendermaßen dar: Bytecode JVM Der Java- wird durch den Java-Compiler in Java-Bytecode übersetzt. Dieser wird von der Java Virtual Machine (JVM) ausgeführt. Ohne diese kann das Betriebssystem nicht viel mit dem Kompilat anfangen. In C++ (wie auch in C, Fortran, Pascal) sieht es jedoch etwas anders aus: Das Endergebnis ist ein, das direkt auf dem Betriebssystem aufsetzt. So etwas wie eine virtuelle Maschine ist zum Ausführen des es nicht notwendig. Dies war allerdings eine sehr grobe Sicht der Dinge. Wenn man es etwas genauer nimmt, dann stellt sich die Situation komplizierter dar: 7

Linker Man kompiliert den C++-Code zuerst und erhält dadurch für jede Quelldatei eine Objektdatei. Diese Objektdateien werden anschließend vom so genannten Linker zum endgültigen zusammengebunden. Der erste Teil kann aus ierersicht in einem Teil der Fälle wegfallen: Linker Bibliothek Dann nämlich, wenn andere ihn bereits übernommen haben. In diesem Fall werden diese Teile als Bibliothek zur Verfügung gestellt. Man muss sie nur noch dazulinken. 2.1 Eigenschaften des Linkers Was hat man sich also unter diesem ominösen Linker vorzustellen: Der Linker ist ein Entwicklungstool. Das bedeutet, dass der Anwender unseres s nichts mehr mit dem Linker zu tun hat. Der Linker ist ein extra, das der Anwender unseres s nicht unbedingt hat. Der Anwender braucht es allerdings auch nicht. Der Linker stellt (im Allgemeinen) fest, ob alle teile vorhanden sind. Wir können daher erwarten, eine Fehlermeldung zu bekommen, wenn wir einen Teil des s oder eine Bibliothek beim Linken vergessen. Eine Ausnahme ist das dynamische Linken, das in diesem Kurs aber nicht behandelt wird. 8

Der Linker ist (im Allgemeinen) unabhängig vom. Bis auf wenige Ausnahmen, geschieht der Linkerschritt unabhängig vom Kompilieren. 1 Wir müssen sicherstellen, dass die Objektfiles aktuell sind. Wenn man von obiger Ausnahme absieht, dann weiß der Linker nichts über das Kompilieren. Deshalb erscheint es konsequent, dass der Linker unabhängig davon geschieht. Es können schließlich auch Objektdateien zu einem zusammengelinkt werden, die in unterschiedlichen iersprachen geschrieben oder mit unterschiedlichen n erzeugt wurden. 2.2 Makefiles Insbesondere der letzte Punkt, dass man sich als ierer selbst darum kümmern muss, ob die Objektdateien dem neuesten Stand der Quelldateien entsprechen, kann sehr lästig sein. Aber schließlich haben wir ja einen Computer, um solche Dinge zu automatisieren. Das Mittel der Wahl ist in diesem Fall ein so genanntes Makefile, welchen vom make verarbeitet wird. Wir erstellen eine zentrale Datei, in der Regeln beschreiben, welche Objektdateien benötigt werden. Diese wird meist Makefile oder makefile genannt. make überprüft anhand der Zeit der letzten Dateiänderung, welche Quelltexte kompiliert und welche Objektdateien gelinkt werden müssen. Die Abhängigkeit können dabei beliebig kompliziert werden. Das Format, in dem die Abhängigkeiten im Makefile beschrieben werden, ist folgendes: Ziel: Abhängigkeiten TAB Befehl Am Beginn einer Zeile steht das Ziel des Schrittes, für den wir eine Regel angeben wollen. Nach einem Doppelpunkt folgen die Namen der Dateien, von denen diese Zieldatei abhängt, d.h. dass die Zieldatei neu erzeugt werden muss, wenn sich eine oder mehrere dieser Dateien geändert hat. In der darunterstehenden Zeile folgt zuerst ein Tabulator-Zeichen und danach der Befehl, wie man die Zieldatei erzeugt, also z.b. der - oder Linkeraufruf. Am besten sieht man jedoch an einem Beispiel, wie man dies benutzt: hafas: hafas.o dijkstra.o g++ hafas.o dijkstra.o -Wall -g -o hafas hafas.o: hafas.cc g++ -c -Wall -g hafas.cc -o hafas.o dijkstra.o: dijkstra.cc g++ -c -Wall -g dijkstra.cc -o dijkstra.o 1 Eine Ausnahme kann das generische ieren sein, wenn sich erst beim Linken herausstellt, dass noch code generiert werden muss. 9

Für das hafas benötigen wir die Objektdateien hafas.o und dijkstra.o. Zum Linken verwenden wir g++, dem wir die Namen der Objektdateien und als folgende Optionen mitgeben: -Wall schaltet alle Warnungen ein. Selbstverständlich ist das nur sinnvoll, wenn man diese auch berücksichtigt. Eine gute Regel ist daher, seine e so zu schreiben, dass es keine Warnungen gibt. -g schaltet die Generierung von Debugging-Informationen ein. Während der Entwicklungsphase kann man dadurch mit einem Debugger den Code während der Ausführung beobachten. -o hafas gibt an, dass das den Namen hafas bekommen soll. Gibt man diese Option nicht an, dann erzeugt es ein a.out, was man sicherlich nicht haben möchte. Die anderen beiden Regeln beschreiben, wie und wann die nötigen Objektdateien erzeugt werden. Erstaunlicherweise wird auch hierfür das g++ verwendet.das rührt daher, dass es letztendlich nur ein Frontend für und Linker ist. Die Option -c gibt an, dass wir in diesem Fall den Quelltext kompilieren wollen. Benutzt wird das Makefile z.b. mit dem Befehl make hafas, wenn das hafas aktualisiert werden soll. Wenn nötig werden dazu dijkstra.o oder hafas.o neu erzeugt. Wenn make kein Argument übergeben wird, wendet es die erste Regel an. In diesem Fall würde also make das gleiche bewirken wie make hafas. Mit Makefiles ist allerdings noch wesentlich mehr möglich. Im Rahmen dieser Einführung soll jedoch nur noch die Verwendung von Variablen angekratzt werden. Hierfür erweitern wir unser Beispiel: CC = g++ FLAGS = -Wall -g hafas.o: hafas.cc $(CC) -c hafas.cc $(FLAGS) -o hafas.o dijkstra.o: dijkstra.cc $(CC) -c dijkstra.cc $(FLAGS) -o dijkstra.o hafas: hafas.o $(CC) hafas.o dijkstra.o $(FLAGS) -o hafas In diesem Fall wird am Anfang der Datei der Name des s bzw. die Optionen in einer Variablen gespeichert. Den Wert einer Variablen erhält man in einem Makefile, wenn man den Namen in Klammern setzt und ein Dollarzeichen davorschreibt. Im obigen Fall hat die Verwendung einer Variable den offensichtlichen Vorteil, dass man den oder die Optionen an einer zentralen Stelle für alle Aufrufe ändern kann. Als weiterführende Literatur zu Makefiles empfehle ich: Oram/Talbott Managing Projects with make. O Reilly & Associates, Inc. 2.3 Ein unerwartetes Beispiel Um die Verwendung von Makefiles etwas interessanter zu machen, stellen wir hier noch ein kleines Beispiel aus einem anderen Kontext vor: 10

diplomarbeit.ps: diplomarbeit.dvi bild.eps dvips diplomarbeit -o diplomarbeit.dvi: diplomarbeit.tex bild.eps latex diplomarbeit bild.eps: bild.jpg jpeg2ps bild.jpg > bild.eps Es geht darum, die lästigen Aufrufe von LaTeX und dvips beim Erstellen eines Textes zu automatisieren. Außerdem soll wenn nötig eine JPEG-Datei, die im Dokument verwendet wird, in Postscript umgewandelt werden. 2.4 Aufgaben 1. Analysieren Sie das obige Makefile! Was passiert, wenn man diplomarbeit.tex ändert und dann make aufruft? Was passiert, wenn man bild.jpg ändert und dann make aufruft? 2. Schreiben Sie ein Makefile für eines Ihrer Projekte, bei dem mindestens zwei Regeln voneinander abhängig sind. (Ob es sich bei ihrem Projekt um ein, ein Textdokument mit Latex oder sonst irgendwas handelt ist zweitrangig.) 11