Frage

Ich interessiere mich für cross-kompilieren Linux-kernel für ARM Ziel auf einem x86-host.Gibt es einige gute Methoden, die Sie empfehlen?Was ist die beste cross-kompilieren suite, deiner Meinung nach?Haben Sie sich ein eigenes cross-compile Umgebung?Wenn ja, welche Tipps haben Sie?Ist es eine gute Idee?

War es hilfreich?

Lösung

Es gibt zwei Ansätze, die ich für ARM / Linux-Tools verwendet haben. Am einfachsten ist es, einen vorgefertigten Werkzeugkette direkt zum Download bereit.
Pro : Es funktioniert einfach und Sie können mit dem interessanten Teil des Projekts
erhalten auf Con : Sie sind mit je nachdem, welche Version von gcc / binutils stecken / libc sie gepflückt

Wenn die später Fragen Sie Besuche cross-ng . Dieses Projekt ist ein Konfigurationstool ähnlich die Konfigurationsanwendung Linux-Kernel. Stellen Sie, welche Versionen von gcc, binutils, libc (GNU oder uclibc), Gewindeschneiden, und Linux-Kernel zu bauen und cross-ng erledigt den Rest (d lädt die Teerklumpen, konfiguriert die Werkzeuge und baut sie).
Pro : Sie bekommen genau das, was Sie bei der Konfiguration ausgewählt
Con : Sie bekommen genau das, was Sie bei der Konfiguration ausgewählt

Sie übernehmen die volle Verantwortung bedeutet für die Wahl der Compiler / binutil / libc und ihre zugehörigen Funktionen / Mängel / Fehler. Wie auch in den Kommentaren erwähnt, gibt es einige „Schmerz“ bei der Auswahl der Versionen von binutils beteiligt, C-Bibliothek usw., da nicht alle Kombinationen notwendigerweise zusammenarbeiten oder sogar aufzubauen.

Ein Hybrid-Ansatz könnte sein, mit den vorgefertigten Tool zu starten und ersetzen Sie sie später mit einer benutzerdefinierten Lösung über cross-ng, falls erforderlich.

Aktualisieren : Die Antwort verwendet ursprünglich die CodeSourcery Tools als ein Beispiel für einen vorgefertigten Werkzeugkette. Die CodeSourcery Tools für ARM waren frei href="http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/" rel="nofollow noreferrer"> Download Mentor Graphics, aber sie sind jetzt die Sourcery Codebench und müssen erworben werden von Mentor Graphics genannt. Andere Optionen enthalten jetzt Linaro sowie Verteilung spezifische Tools von Android, Ubuntu und andere.

Andere Tipps

verwende ich die emdebian Toolchain Sachen für meinen ARM-Rechner für die Erstellung, die nicht glücklich ist nativ in den kleinen Ressourcen kompiliert wird (/ me auf Kernel-grellen Glanz). Das Haupt Paket ist gcc-4.X-arm-linux-gnueabi (X = 1,2,3), und liefert entsprechend gcc / CPP / ld / etc Befehle suffixed. Ich füge diese zu meinen sources.list:

deb http://www.emdebian.org/debian/ unstable main

Natürlich, wenn Sie nicht Debian verwenden, ist dies wahrscheinlich nicht so nützlich ist, sondern von Gummi es funktioniert gut für mich.

Ich habe verwendet scratchbox während mit dem Bau Apps für Maemo (Nokia N810) zu experimentieren, die einen ARM verwendet Prozessor. Angeblich ist scratchbox nicht auf maemo Entwicklung beschränkt.

Ich habe crosstool auf mehrere Ziele.Es ist toll, so lange wie Sie wollen zu erstellen Sie Ihre toolchain von Grund auf neu.Natürlich gibt es auch einige pre integrierte Werkzeugketten für arm, nur google es, -- zu viele, um Sie hier zu erwähnen.

1) meiner Meinung nach bauen Sie Ihre eigene toolchain funktioniert am besten.Sie müssen die Kontrolle über alles, plus, wenn Sie sind neue zu embedded linux, es ist eine GROßARTIGE Lernerfahrung.

2) gehen Sie nicht mit einem kommerziellen toolchain.Auch wenn Sie nicht die Zeit nehmen wollen, Ihre eigenen zu bauen, gibt es Kostenlose alternativen gibt.

Wenn Ihr Unternehmen das Geld ausgeben, müssen Sie kaufen Sie ein jtag-debugger.
Es wird sparen Sie viel Zeit. und es ermöglicht Ihnen, auf einfache Weise lernen und Schritt durch den kernel startup, etc..Ich empfehle sehr, die Lauterbach jtag-Produkte...Sie funktionieren mit einer Tonne von Zielen und die software ist cross-Plattform.Ihre Unterstützung ist groß.

Wenn Sie nicht bekommen kann eine jtag-debugger und Sie arbeiten im kernel, verwenden Sie eine VM, das zu tun, usermode linux, vmware..etc..Ihr code wird getestet werden auf x86..Portierung auf Ihren arm, Ziel wird es sein eine andere Geschichte, aber es ist ein billiger Weg, um Eisen aus einigen bugs.

Wenn Sie portieren Sie einen bootloader verwenden uboot.Natürlich, wenn Sie mit einer Referenz-Plattform, dann sind Sie wahrscheinlich besser dran mit dem, was Sie mit den BSP.

Ich hoffe, das hilft.

Buildroot ist ein Werkzeug, das ich mit ziemlich viel Glück gehabt haben für den Aufbau einer benutzerdefinierten uClibc-basierte Toolchain aus kratzen. Es ist sehr anpassbar und nicht übermäßig besonders über das, was geschehen Verteilung Sie laufen weiter.

Auch viele seiner bestehenden Benutzer (dh. Embedded-Router-Distributionen) auch ARM-Targeting.

Wenn Sie Gentoo verwenden, eine Cross-Kompilierung Werkzeugkette bekommen ist so einfach wie

$ emerge crossdev
$ crossdev -t $ARCH-$VENDOR-$OS-$LIBC

Dabei gilt ARCH arm oder armeb ist, VENDOR ist unknown oder softfloat, OS linux ist, und LIBC ist gnu oder uclibc.

Wenn alles, was Sie wollen, ist ein Compiler (und Linker) für den Kernel, der LIBC Teil ist irrelevant, und Sie können -s1 / --stage1 verwenden crossdev zu informieren, dass Sie nur binutils und gcc benötigen.

Dies ist, was Eurotech verwendet für ihre Debian ARM distibution. Sie werden bemerken, dass sie mit einem Cross-Compiler nicht empfehlen, wenn Sie es vermeiden können. Kompilieren auf dem Ziel tendiert dazu, sich ein zuverlässiger Weg, um Ausgaben zu sein, dass Sie laufen wissen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top