Embedded-Linux-Seminare. Toolchains

Ähnliche Dokumente
Informatik für den Satellitenbau. Toolchains und Crosscompiler

4D Server v12 64-bit Version BETA VERSION

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

Version 0.3. Installation von MinGW und Eclipse CDT

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

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Kompilieren und Linken

.NET Code schützen. Projekt.NET. Version 1.0

Informationen zur Verwendung von Visual Studio und cmake

Internet Explorer Version 6

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

Print2CAD 2017, 8th Generation. Netzwerkversionen

Hex Datei mit Atmel Studio 6 erstellen

Kartei zum Lesetagebuch

FreieSoftwareOG. Creative Commons und freie Lizenzen- Ein kurzer Überblick

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE Burgkirchen Web:

Qt-Projekte mit Visual Studio 2005

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Tutorium Rechnerorganisation

Netzwerkversion PVG.view

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Reporting Services und SharePoint 2010 Teil 1

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

Verwendung des IDS Backup Systems unter Windows 2000

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Workshop: Eigenes Image ohne VMware-Programme erstellen

ICS-Addin. Benutzerhandbuch. Version: 1.0

Rillsoft Project - Installation der Software

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

Versionsverwaltung mit SVN

YouTube: Video-Untertitel übersetzen

Kurzanleitung zu XML2DB

Visual Basic Express Debugging

Bedienungsanleitung für den SecureCourier

Anlegen eines Facebook-Profils (Privat-Profil) für BuchhändlerInnen und andere -- Stand Mai 2011

1. Vorbereiten das Host, folgende Software Pakete müssen installiert werden: gnome-devel bison flex texinfo libncurses5-dev git codeblocks putty

Visual Basic Express Kompilieren mit Skripten

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

Installation der SAS Foundation Software auf Windows

Technische Analyse der Zukunft

SFTP SCP - Synology Wiki

Installationshinweise für Serverbetrieb von Medio- Programmen

Softwarepraktikum: Einführung in gcc / g++

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

C++ mit Eclipse & GCC unter Windows

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Update von Campus-Datenbanken (FireBird) mit einer Version kleiner 9.6 auf eine Version größer 9.6

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Virtual Channel installieren

Nuetzlicher Kleinkram

auf den E-Book-Reader

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

auf den E-Book-Reader

FrogSure Installation und Konfiguration

Programmieren was ist das genau?

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

auf den ebook-reader Ausleihen und Nutzen von ebooks auf einem ebook-reader

ABACONNECT VERWENDUNG VON APACHE TCPMON UTILITY MIT ABACONNECT WEBSERVICES

Open Source Software als rechtliches Konzept

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

SHAREPOINT Unterschiede zwischen SharePoint 2010 & 2013

Konventionen. Danksagung

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

Einführung in TexMaker

Lizenzen auschecken. Was ist zu tun?

Herzlich willkommen bei der Installation des IPfonie -Softclients!

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Updatehinweise für die Version forma 5.5.5

Software Engineering:

Anlegen eines Twitter-Accounts für Buchhandlungen -- Stand Mai 2011

Switching. Übung 7 Spanning Tree. 7.1 Szenario

7. Arduino-Stammtisch: Tool-Chain und eigene Bibliotheken

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

Das Handbuch zu KAppTemplate. Anne-Marie Mahfouf Übersetzung: Burkhard Lück

Softwaren Engineering I

e-books aus der EBL-Datenbank

Embedded-Linux-Seminare. Linux als Betriebssystem

Medienrecht. Datenschutz Urheberrecht

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Datenbanken auf Sybase SQL-Anywhere

OS IDE Webserver Integration des Webservers in die IDE Wireshark Webserver II Dynamisches Webprojekt in Eclipse

Open Source Software. Workshop : Open Source Software 3. Mannheimer Fachtag Medien Referent : Christopher Wieser (

Linux Arbeitsspeicheranalyse

Tutorial -

Comtarsia SignOn Familie

etermin Einbindung in Outlook

1. Produktstruktur Lizenzmodell... 4

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.

Version 1.0 [Wiederherstellung der Active Directory] Stand: Professionelle Datensicherung mit SafeUndSave.com. Beschreibung.

Embedded So)ware. Einrichten der Arbeitsumgebung

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Einzelplatz - USB-Lizenz

Unsere Ideen für Bremen!

Transkript:

Embedded-Linux-Seminare Toolchains http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de

Kopier-Rechte Dieses Dokument steht unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz. Beruht auf einem Inhalt unter http://free-electrons.com/doc/toolchains.odp. Namensnennung Der Lizenzgeber erlaubt die Vervielfältigung, Verbreitung und öffentliche Wiedergabe seines Werkes. Der Lizenznehmer muß dafür den Namen des Autors/Rechteinhabers nennen. Weitergabe unter gleichen Bedingungen Der Lizenzgeber erlaubt die Verbreitung von Bearbeitungen nur unter Verwendung identischer Lizenzbedingungen. Lizenz Text : http://creativecommons.org/licenses/by-sa/3.0/deed.de 2

Definition Die normalen Entwicklungstools auf einem Linux System bilden die Native-Toolchain. Diese Toolchain läuft auf dem Rechner mit einer bestimmten Architektur (meist x86) und generiert Code für die gleich Architektur. Für Embedded Systeme ist es meist nicht sinnvoll eine Native- Toolchain zu verwenden Das Target System hat zu wenig Ressourcen und zu geringe Performance Die Entwicklungs-Tools sollen nicht auf dem Target installiert werden Da die Architektur des Embedded System meist vom Entwicklungsrechner abweicht, wird eine Cross-Toolchain benötigt, welche Code für die Target Architektur erzeugt. 3

Definition Quell-Code Native Toolchain Cross Toolchain x86 Entwicklungs Rechner x86 Binary x86v ARM Binary ARM Ziel Rechner 4

Komponenten Binutils as, ld, ar, ranlib, strip,... Kernel Header C/C++ Bibliotheken GCC Compiler GDB Debugger (optional) 5

GCC GNU Compiler Collection Besteht aus mehreren Compiler für verschiedene Sprachen und dazugehörigen Bibliotheken C gcc C++ g++ libstdc++ Java gcj libgcj Fortran gfortan libgfortran Weitere: Ada, Go, Objective-C gcc ist der C Compiler gcc erkennt auch andere Sprachen und ruft den dazugehörigen Compiler auf 6

gcc C-Quellcode (Endung.c) Assembler-Code (Endung.S) Präprozessor cpp Präprozessor cpp Assemblieren as Kernel-Modul Endung.i vom Präprozessor behandelter C-Code Endung.o übersetzte Objekt-Datei Archiver ar Kompilieren cc1 Endung.s vom Präprozessor behandelter Assembler-Code relocate Archiv (Endungen.lib,.a) Linken ld Shared Object (Endung.so) Ausführbare Datei 7

Binutils Die Binutils sind eine Sammlung von Tools, um Ausführbare Dateien für eine bestimmte CPU zu erzeugen und zu verändern. as Assembler, generiert ausführbaren Binär-Code aus Assembler-Quellcode ld Linker ar, ranlib Erzeugen.a Archive, werden für Bibliotheken verwendet objdump, readelf, size, nm, strings können zum analysieren des Binär-Codes genutzt werden. strip Entfernt unnötige Teile aus dem Binär-Code (z.b. Debugging Informationen) und reduziert damit die Größe. Stehen unter der GPL http://www.gnu.org/software/binutils 8

Kernel Header Die C-Bibliothek und kompilierte Programme müssen mit dem Kernel interagieren Vorhandene System-Calls und deren ID Konstanten Definitionen Daten Strukturen, etc. Deshalb werden zum Kompilieren der C-Bibliothek die Kernel Header benötigt Einige Applikationen brauchen die Kernel Header direkt Verfügbar in <linux/...> und <asm/...> 9

Kernel Header System-Call Ids in <asm/unistd.h> #define NR_exit 1 #define NR_fork 2 #define NR_read 3 Konstanten Definitionen z.b. in <asm generic/fcntl.h>. eingebunden von <asm/fcntl.h>, eingebunden von <linux/fcntl.h> #define O_RDWR 00000002 Daten Strukturen, z.b. in <asm/stat.h> struct stat { unsigned long st_dev; unsigned long st_ino; [ ] }; 10

Kernel Header Kernel User-Space ABI ist rückwärts kompatibel Binär-Code, der mit einer Toolchain erzeugt wurde, die ältere Kernel Header verwendet als der laufende Kernel, funktioniert. Er kann aber neue System-Calls nicht verwenden. Binär-Code, der mit einer Toolchain erzeugt wurde, der neuere Kernel Header verwendet als der laufende Kernel, wird laufen, solange keine neuen Funktionen genutzt werden Es ist nicht nötig die neuesten Kernel Header zu verwenden, es sei denn neue Features werden benötigt. Die Kernel Header werden aus dem Quell-Code Pfad des Kernels extrahiert mit make headers_install 11

Cross-Toolchain Bauen Es werden drei Maschinen unterschieden, wenn über das Generieren einer Cross-Toolchain gesprochen wird Build: Auf dieser wird die Toolchain gebaut Host: Auf dieser wird die Toolchain ausgeführt Target: Auf dieser sollen die erzeugten Binaries laufen 4 Variationen des Bauvorgangs sind möglich Build Host Target Build Host Target Native Build für den Bau des normalen gcc Build Host Target Cross-Native Build für den Bau einer Toolchain, die auf dem Target läuft und Code für das Target erzeugt. Cross Build für den Bau einer Toolchain, die auf dem Entwicklungsrechner läuft und Code für das Target erzeugt. Häufigtste Variante bei Embedded Systemen Build Host Target Canadian Build Toolchain wird auf A gebaut, läuft auf B und erzeugt Code für C 12

Cross-Toolchain Bauen Es müssen einige Entscheidungen vorab getroffen werden Welche C-Bibliothek? Versionen der verschiedenen Komponenten Konfiguration der Toolchain Welche ABI? Für ARM ist z.b. OABI (Old ABI) oder EABI (Embedded ABI) möglich Soll Software Flaoting Point Operationen genutzt werden oder unterstützt die Hardware dies? Soll locales, Ipv6 oder andere spezifische Features unterstützt werden 13

Cross-Toolchain Bauen Cross-Toolchain Bau-Report http://kegel.com/crosstool/crosstool-0.43/build.logs 14

Bauvorgang Kernel Header installieren Binutils konfigurieren, kompilieren und installieren Erste Version des gcc die Code für das Target erzeugt konfigurieren, kompilieren und installieren. Wird benötigt, um die C-Bibliothek zu kompilieren C-Bibliothek konfigurieren und mit gerade erzeugtem gcc kompilieren Endgültigen gcc konfigurieren und kompilieren Achtung: Viele Fallstricke, setzt einiges an Know-How voraus. 15

Fertige Cross-Toolchains Einfacher ist es vorgefertigte Toolchains zu verwenden CodeSourcery Bietet nur glibc Toolchains http://www.codesourcery.com Siehe http://elinux.org/toolchains Alternativ können auch fertige Tools zum Bauen einer Toolchain genutzt werden Crosstool von Dan Kegel http://www.kegel.com/crosstool Crosstool-ng Neu geschriebene Crosstool Unterstützt µclibc, glibc, eglibc http://ymorin.is-a-geek.org/dokuwiki/projects/crosstool 16

Tools zum Bauen der Toolchain Es gibt zahlreiche root-filesystem Bausysteme, die das Erstellen einer Cross-Toolchain ermöglichen Buildroot PTXdist Makefile basiert Nur µclibc Von Community betreut http://buildroot.uclibc.org Makefile basiert µclibc und glibc Von Pengutronix betreut http://www.pengutronix.de/software/ptxdist OpenEmbedded Breite Unterstützung, aber komplex http://www.openembedded.org 17