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?
Suchmaschine der Wahl mit den Stichworten cross compiler linux embedded füttern? Lesen. Welche Fragen bleiben offen?
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.
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/content/view/full/20442
Ach Kinder. Das Teil heißt GNU Compiler Collection -> also GCC. Und nichts anderes.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.