Softwareentwicklung unter Linux

Ähnliche Dokumente
Mein eigener Homeserver mit Ubuntu LTS

Oracle VirtualBox. Zum Herunterladen für alle Betriebssysteme gibt s die VirtualBox auf:

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

ATB Ausbildung Technische Berufe Ausbildungszentrum Klybeck

Workshop: Eigenes Image ohne VMware-Programme erstellen

SFTP SCP - Synology Wiki

Version 0.3. Installation von MinGW und Eclipse CDT

Dateisystem 1, Suchpfad, Befehlstypen

Dateisystem 1, Suchpfad, Befehlstypen

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Windows 10 - Clean Install und Aktivierung

disk2vhd Wie sichere ich meine Daten von Windows XP? Vorwort 1 Sichern der Festplatte 2

Tutorial: Erstellen einer vollwertigen XP Home CD aus der EEE 901 Recover DVD

Step by Step Webserver unter Windows Server von Christian Bartl

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

cs106 Informatiklabor Teil 1: Java-Installation

Laufwerke unter Linux - Festplatten - - USB Sticks - September 2010 Oliver Werner Linuxgrundlagen 1

4D Server v12 64-bit Version BETA VERSION

Benutzer und Rechte Teil 1

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Hex Datei mit Atmel Studio 6 erstellen

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

EasyProfil unter Windows 7 64-Bit Home Premium (Die Installation der VirtualBox und EasyProfil)

EASYINSTALLER Ⅲ SuSE Linux Installation

HebRech auf Mac OS X

Benutzer und Rechte Teil 1, Paketverwaltung, SSH

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

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Installationsanleitung. Update ATOSS SES 2.40 für Windows ATOSS Server

Windows 7 Winbuilder USB Stick

Schulpaket 2015 / 2016 Installation

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum

C++ mit Eclipse & GCC unter Windows

MetaQuotes Empfehlungen zum Gebrauch von

Datensicherung. Mögliche Vorgehensweisen:

How to install ubuntu by crypted file system

Wir wünschen Ihnen viel Freude und Erfolg mit Ihrem neuen X-PRO-USB-Interface. Ihr Hacker-Team

Installationshinweise BEFU 2014

Installation DV4mini ausgehend von einem frisch installierten System:

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

Linux und Eclipse Einführung SysArch Tutoren WS 2008/2009 Atanas Dimitrov, Johannes Weiss

TeamSpeak3 Einrichten

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

Tutorial -

DVD Version 9.1. Netzwerkinstallation + VDE-Admin-Tool.

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

[Tutorial] Windows 7 Clean-Install

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Tipps und Tricks zu den Updates

Dokumentation IBIS Monitor

Personal. Installations-Anleitung.

Was tun, vor der Installation? Betriebssystem & Hardware Kontrolle

Technische Alternative elektronische Steuerungsgerätegesellschaft mbh. A-3872 Amaliendorf, Langestr. 124 Tel +43 (0)

Hochschule Darmstadt - Fachbereich Informatik - Fachschaft des Fachbereiches

Anleitung: Webspace-Einrichtung

Installationshilfe und Systemanforderungen. Vertriebssoftware für die Praxis

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Leitfaden zur Installation von Bitbyters.WinShutdown

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

HTBVIEWER INBETRIEBNAHME

Leitfaden für die Installation der Videoüberwachung C-MOR

Installation LehrerConsole (für Version 6.2)

Rillsoft Project - Installation der Software

Herbstsemester cs106 Informatiklabor Teil 4: Partitionierung & Linux Installation. P.Huber@stud.unibas.ch

Wissenswertes über LiveUpdate

Installationsanleitung bootfähiger USB-Stick PSKmail v

FIREBIRD BETRIEB DER SAFESCAN TA UND TA+ SOFTWARE AUF MEHR ALS EINEM COMPUTER

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

PDF-Druck und PDF-Versand mit PV:MANAGER

Installation Messerli MySQL auf Linux

Installation und Aktualisierung der VMware-Tools

OP-LOG

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Computer Algebra Plan der Vorlesung. erstes Drittel: linux, emacs, L A TEX zweites Drittel: Sage als Taschenrechner letztes Drittel: Python für Sage

OUTLOOK-DATEN SICHERN

Medea3 Print-Client (m3_print)

Anleitung zur Installation von Windows XP Professional und dem Multilanguage Interface

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

[Geben Sie Text ein] ISCSI Targets mit der Software FreeNAS einrichten

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

Anleitung. Einrichtung vom HotSync Manager für den Palm 1550 bis 1800 unter Windows 7. Palm SPT 1500 / 1550 Palm SPT 1700 / Bits & Bytes Seite 1

Linux - a bit advanced

Anleitung zur Installation von SFirm 3.1 inklusive Datenübernahme

Windows Vista Security

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

2 DAS BETRIEBSSYSTEM. 2.1 Wozu dient das Betriebssystem. 2.2 Die Bildschirmoberfläche (Desktop) Themen in diesem Kapitel: Das Betriebssystem

Softwareinstallation unter Linux

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

Installationshandbuch

Installationshilfe und Systemanforderungen

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

Modul Windows XP Professional

Installationsanleitung LogControl DL-Software

GFAhnen Datensicherung und Datenaustausch

Dokumentation. Erstellung eines bootfähigen USB-Sticks zur Veränderung einer bestehenden Partitionierung

Starten der Software unter Windows 7

Installationshinweise Linux Edubuntu 7.10 bei Verwendung des PC-Wächter

Formular»Fragenkatalog BIM-Server«

Transkript:

Softwareentwicklung unter Linux 1/ 117

Übersicht Vergleich Betriebsysteme Was ist Linux? Rechtliche Situation Das Linux Dateisystem Aufsetzen des Betriebssystems Installation von Softwarepaketen Werkzeuge The ToolChain 2/ 117

Vergleich Betriebsysteme 3/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware 4/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware Software einzeln installieren Alle Treiber enthalten 5/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware Software einzeln installieren Alle Treiber enthalten Paketverwaltung Software von dubiosen Webseiten 6/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware Software einzeln installieren Alle Treiber enthalten Paketverwaltung Software von dubiosen Webseiten Virenscanner bremst OS Kein Virenscanner nötig 7/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware Software einzeln installieren Alle Treiber enthalten Paketverwaltung Software von dubiosen Webseiten Virenscanner bremst OS Kein Virenscanner nötig Lizenzmanager umständlich Lizenzfreie Nutzung 8/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware Software einzeln installieren Alle Treiber enthalten Paketverwaltung Software von dubiosen Webseiten Virenscanner bremst OS Kein Virenscanner nötig Lizenzmanager umständlich Lizenzfreie Nutzung Eingeschränkt anpassbar Beliebig anpassbar 9/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware Software einzeln installieren Alle Treiber enthalten Paketverwaltung Software von dubiosen Webseiten Virenscanner bremst OS Kein Virenscanner nötig Lizenzmanager umständlich Lizenzfreie Nutzung Eingeschränkt anpassbar Beliebig anpassbar Nur vorgegebene Oberflächen Verschiedene Oberflächen 10/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware Software einzeln installieren Alle Treiber enthalten Paketverwaltung Software von dubiosen Webseiten Virenscanner bremst OS Kein Virenscanner nötig Lizenzmanager umständlich Lizenzfreie Nutzung Eingeschränkt anpassbar Beliebig anpassbar Nur vorgegebene Oberflächen Verschiedene Oberflächen Sicherheitslücken einsehbar Hintertüren eingebaut? 11/ 117

Vergleich Betriebsysteme Nur aktuelle Hardware Auch alte Hardware Software einzeln installieren Alle Treiber enthalten Paketverwaltung Software von dubiosen Webseiten Virenscanner bremst OS Kein Virenscanner nötig Lizenzmanager umständlich Lizenzfreie Nutzung Eingeschränkt anpassbar Beliebig anpassbar Nur vorgegebene Oberflächen Verschiedene Oberflächen Sicherheitslücken einsehbar Hintertüren eingebaut? Große Firmen Große Gemeinschaft 12/ 117

Historie von Linux 1991 begann Linus Torvalds in Helsinki (Finnland) mit der Entwicklung einer Terminal-Emulation, um unter anderem seinen eigenen Computer besser zu verstehen. Mit der Zeit merkte er, dass sich das System immer mehr zu einem Betriebssystem entwickelte und kündigte es daraufhin in der UsenetThemengruppe für das Betriebssystem Minix, comp.os.minix an.[3] Im September desselben Jahres sollte das System dann auf einem Server den Interessierten zur Verfügung gestellt werden. Da der damalige FTP-ServerAdministrator Ari Lemmke mit den von Torvalds vorgesehenen Namen Freax oder Buggix nicht einverstanden war, stellte jener es stattdessen in einem Verzeichnis mit dem Namen Linux zur Verfügung. Torvalds widersetzte sich anfangs dieser Namensgebung, gab seinen Widerstand aber schnell auf, da er nach eigener Aussage eingestehen musste, dass Linux einfach ein besserer Name war. Linux wurde zu dieser Zeit noch unter einer eigenen Lizenz veröffentlicht, welche die kommerzielle Nutzung verbot. Schnell merkte Torvalds aber, dass diese hinderlich war, und entschied sich dazu, allen Entwicklern deutlich mehr Freiraum zu geben. Er und seine Mitautoren stellten daraufhin im Januar 1992 Linux unter die GNU GPL[4]. Somit konnte man Linux in GNU integrieren und dies als das erste freie Betriebssystem vertreiben. Dieser Schritt machte das System für eine noch größere Zahl von Entwicklern interessanter, da es für diese die Modifizierung und Verbreitung vereinfachte. 1996 kündigte Torvalds an, dass er einen Pinguin als Maskottchen für Linux haben wolle, und schrieb einen Wettbewerb aus, aus dem schließlich der populäre Tux hervorging. Quelle: http://de.wikipedia.org/wiki/linux#historische_entwicklung 13/ 117

Was ist Linux? Kernel Das Programm init Shells Benutzerverwaltung Grafische Benutzeroberfläche Anwendungen Distributionen Community 14/ 117

Der Linux Kernel Oberboss im System Lizensiert unter GNU General Public License 2 Komponenten Speicherverwaltung Gerätetreiber Multitasking Scheduler Interprozesskommunikation Paketfilter (Firewall) Quelle: http://kernel.org/ 15/ 117

GNU General Public License 2 Copyleft Prinzip Lizenznehmer: Alle abgeleiteten Werke auch GPL 2 Autor: Darf Werk auch unter anderen Lizenzen veröffentlichen Lizenznehmer muss Quelltext veröffentlichen! Mehrere Gerichtsverfahren gegen Firmen z.b. 2006 Verfahren gegen D-Link http://dejure.org/dienste/vernetzung/rechtsprechung?text=2-6+o+224/06 16/ 117

Zwei Arten der Installation Linux in Virtualisierung Linux läuft im Fenster unter Windows/ MacOS Auf älteren Maschinen langsam Linux als zweites Betriebsystem Benötigt eigene Festplattenpartition Auch auf älteren Rechnern schnell Einfacherer Zugang zu Schnittstellen Evtl. Probleme mit Secure UEFI BIOS 17/ 117

Linux Distro herunterladen 32 Bit Version (x86) optimal für Virtualisierung weniger Speicherbedarf einfacher zu emulieren 64 Bit Version (x64) optimal bei nativer Installation 18/ 117

Linux als zweites OS Linux Distro auf bootbaren USB-Stick Software: unetbootin, usb-creator-gtk Linux Distro auf bootbarer CD/ DVD Rechner von CD/DVD/USB-Stick booten Software gparted verkleinert Partitionen Neue Partition anlegen und nach / mounten Installation sonst wie weiter unten UEFI-Systeme Secure UEFI abschalten Hilfe im Netz suchen 19/ 117

Linux in Virtual Box installieren Wir machen uns die Hände schmutzig! Beispiel anhand Distribution Xubuntu http://xubuntu.org/ Installation in VirtualBox Emulator http://virtualbox.org/ 20/ 117

Virtuelle Maschine erstellen 21/ 117

Namen vergeben 22/ 117

1GB RAM mindestens 23/ 117

Virtual Disk Image 24/ 117

Bootfestplatte erzeugen 25/ 117

Feste Größe ist schneller 26/ 117

20GB reichen zunächst 27/ 117

Zeit für einen Kaffee 28/ 117

ISO Image als virtuelle CD 29/ 117

Start von virtueller CD 30/ 117

Maus befreien: Strg Rechts 31/ 117

Inklusive Online Updates 32/ 117

Manuelle Partitionierung 33/ 117

Neue Partitionstabelle 34/ 117

Partition hinzufügen 35/ 117

Eine / Partition ist Pflicht! 36/ 117

Jetzt installieren 37/ 117

Ohne Swap fortfahren Auslagern auf virtuelle Festplatte langsam! Besser mehr Speicher für Maschine 38/ 117

Anmeldedaten 39/ 117

Ein gutes Passwort wählen GROSS- und kleinbuchstaben Ziffern Sonderzeichen,.! $ % & / ( ) = + Einen leicht zu behaltenen Satz wählen: Mann was der wieder für einen Quatsch sagt Sonderregeln (ein 1, sagen ;) Mwdwf1Q; Insgesamt 8 Zeichen! 40/ 117

Das kann dauern! 41/ 117

Neustart bestätigen 42/ 117

Ein aufgeräumter Desktop 43/ 117

Updates suchen 44/ 117

Updates installieren 45/ 117

Gasterweiterungen Installieren Ermöglichen Gemeinsame Ordner Geteilter Zwischenspeicher 3D Grafikbeschleunigung Größenänderungen des Fensters 46/ 117

Auf einigen Distributionen: Installationsskript ausführen 47/ 117

Alternativ: Shell im Ordner starten 48/ 117

Terminal starten 49/ 117

autorun.sh ausführen 50/ 117

Gasterweiterungen installiert 51/ 117

Rechner herunterfahren 52/ 117

Extension-Pack herunterladen Benötigt um Programmer per USB2 zu erreichen 53/ 117

Extension Pack installieren Doppelklick auf Datei öffnet VirtualBox Virtuelle Maschinen vorher herunterfahren 54/ 117

Fertig! 55/ 117

Das System Linux Systemstart Dateisystem Zugriffsrechte Versteckte Dateien Console und Shell Programme starten Skripte ausführen Werkzeuge 56/ 117

Das Programm /sbin/init Erstes Programm bei jedem Systemstart Startet alle weiteren Programme verwaltet Runlevel 0. System anhalten 1. Einzelbenutzer (meistens root) 2. Mehrbenutzer ohne Netzwerk 3. Mehrbenutzer mit textueller Oberfläche 4. Reserviert/ Unbenutzt 5. Mehrbenutzer mit grafischer Oberfläche 6. Rechner wird neugestartet Befehle (als Superuser) > runlevel > init <N> gibt aktuellen Runlevel aus schaltet in Runlevel <N> 57/ 117

Das Linux Dateisystem Dateisystem ist Zentralbibliothek des Rechners Linux Philosophie: Alles ist eine Datei! Laufwerke immer in Ordner eingehängt / ist die Wurzel von allem alles andere darunter Zugriff auf Hardware über virtuelle Dateien Zugriffsrechte/ Schutzbits Versteckte Dateien 58/ 117

Laufwerke in Ordnern keine Laufwerkbuchstaben! Einhängen eines Laufwerks mittels mount Benötigt oft Superuser Rechte (sudo) sudo mount /dev/sda2 /media/home Anzeige der Mountpoints mittels df oder mount > df -h Dateisystem rootfs devtmpfs tmpfs /dev/sda1 /dev/sda2 Größe Benut 20G 18G 984M 228K 990M 1,4M 20G 18G 54G 46G Verf Ben%% Eingehängt auf 2,9G 86% / 984M 1% /dev 988M 1% /dev/shm 2,9G 86% / 5,2G 90% /home 59/ 117

/ ist die Wurzel Immer ein Laufwerk in / eingehängt => Bei Neuinstallation reicht eine /-Partition alle anderen Datenträger in Unterordnern /-Verzeichnis (Beispiel opensuse) /bin Kommandos für root und normale Benutzer /boot Kernel und für Bootvorgang benötigte Dateien /dev Virtuelles Dateisystem devfs enthält Dateien für Zugriff auf Hardwaregeräte /etc Systemkonfiguration (globale Einstellungen für alle Benutzer) /home Jeder Benutzer für gewöhnlich ein eigenes Verzeichnis /lib Gemeinsam genutzte Programmbibliotheken /media Dynamische Datenträger wie z.b. USB-Sticks, CDROM Laufwerke,... /opt Optional installierte Software (z.b. QtSDK) /proc Virtuelles Dateisystem mit Informationen zum laufenden System /root Das Heimatverzeichnis des Superusers /sbin Befehle zur Systemverwaltung (nur mit Superuser Rechten benutzbar) /sys Virtuelles Dateisystem sysfs eine erweiterte Darstellung von devfs (/dev) /usr Die meisten Anwendungen sind hier installiert /var Variable Informationsdateien und Datenbanken Quelle: http://fibel.org/linux/lfo-0.6.0/node63.html 60/ 117

Der Ordner /dev Hardwaregeräte in Form von Dateien sichtbar Vom Kernel mittels devtmpfs automatisch gefüllt Beispieleinträge Ein Eintrag pro Festplatte und pro Partition /dev/sda Festplatte 1 /dev/sda1 Festplatte 1 Partition 1 Serielle Schnittstellen /dev/ttys0 /dev/ttyusb0 /dev/null interne serielle Schnittstelle erster USB-Seriell Wandler schluckt alle eingehenden Zeichen 61/ 117

Zugriffsrechte/ Schutzbits Für jede Datei drei Gruppen (E) (G) (A) Eigentümer Gruppe Andere Drei Arten von Schutzbits r darf lesen w darf schreiben x darf ausführen Schutzbits in Textdarstellung EEEGGGAAA > ls -l -rw-r--r-- 1 gregor users 43 11. Okt 13:35 Quellen.txt > chmod g+w Quellen.txt > ls -l -rw-rw-r-- 1 gregor users 43 11. Okt 13:35 Quellen.txt 62/ 117

Versteckte Dateien Dateien/ Ordner die mit Punkt beginnen Normalerweise nicht angezeigt Enthalten oft Einstellungen Bei Kopier- /Verschiebeaktionen ignoriert Punkt Einträge anzeigen > ls -al -rw-r--r-- 1 gregor gregor drwx------ 2 gregor gregor 3973 2011-10-12 09:30.springrc 480 2011-08-24 04:18.ssh Punkt Einträge kopieren cp -R \.* Ziel/ Im Dateiimanager versteckte Dateien anzeigen 63/ 117

Console Textuelles Eingabeinterface Erste Console 1991 vom Kernel bereitgestellt Ursprünglich Ausgabe direkt in Grafikkartenpuffer Terminal ist Entsprechung unter grafischer Oberfläche Immer noch erreichbar per Strg+F1,... 64/ 117

Shell Jede Konsole/ Terminal startet eine Shell Shell = Schale die sich um das Betriebsystem legt Interpretiert menschliche Texteingaben Es gibt verschiedene Shells bash, csh, tcsh, (unterschiedliche Kommandosyntax!) Grundfunktionen Starten von Programmen Ausführen von Skripten Vollständige Programmiersprache Umsetzen von Pipe Anordnungen Bereitstellung von Umgebungsvariablen Umleitung von Textausgaben 65/ 117

Shell Jede Konsole startet eine Shell Interpretiert menschliche Texteingaben Es gibt verschiedene Shells bash, csh, tcsh, (unterschiedliche Kommandosyntax!) Grundfunktionen Starten von Programmen Ausführen von Skripten Vollständige Programmiersprache Umsetzen von Pipe Anordnungen Bereitstellung von Umgebungsvariablen Umleitung von Textausgaben 66/ 117

Programme starten Goldene Regel: Dateien immer tabben! Ausführbare Datei finden absoluter/ relativer Pfad geht immer > /bin/less Suche im Suchpfad Variable $PATH zu durchsuchende Verzeichnisse > echo $PATH./:/home/gregor/bin:/bin:/opt/QtSDK/QtCreator/bin/:..../ ist aktuelles Verzeichnis 67/ 117

Ausführen von Skripten Synonym: Batchdatei Erste Zeile definiert Interpreter #!/bin/bash #!/usr/bin/perl x Bit gesetzt: chmod +x DATEI Keine Dateiendungen unter Linux! Oft aktuelles Verzeichnis nicht im Pfad 68/ 117

Shell Programmierung Variablen VARIABLE= WERT echo $VARIABLE Kontrollstrukturen if [ BEDINGUNG ]; then... fi for A in a b c... ; do... done Kein goto in bash! 69/ 117

Umgebungsvariablen Jede Shell erbt Variablen von Umgebung Neue Variablen in Elternshell unbekannt Variablen anzeigen: export (Bash) Nur exportierte Variablen weiter vererbt Variablen sterben mit ihrer Shell permanent durch Eintrag in Startup Skript Zuweisung: VARIABLE= Wert 70/ 117

Textausgaben umleiten Jedes Programm 1 Eingabestrom: STDIN 2 Ausgabeströme: STDOUT, STDERR Eingabe aus Datei: BEFEHL <DATEI Ausgabe in Datei: Zieldatei überschreiben: BEFEHL >DATEI1 2>DATEI2 An Zieldatei anhängen: BEFEHL >>DATEI1 2>>DATEI2 STDERR nach STDOUT umleiten: 2>&1 71/ 117

Shell Startup Skript Bei Start/ Login automatisch ausgeführt /etc/bash.bashrc ~/.bashrc ~/.profile ~/.login Beispiele: Suchpfad zu qtcreator > echo 'export PATH= /opt/qtsdk/qtcreator/bin/:$path' >>~/.bashrc Permanenter alias > echo 'alias ll= ls -lh ' >>~/.bashrc 72/ 117

Werkzeuge man cat less find grep gcc/ g++ make openocd gdb 73/ 117

Befehl man (1) Textbasiertes Anleitungssystem Ausführliche Beschreibungen Praktisch jeder Befehl beschrieben Programmierhandbuch Tastenzuordnungen Pfeiltasten Blättern / nach Text suchen q Beenden Alternative: info 74/ 117

Befehl man (2) Verschiedene Ebenen > man EBENE SCHLÜSSELWORT 1 2 3 4 5 6 7 8 9 Ausführbare Programme oder Shellbefehle Systemaufrufe (Kernelfunktionen) Bibliotheksaufrufe (Funktionen in System-Bibliotheken) Spezielle Dateien (gewöhnlich in /dev Dateiformate und Konventionen, z. B. /etc/passwd Spiele Makropakete und Konventionen, z. B. man(7), groff(7) Systemadministrationsbefehle (in der Regel nur für root) Kernelroutinen [Nicht Standard] > man 1 open > man 2 open 75/ 117

Befehl cat Dateiinhalt ausgeben Oft Start einer Pipe > cat DATEI grep FOO less Here-Skript in Shell-/ Perl-Skript cat << END_OF_TEXT Hello World END_OF_TEXT 76/ 117

Befehl less Zeigt Dateiinhalt an Interaktives bidirektionales Blättern Suchfunktion: / Beenden: q 77/ 117

Befehl find Suchen von Dateien > find STARTPFAD -name MUSTER Viele Optionen zur Suchkonfiguration Verknüpfung mittels -and / -or Expression für jede gefundene Datei Default: -print Externes Programm: -exec BEFEHL {} \; Beispiele: > find /home -name \.* less > find./ -name *.txt -exec less {} \; man find 78/ 117

Befehl grep Universeller Suchbefehl Sucht im Eingabestrom nach Muster Gibt alle Zeilen aus, die Muster enthalten Syntax: grep MUSTER DATEI > grep Hallo HalloWelt.txt > cat HalloWelt.txt grep Hallo Kombination mit find > find./ -name *.h grep -n MUSTER man grep 79/ 117

Pipeanordnungen Idee: Kleine Befehle als Werkzeugkasten Kombination einfacher Befehle ist mächtig Pipe ist Verbindung zweier Befehle Pipesymbol ist senkrechter Strich A B Textausgabe von A ist Texteingabe für B cat hallo.txt grep Welt Lange Pipeketten möglich 80/ 117

Befehl gcc/ g++ Universeller Übersetzer Preprozessor C/ C++ Compiler Linker Assembler Übersetzen: gcc -c DATEI.c Linken: gcc DATEI1.o DATEI2.o -o OUT man gcc (>10000 Zeilen) 81/ 117

Befehl make Führt makefile aus Umsetzung von Abhängigkeiten Einfache Regeln A.x mittels BEFEHL aus A.y erstellt Gegeben A.y, B.y, C.y, Für Ziel Z: Erstelle A.x, B.x, C.x, Ausnutzung Parallelität: make -jn (N = 2x CPU-Kerne) Für C wesentliche Dateiendungen.s.c.h.o Assembler Quelltext C Quelltext C Headerdatei Objektdatei (aus.c oder.s erstellt) 82/ 117

makefile Steuerdatei für make Regeln zur Übersetzung Konfigurationsoptionen Definition von Übersetzungsziele (ZIEL:) Quellverzeichnisse Zu erzeugender Objektdateien Name der Ausgabedatei Übersetzungsoptionen 83/ 117

GNU Make Quellen Official Manual http://www.gnu.org/software/make/manual/make.pdf German Tutorial http://www.ijon.de/comp/tutorials/makefile.html 84/ 117

Software Installieren Superuser Rechte Installtionsskripte Software Pakete Installation aus Quellen 85/ 117

Anwendungen installieren Änderungen am System nur als Superuser (root) Verschiedene Optionen Paketmanager Installationsskripte einzelne Pakete Quelltext 86/ 117

Der Superuser Ich bin /root, ich darf das! Eigenes Homeverzeichnis /root Darf jede Datei verändern Nur zur Systemkonfiguration Superuser werden > sudo su Etwas als Superuser ausführen > sudo reboot -n 87/ 117

Installation per Paketmanager Königlich einfache Bedienung Große Auswahl vorkonfigurierter Softwarepakete Abhängigkeiten automatisch aufgelöst Automatische Updates opensuse: yast, kpackagekit Debian: apt-get, aptitude, synaptic, kpackagekit 88/ 117

Installationsskripte Ähnlich Installation unter Windows OS Ausführbares Programm von Webseite Oft Dateinamensendung.run Datei muss ausführbar gemacht werden chmod +x DATEI Eigenschaften/ Dateizugriff im Dateimanager Oft als Superuser starten sudo./datei Beispiele QtCreator Grafikkartentreiber (NVIDA/ AMD) 89/ 117

Installation einzelner Pakete Für Fortgeschrittene User Per Suchmaschine suchen Muss zur Distribution passen opensuse, RedHat: sudo rpm install FILE.rpm Debian:.deb Format sudo gdebi FILE.deb Keine automatischen Updates! 90/ 117

Installation aus Quellen Pain in the Ass Suchen der richtigen Version neueste Quellen oft instabil Installationsanleitungen oft veraltet Neu kompilieren COMPILE.txt/ INSTALL.txt lesen! Foren durchsuchen Abhängigkeiten von Hand lösen Fehlermeldungen lesen Fehlende Software installieren Installationsscript erstellen (Fortgeschritten) 91/ 117

Übung: Installieren Linux Distribution eigener Wahl installieren opensuse, Ubuntu/ Kubuntu, Debian, in virtueller Maschine oder als Dualboot System Folgende Software installieren: yakuake TheToolChain (http://thetoolchain.com/) 92/ 117

The ToolChain Sammlung Skripte und C-Quelltexte Automatischer Download >500MB Bibliotheken angepasst und übersetzt Mehrere Compilerversionen Verschiedene Programmer/ Debugger Bibliotheken für uc Funktionseinheiten Viel Dokumentation Flexibel erweiterbar Gemeinschaftsprojekt Komplett Open Source 93/ 117

Features ToolChain FreeRTOS Multitasking Scheduler Compiler Suite gcc ARM NONE EABI OpenOCD für In Circuit Programming/ Debugging 3rd party Bibliotheken (Mathematik, Ethernet, ) Verschiedene Entwicklungsboards Bibliothek für Grafische Benutzerschnittstelle Flexible Konfiguration Derselbe Quelltext läuft auf verschiedenen uc Sofort lauffähige Beispiele 94/ 117

Installation The ToolChain Voraussetzungen Rechner / Virtuelle Maschine mit Linux Distribution (opensuse, Kubuntu, ) root Zugang (Superuser Passwort) Schnelle Internet Verbindung (download > 500MB) In Shell ausführen (= Terminal / Console) Finale Version > wget -N http://thetoolchain.com/install_thetoolchain.sh > bash./install_thetoolchain.sh - Letzte Testversion > wget -N http://thetoolchain.com/install_thetoolchain_beta.sh > bash./install_thetoolchain_beta.sh The ToolChain wird installiert nach ~/Source/TheToolChain (~ ist der Heimatordner des aktuellen Benutzers) 95/ 117

Ein neues Projekt erstellen Auf ins Abenteuer! 1. cd ~/Source/TheToolChain 2../createNewProject.pl TEST FOO 3. cd../test 4../qtcreator.sh 5. activate_project.sh anpassen 6. Übersetzen + programmieren 7. Fehlersuche 96/ 117

Skript createnewproject.pl./createnewproject PROJECT AUTHOR Nutzt eine Projektvorlage Erstellt neuen Ordner in ~/Source/ Trägt Projektname und Author ein Aktualisiert Liste aller Erweiterungen Erstellter Projektordner frei verschiebbar 97/ 117

Template Projekt Komplettes, eigenständiges Framework Läuft auf den meisten Cortex M3 Platinen Support für QtSDK Quelltexteditor >./qtcreator.sh Übersetzen und auf uc schreiben >./compile.sh Fehlende ToolChain wird nachgeladen 98/ 117

Makefile In jedem compile.sh Lauf verwendet Legt fest Welche Objektdateien erstellen Wo.c/.h/.s Dateien suchen Welche Konstanten definieren Welche Dateien einbinden Abhängigkeiten zwischen Bauzielen 99/ 117

Configure Makefile (1) (2) (3) (4) (5) (6) (7) (8) (9) Grundlegende Konstanten Wo liegen.h Dateien? Wo liegen.c Dateien? Wo liegen.s Dateien? Sucht benötigte Dateien Legt verwendeten uc fest Welche Kompileoptimierungen Falsche Bauziele Generelle Dateien hinzufügen 100/ 117

Makefile - basic constants Compiler Optimierungen (-O) O0 Og O1 O9 Os keine Optimierungen (für Debugging) Debuggingsymbole hinzufügen Einfache Optimierungen Maximale Geschwindigkeit Kleinstes Programm > man gcc 101/ 117

Makefile wo liegen Headedateien (.h) Header Dateien benötigt für #include gcc Parameter -I definiert einen Includepfad \ am Zeilenende: in nächster Zeile fortfahren $(INCLUDE_DIRS) enhält viele -I Einträge $(INCLUDE_DIRS) direkt an gcc gegeben gcc liest #include Zeile gcc durchläuft Liste der -I Einträge Beispiel Quelltext + makefile 102/ 117

Makefile Wo liegen Quelltexte (.c) C-Quelldatei übersetzt in Objektdatei (.o) vpath.%c enthält Liste von Ordnern Wann immer FOO.o erstellt wird: Make durchsucht alle Ordner in vpath.%c Das zuerst gefundene FOO.c word übersetzt Beispiel makefile 103/ 117

Makefile Wo liegen Assemblertexte (.s).s Dateien enthalten Assemblerquelltexte Oft benutzt für Systemstart vpath %.s enthält Liste von Ordnern Extra Regel definiert Übersetzung.s.o Wann immer FOO.s übersetzt werden soll Alle Ordner in vpath %.s durchsucht Erste gefundene FOO.s wird übersetzt FOO.s FOO.o Beispiel makefile 104/ 117

Makefile ucontroller festlegen STM32 ucs in Klassen unterteilt Klassen unterscheiden sich durch Benötigter Startup Quelltext Anzahl Anschlusspins Größe des Arbeitsspeichers (RAM) Größe des Programmspeichers (FLASH) Funktionseinheiten (GPIOs, Timer, UARTS,..) 105/ 117

Makefile - phony build targets.phony: clean all Lists all Targets which are no files Avoids ambiguity between build targets and files of same name Example: all, clean 106/ 117

Makefile - Objektdateien $(MAIN_OBJS) Liste zu bauender Objekte Jede beteiligte.c Datei benötigt einen.o Eintrag in $(MAIN_OBJS)! Objektdatei hinzufügen MAIN_OBJS += foo.o Liefert Übersetzungsaufruf gcc -c foo.c 107/ 117

TTC Erweiterungen Unterordner im Projektordner extensions/ Alle verfügbaren Erweiterungen Keine projektbezogenen Dateien extensions.local/ Projektbezogene Makefile Fragmente extensions.active/ Verweise extensions/, extensions.local/ alle makefile.* hier automatisch verwendet Verweise erstellt durch activate.*.sh Skripte 108/ 117

Ordner extensions/ Drei Arten von Dateien makefile.nnn_name Makefile Fragment im Rang NNN Liefert zusätzliche Einstellungen wenn aktiviert activate.nnn_name.sh Skript welches eine Erweiterung aktiviert Erstellt einen oder mehrere Einträge in extensions.active/ Einige Skripte entfernen konkurrierende Einträge source.nnn_name.c /.h Quelltext für Autostart Erlaubt automatisches Starten einer Erweiterung Singletaskbetrieb vor Start des Schedulers 109/ 117

Extensions in Rängen Extensions, Makefiles, Activate-Scripts Dateiname mit dreistelliger Rangnummer Hochrangige Erweiterungen basieren auf niederen Rängen Kleinster Rang: Compiler Libraries Höchster Rang: Vollständige Projekte ~/Source/TheToolChain/ InstallData/ReadMe_Ranks.txt Regel: Kein Rang benötigt höheren Rang! Ausnahme: Rang 500 von 450 aus erreichbar 110/ 117 050 System Libraries 100 Board Definitions 200 Compiler Settings 300 Multitasking Scheduler 400 3rd Party Libraries 450 Architektur Treiber 500 The ToolChain 600 Example Codes 999 External Tools

Minimal SetUp >./clean.sh > activate.100_board_olimex_h107.sh > activate.600_example_leds.sh Erstellt aus dem Ei: makefile.100_board_olimex_h107 makefile.190_cpu_cortexm3 makefile.200_cpu_stm32f10x... makefile.500_ttc_interrupt makefile.500_ttc_memory makefile.600_example_leds 111/ 117

Linker Skript Benötigt beim Binden von Referenzen an physikalische Adressen Definiert Speicheradressen und -bereiche im uc Speicher eingeteilt in Bereiche mit Attributen Name Zugriff (r ead, w rite, x ecutable) Startadresse Größe Abschnitte (Sections) definiert mit Attributen Name Alignment (1, 2, 4, 8 Bytes) Zugewiesener Speicherbereich. ist der aktuelle Adresszähler Enthaltene Objekte (bss, heap, stack,...) configs/memory.ld im Projektordner enthält aktuelles Linker Skript 112/ 117

Programmieradapter Programmieradapter ist ein Hardwaregerät Kabelverbindung zwischen Desktop PC/ Laptop und uc Schreibt (flashed) Binärdatei mit Firmware auf uc Erlaubt Fehlersuche im eingebauten uc OpenOCD ist quelloffene Debug Software Bespiel: ARM-USB-TINY-H von Olimex Aktuell verwendeter Adapter Umstellen: activate.350_programmer_*.sh _/flash_current.sh schreibt Binärdatei mit aktuellem Adapter _/debug_current.sh startet Debugging auf aktuellem Adapter Liste unterstützter Programmieradapter ~/Source/TheToolChain/OpenOCD/share/ openocd/scripts/interface/ 113/ 117

compile.sh Aufruf im Projektordner:./compile.sh Fehlende ToolChain automatisch installiert Ruft auf./createlinks.sh./activate_project.sh Übersetzt aktuelles Projekt Aktualisiert QtCreator/PROJEKT.creator Schreibt erzeugte Binärdatei auf uc 114/ 117

Debugging In welchem Schritt tritt Fehler auf? Während Übersetzung (gcc -c) Syntaxerror Includedatei nicht gefunden.c-file makefile Während Binden (Linking) Objektdatei fehlt Fehlender Objektpfad makefile (MAIN_OBJS) makefile (vpath %.c) Während Laufzeit (Assert()) Falscher uc/ Board gewählt Stacküberlauf 115/ 117 Passendes Board aktivieren ttc_task_create() Aufruf

Hausaufgaben Aktuelle Beta Version The ToolChain installieren http://thetoolchain.com/ Wiederholung C für Mikrocontroller Labor Webseite Wichtig: Die Inhalte der Hausaufgabe werden zum Praktikumsbeginn in einem Test abgefragt. Das Bestehen des Tests ist Voraussetzung für die Teilnahme am weiteren Praktikum. 116/ 117

Fragen? 117/ 117