So installieren Sie das Raspberry Pi-cross-compiler auf meinem Linux-host-Maschine?
Ich bin versucht zu bekommen cross-compiling für den Raspberry Pi an meinem Ubuntu-Rechner.
Während meiner ersten versuche war ich mit der arm-linux-gnueabi-compiler, welcher in der Ubuntu-repo. Ich habe diese arbeiten. Ich war in der Lage, all meine Abhängigkeiten und der Verwendung des cross-Compilers in meinen cmake-Projekt.
Aber ich glaube, ich sollte mit der hf-version, also wechselte ich zu arm-linux-gnueabihf. Dann erkannte ich, dass dies nicht funktioniert mit Raspberry Pi, da es armv6.
Nach etwas Googlen habe ich dann gefunden, die vorgefertigte toolchain von GitHub.
Ich habe die toolchain, aber ich weiß nicht wirklich verstehen, wie "installiere" es. Ich extrahiert die Dateien in mein home-Verzeichnis. Die Verzeichnis-Struktur sieht wie folgt aus:
/gcc-linearo-arm-linux-gnueabihf-raspbian
/arm-linux-gnueabihf
/bin
(contains g++, gcc, etc)
/lib
(contains libstdc++ library)
/bin
(contains arm-linux-gnueabihf-g++, arm-linux-gnueabihf-...)
/lib
(gcc lib stuff)
Wenn ich das Verzeichnis ändern, um den INNEREN Ordner " bin " ich bin in der Lage zu kompilieren Sie ein test-Programm aus dem terminal ohne irgendwelche Probleme.
~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/
arm-linux-gnueabihf/bin$ g++ test.cpp -o test
Dann habe ich versucht zu kompilieren Sie ein test-Programm in den ÄUßEREN bin-Ordner, die enthält das Präfix-Versionen der tools.
~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$
arm-linux-gnueabihf-g++ test.cpp -o test
Jedoch, wenn ich versuche, verwenden Sie die compiler jetzt (von außen das innere bin-Verzeichnis), es ist nicht in der Lage zu finden, die libstdc++ - shared-library, die mit der toolchain:
arm-linux-gnueabihf-gcc: error while loading shared libraries:
libstdc++.so.6: cannot open shared object file: No such file or directory.
Darüber hinaus möchte ich in der Lage sein zu verwenden, der compiler ohne navigieren Sie zu dem bin Verzeichnis. Also habe ich versucht, indem die ÄUßERE Verzeichnis bin (da ich möchte, dass die Präfix-Versionen) und die beiden lib-Verzeichnisse zu meinem WEG:
export PATH=$PATH:~/tools/.../bin
export PATH=$PATH:~/tools/.../lib
export PATH=$PATH:~/tools/.../.../lib
Jedoch, diese Ergebnisse in die gleichen Fehler. Wie soll ich das "installieren" der toolchain, so dass ich kann verwenden Sie die toolchain von überall her, nur wie kann ich, wenn ich den cross-Compiler aus dem Ubuntu repo?
- Versuchen Sie, --sysroot über CMAKE_C{XX}_FLAGS zu installieren, dir.
- Ich versuchte einige unterschiedliche Wege --sysroot, aber das hat nicht geholfen. Ich bin mir nicht wirklich sicher, welchen Weg ich sollte angeben, für die sysroot. Siehe oben bezüglich der Verzeichnis-Struktur der toolchain. Auch, etwas Googlen scheint darauf hinzudeuten, dass --sysroot nicht helfen, für libstdc++.
- Ich würde versuchen entweder /gcc-linearo-arm-linux-gnueabihf-raspbian oder /gcc-linearo-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf
- gehen Sie hier, launchpad.net/gcc-arm-embedded und laden den tarball herunter und entpacken es. Stellen Sie Ihren Pfad auf das bin Verzeichnis...fertig. Oder gehen Sie zu codesourcery.com (jetzt mentor graphics) Holen Sie sich die lite-version, entpacken/bz, setzen Sie Ihren Weg in das bin Verzeichnis...fertig.
- Bezogen auf RPI-SE: raspberrypi.stackexchange.com/questions/64273/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich versuche zu schreiben so ein tutorial für Euch, so wird es leicht, zu Folgen.
Voraussetzungen
Bevor Sie beginnen, müssen Sie sicherstellen, dass Folgendes installiert ist:
Let ' s cross kompilieren eine Torte!
Zunächst einen Ordner in Ihrem home-Verzeichnis genannt
raspberrypi
.Gehen Sie in diesen Ordner, und ziehen Sie den GESAMTEN Ordner tools, die Sie bereits erwähnt:
Sie wollte, verwenden Sie den folgenden der 3 diejenigen,
gcc-linaro-arm-linux-gnueabihf-raspbian
, wenn ich nicht falsch gelesen.Gehen Sie in Ihr home-Verzeichnis und fügen Sie hinzu:
dem Ende der Datei mit dem Namen
~/.bashrc
Nun können Sie sich entweder Abmelden und wieder anmelden (d.h. starten Sie Ihre terminal-Sitzung), oder führen Sie
. ~/.bashrc
in Ihrem terminal abholenPATH
hinaus in Ihrem aktuellen terminal-Sitzung.Nun, stellen Sie sicher, dass Sie Zugriff auf den compiler
arm-linux-gnueabihf-gcc -v
. Sie sollten etwas wie diese:Aber hey! Ich Tat, und die libs noch funktionieren nicht!
Wir sind noch nicht fertig! Bisher haben wir nur die Grundlagen.
In Ihrem
raspberrypi
Ordner, erstellen Sie einen Ordner namensrootfs
.Nun müssen Sie kopieren die gesamte
/lib
und/usr
Verzeichnis zu diesem neu erstellten Ordner. Ich in der Regel bringen die rpi-image und kopieren es über rsync:wo
192.168.1.PI
wird ersetzt durch die IP-Adresse Ihres Raspberry Pi.Nun, wir müssen schreiben Sie eine
cmake
config-Datei. Öffnen~/home/raspberrypi/pi.cmake
in Ihrem bevorzugten editor und fügen Sie die folgenden:Nun sollten Sie in der Lage sein zu kompilieren
cmake
Programme einfach durch das hinzufügen dieser extra-flag:-D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake
.Mit einem cmake hello world Beispiel:
omxplayer
odermpich
? Würde ich nur tun./configure -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake; make; sudo make install
oder./configure; make -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake; sudo make install
oder./configure; make; sudo make -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake install
ia32-libs
- Paket ist nicht verfügbar auf Ubuntu 13.10. Ich verwendetlibc6-i386 lib32z1 lib32stdc++6
statt.pi.cmake
auf ubuntu mit cmake 2.8.11.2 :SET(CMAKE_CXX_FLAGS "-L$ENV{HOME}/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf $ENV{HOME}/raspberrypi/rootfs/lib/arm-linux-gnueabihf
E: Unable to locate package ia32-libs
. Ich sah es, aber alles was ich finden konnte, war die Menschen laufen in dieses Problem, wenn Sie versuchen zum installieren von ia32-libs auf 64-bit-Debian Wheezy, das ist nicht mein problem.Konnte ich nicht, der compiler (
x64
version) zu verwenden, diesysroot
bis ich HinzugefügtSET(CMAKE_SYSROOT $ENV{HOME}/raspberrypi/rootfs)
zupi.cmake
.Für Windows-host, möchte ich empfehlen dieses tutorial::
Nichts mehr, nichts weniger!
Vorkompilierte GNU-Toolchains verfügbar für Raspberry, Beaglebone, Cubieboard, AVR (Atmel) und mehr
Können Sie verwenden clang als gut. Es verwendet, um schneller als GCC, und jetzt es ist schon eine stabile Sache. Es ist viel einfacher zu bauen, clang von Quellen (kann man wirklich trinken Tasse Kaffee während des build-Prozesses).
Kurz:
bauen (Lesen Sie die Anweisungen hier)
möglicherweise der eigentliche rootfs mounted via sshfs oder ein Bild).
Kompilieren Sie Ihren code:
Optional können Sie die Verwendung von legacy-arm-linux-gnueabihf-binutils. Dann können Sie entfernen "-fuse-ld=lld" fahne am Ende.
Unten ist mein cmake-toolchain-Datei.
toolchain.cmake
Konnte ich nicht kompilieren QT5 mit einer der (ziemlich veraltet) toolchains aus git://github.com/raspberrypi/tools.git. Das configure-Skript gehalten nicht mit einem "konnte nicht ermittelt Architektur" Fehler und massive Pfad Probleme für die include-Verzeichnisse. Was für mich gearbeitet wurde mit der Linaro toolchain
in Kombination mit
Nicht zu beheben die symlinks von den sysroot führt zu einer undefined symbol Fehler wie hier beschrieben: Ein Fehler Gebäudes Qt-Bibliotheken für den raspberry pi
Dies geschah zu mir, wenn ich versuchte, die fixQualifiedLibraryPaths Skript von tools.git. Alles andere ist im detail beschrieben in http://wiki.qt.io/RaspberryPi2EGLFS . Meine Einstellungen konfiguriert wurden:
mit /usr/local/Raspel/sysroot der Pfad von meinem lokalen Raspberry Pi 3 Raspbian (Jessie) system kopieren und /usr/local/qt5pi der Pfad der cross-kompilierte QT, die auch auf das Gerät kopiert werden. Werden Sie sich bewusst, dass Jessie kommt mit GCC 4.9.2 Sie bei der Auswahl der toolchain.
Ursprünglichen Frage gepostet wurde, schon vor einiger Zeit und in der Zwischenzeit Debian hat riesige Fortschritte im Bereich der multiarch-Unterstützung.
Multiarch ist eine große Errungenschaft für die cross-compilation!
In Kürze die folgenden Schritte sind erforderlich, um nutzen multiarch für Raspbian Jessie cross-Kompilation:
Da dies eine Menge Arbeit, die ich automatisiert haben, die oben genannten setup. Sie können darüber Lesen Sie hier:
Cross-Compilierung für Raspbian
es ist eine CDP-Studio-IDE zur Verfügung, das cross-kompilieren und bereitstellen-ganz einfach von windows-und linux und Sie können einfach überprüfen Sie die Himbeer-toolchain Kontrollkästchen während der installation.
(PS. es hat GPIO und I2C-Unterstützung, so dass kein code benötigt wird, der Zugriff auf diese)
Den IDE-demo von Himbeeren verwenden, ist hier oben:
https://youtu.be/4SVZ68sQz5U
und laden Sie die IDE hier: https://cdpstudio.com/home-edition