Programmentwicklung mit C++ (unter Unix/Linux)



Ähnliche Dokumente
Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Einführung in die C-Programmierung

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Einführung in die Programmierung mit C++

Vorlesung Informatik II

Einführung in die Programmierung

Modulare Programmierung und Bibliotheken

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

DLLs (dynamic loaded libraries) mit MingW erstellen

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

Wie man eigene Programme erstellt

Die Programmiersprache C99: Zusammenfassung

Grundlagen. Kapitel 1

Übersicht Programmablaufsteuerung

Softwarepraktikum: Einführung in gcc / g++

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

Propädeutikum. Dipl.-Inf. Frank Güttler

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

1. Übung zu "Numerik partieller Differentialgleichungen"

Compiler und Präprozessor (1) Erstellen eines Projektes

Native Zeichenketten (C-Strings)

Zählen von Objekten einer bestimmten Klasse

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Einführung in die C++ Programmierung für Ingenieure

1 Vom Problem zum Programm

Vorkurs C++ Programmierung

Die Programmiersprache C

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Fachhochschule Wiesbaden - Fachbereich DCSM. Skriptsprachen. Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Informationen zur Verwendung von Visual Studio und cmake

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Nuetzlicher Kleinkram

Objektbasierte Entwicklung

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Testen mit JUnit. Motivation

Kurze Einführung in die Programmiersprache C++ und in Root

Tastatur auf Hebräisch umstellen

Kompilieren und Linken

Compilieren und Linken von C- und C++-Dateien

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Reservierungs-Assistent

Arbeiten mit UMLed und Delphi

Übung - Datenmigration in Windows Vista

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Planung für Organisation und Technik

Software Engineering Interaktionsdiagramme

Stapelverarbeitung Teil 1

Benutzung der LS-Miniscanner

Eine Einführung in C-Funktionen

Installation und Inbetriebnahme von Microsoft Visual C Express

Mediator 9 - Lernprogramm

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

Graphic Coding. Klausur. 9. Februar Kurs A

Deklarationen in C. Prof. Dr. Margarita Esponda

Objektorientierte Programmierung

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Einführung in die Java- Programmierung

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Einführung in die Programmierung

Leere Zeilen aus Excel-Dateien entfernen

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Einstellen der Makrosicherheit in Microsoft Word

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Starten sie WordPad über das Startmenü von Windows. WordPad finden Sie im Ordner Zubehör.

User Manual Data 24. Login und Layout

Typo3 - Schulung: Fortgeschrittene I an der Hochschule Emden/Leer

Kundenspezifische Preise im Shop WyRu Online-Shop

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Artikel Schnittstelle über CSV

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

2. Semester, 2. Prüfung, Lösung

Projektverwaltung Problem Lösung: Modulare Programmierung

Dokumentenverwaltung im Internet

Angewandte Mathematik und Programmierung

affilinet_ Flash-Spezifikationen

Tutorial: Eigene Module und Extensions entwickeln. version: 0.1 Author: Anja Beuth

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Ingenieurinformatik Diplom-FA (C-Programmierung)

Informationen zu den regionalen Startseiten

Erwin Grüner

Einführung in TexMaker

Veröffentlichen von Apps, Arbeitsblättern und Storys. Qlik Sense Copyright QlikTech International AB. Alle Rechte vorbehalten.

Metadaten bei der Digitalisierung von analogen archivalischen Quellen. Kathrin Mileta, Dr. Martina Wiech

GEONET Anleitung für Web-Autoren

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen

Visual Basic Express erstes Projekt anlegen

Hyperlink-Erstellung in InDesign für

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Grundlagen der Informatik - 6. Praktikum

Häufig gestellte Fragen zu Professional webmail

NEUES BEI BUSINESSLINE WINDOWS

C/C++ Programmierung

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Lehrer: Einschreibemethoden

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Transkript:

Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik Martin-Luther-Universität Halle-Wittenberg

Erste Schritte zum Erstellen eines C++-Programms sind grundsätzlich 3 Schritte notwendig: 1. Quelldatei(en) anlegen (mit einem Editor, z.b. emacs) 2. Quelldatei(en) compilieren ( Objektfiles *.o) 3. Objektfiles zum ausführbaren Programm linken Compilieren und Linken werden manchmal auch in einem Schritt zusammengefasst C bzw. C++-Compiler/Linker unter Linux/Unix: gcc bzw. g++ Angewandte Bildverarbeitung, WS 2003-2004 1

Erste Schritte 1. Quelldateien: enthalten die Sourcen des Programms: Klassendeklarationen und -implementierungen Funktionendeklarationen und -implemetierungen Variablendeklarationen die main-funktion und diverses anderes #include <iostream> class HelloWorld { public: void sayhello(); }; int main(int argc, char **argv) { HelloWorld helloworldobject; helloworldobject.sayhello(); }; // Einbindung externer Funktionen // Klassendeklaration // die main-funktion void HelloWorld::sayHello() { std::cout << "Hello World!!!" << std::endl; }; // Implementierung der Klasse Angewandte Bildverarbeitung, WS 2003-2004 2

Compiler 2. Compilieren: pioneer->bimoelle[pts/2]: g++ -c helloworld.cc der Compiler übersetzt die Quelldateien in Objektcode: jede Klasse / Funktion / Variable /... wird symbolisch codiert erkannte Fehler: Syntaxfehler (Tippfehler, fehlendes Semikolon,...) nicht bzw. doppelt deklarierte Variablen / Funktionen /... Resultat: für jede Quelldatei wird ein Objektfile generiert Optionen für den g++: datei.cc datei.o -c : nur Compilieren, nicht Linken -I : Pfad zu Dateien, die inkludiert werden Angewandte Bildverarbeitung, WS 2003-2004 3

3. Linken: Linker pioneer->bimoelle[pts/2]: g++ helloworld.o der Linker bindet die verschiedenen Objektdateien (und ggf. externe Libraries) zu einem Executable zusammen erkannte Fehler: undefinierte Symbole, d.h. beispielsweise Funktionen, die deklariert, aber nicht implementiert sind Resultat: ausführbares Programm a.out Optionen für den g++: -o : Name des Programms / Ausgabedatei -L : Pfad für Libraries, die zugelinkt werden sollen -l : Name der entsprechenden Library Beispiel: Einbinden der Mathematik-Bibliothek libm.a pioneer->bimoelle[pts/2]: g++ -L/usr/lib/ -lm helloworld.o Angewandte Bildverarbeitung, WS 2003-2004 4

Organisation des Source-Codes grundsätzlich könnte der gesamte Code in eine Datei geschrieben werden die vermutlich einfachste Art, Chaos zu erzeugen!!! Wiederverwendung / Modularisierung dann eher schwierig!!! Daher: Trennung von Deklarationen und Implementierungen erhöht die Übersichtlichkeit vereinfacht das Anlegen und die Verwendung von Libraries Deklarationen werden in Header-Files geschrieben (Endung.h) Implementierungen finden sich in den entsprechenden Source-Files (Endung.c oder.cc) Angewandte Bildverarbeitung, WS 2003-2004 5

Organisation des Source-Codes Header-Files können mit #include eingebunden werden: #include "helloworldclass.h" int main(int argc, char **argv) { HelloWorld helloworldobject; helloworldobject.sayhello(); }; zu unterscheiden: #include <file.h> : ein Header, der sich in den Standard-Includeverzeichnissen befindet #include file.h : ein Header, der sich nicht in den Standard-Includeverzeichnissen befindet zu jedem Header, der benutzt wird, müssen die zugehörigen Objektfiles beim Linken eingebunden werden Angewandte Bildverarbeitung, WS 2003-2004 6

Libraries eine Library stellt im Prinzip eine Sammlung von Objektfiles dar Libraries stellen oft benötigte Funktionen / Klassen zur Verfügung: libm.a - mathematische Funktionen und Konstanten libx11.a - Unterstützung grafischer Ausgaben libimageio.a - (unser) Bilddatentypen, Ein- und Ausgabe... zu einer Library gehören der oder die Header mit den Deklarationen das eigentliche Library-File (Endung.a oder.so) Angewandte Bildverarbeitung, WS 2003-2004 7

Automatische Programmgenerierung Motivation: Abhängigkeiten zwischen Source- und Headerfiles sowie zu Libraries Änderungen in einzelnen Dateien bedingen neues Übersetzen und Linken auch in anderen Programmteilen oft sind wieder und wieder dieselben g++-aufrufe notwendig Tool hierfür: make Automatisierung wünschenswert!!! Make dient der Vewaltung von Abhängigkeiten ermöglicht automatische Neugenerierung aller von Änderungen betroffenen Programmteile universell einsetzbar, z.b. auch für große Dokumente mit Latex Angewandte Bildverarbeitung, WS 2003-2004 8

Automatische Programmgenerierung make wird durch eine Datei konfiguriert Makefile die Konfigurationsdatei enthält Regeln der folgenden Art: Ziel: Objekt1 Objekt2... auszuführende Kommandos Ziel kann wahlweise eine Datei oder auch ein symbolischer Name sein die Objekte sind Dateien oder Ziele die Kommandos beinhalten die Compiler- und Linker-Aufrufe Angewandte Bildverarbeitung, WS 2003-2004 9

Automatische Programmgenerierung Ein Makefile für unser HelloWorld -Programm: all: clean: helloworldprogram rm -f *.o helloworldprogram helloworldprogram: g++ -o $@ $^ main.o helloworldclass.o %.o: %.c g++ -c $^ all bezeichnet Default-Ziel, das defaultmäßig angesprungen wird clean räumt auf make ermöglicht Verwendung von Makros: $@ = Ziel der aktuellen Regel $^ = Objekte der aktuellen Regel % = Platzhalter für beliebige Namen (Suffixregeln) Angewandte Bildverarbeitung, WS 2003-2004 10

Automatische Programmgenerierung beim Aufruf können Ziele als Parameter an make übergeben werden: pioneer->bimoelle[pts/2]: make clean all pioneer->bimoelle[pts/2]: make helloworldclass.o Ausserdem: Deklaration von Variablen und Konstanten bedingte Anweisungen (if, else,... ) Einbettung von Shell-Kommandos... bei Interesse: Details im Manual ( /home/moeller/manuals/make.ps.bz2 ) Angewandte Bildverarbeitung, WS 2003-2004 11