mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gnu Cross Compiler


Autor: Anthony (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir mal jemand erklären, wie der gnu cross compiler funktioniert.
Ich möchte nähmlich ein C file, dass ich in Windows geschrieben habe,
auf ein mit embedded Linux laufenden Prozessor laden. Dafür brauche ich
den compiler oder?

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Suchmaschine der Wahl mit den Stichworten
cross compiler linux embedded
füttern? Lesen. Welche Fragen bleiben offen?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anthony wrote:
> Kann mir mal jemand erklären, wie der gnu cross compiler funktioniert.
> Ich möchte nähmlich ein C file, dass ich in Windows geschrieben habe,
> auf ein mit embedded Linux laufenden Prozessor laden. Dafür brauche ich
> den compiler oder?

Ja. Plus mehr, nämlich die sog. Toolchain.

Ein C-Compiler übersetzt C Quellcode in Assembler Quellcode. Ein 
Assembler übersetzt den Assembler Quellcode in Objektcode. Ein Linker 
bindet Objektcode und Libraries zu einem Programm zusammen. 
Hilfsprogramme vereinfachen diese Kette von Anweisungen. Zu den 
Hilfsprogrammen gehören je nach Ansicht make, Compileraufrufer, 
Binutils, Paketmanager, ...

Bei einer nativen Toolchain werden auf dem Rechner mit der Architektur X 
Programme erzeugt, die auf der Architektur X laufen.

Bei einer Cross-Toolchain werden auf dem Rechner mit der Architektur X 
Programme erzeugt, die auf der Architektur Y laufen.

Eine wesentliche Änderung ist offensichtlich - der Cross-C-Compiler muss 
u.U. Assembler Quellcode für einen anderen Prozessor erzeugen. Damit er 
das kann, ist er meistens von Toolchainbauern mit speziellen 
Einstellungen (Optionen) aus den Ursprungssourcen (die jeder von GNU 
ziehen kann) übersetzt worden.

Weniger offensichtlich ist, dass die Libraries und Includefiles des 
Zielsystems (Target) auf dem Entwicklungsrechner (Host) vorhanden sein 
müssen.

Und man muss sich bei Programmen, die auf mehreren verschiedenen 
Architekturen laufen sollen, auf den kleinsten gemeinsamen Nenner bei 
den Libraries beschränken.

Damit das Bild rund wird, packen die Toolchainbauer also alles benötigte 
für Entwicklung unter Windows, Linux, ... getrennt in ein Paket zusammen 
und bieten das dann auf eigenen Seiten zum Download an. Meistens nur mit 
dem Hinweis wo es die allgemeinen Sourcen gibt (Gnu...) und ggf. was wie 
warum speziell geändert ist.

Eine Kunst beim Crosscompilieren ist es, seine Installation der nativen 
Toolchain nicht mit der Installation der Cross-Toolchain zu mixen. 
Passiert einem das nämlich, vermurkst man sich seine native Toolchain 
und kann keine Programme mehr für sein Entwicklungssystem übersetzen.

Oft wird der Kuddelmuddel vermieden, in dem man den Programmen der 
Cross-Toolchain spezielle Programmnamen gibt. Also wenn Target AVR ist, 
dann ist der Cross-C-Compiler der avr-gcc und der native C Compiler der 
übliche gcc.

Wenn also eine Cross-Toolchain auf dem Entwicklungsrechner Windows läuft 
und das Target AVR bedient, dann liegt der Name WinAVR nahe.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Workshop: Crosscompiling für Embedded-Systeme
GNU-Tools mal kreuzweise
von René Rebe
Erschienen im Linux-Magazin 2008/04
http://www.linux-magazin.de/layout/set/print/conte...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach Kinder. Das Teil heißt GNU Compiler Collection -> also GCC. Und 
nichts anderes.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.