Ich werde versuchen, dies als Tutorial für Sie zu schreiben, damit es leicht zu befolgen ist.
HINWEIS: Dieses Tutorial funktioniert nur für ältere Raspbian-Bilder. Für das neuere Raspbian, das auf Debian Buster basiert, lesen Sie die folgenden Anleitungen in diesem Thread: https://stackoverflow.com/a/58559140/869402
Voraussetzungen
Bevor Sie beginnen, müssen Sie sicherstellen, dass Folgendes installiert ist:
apt-get install git rsync cmake ia32-libs
Lassen Sie uns einen Kuchen kreuzen!
Beginnen Sie mit dem Erstellen eines Ordners in Ihrem Home-Verzeichnis mit dem Namen raspberrypi
.
Gehen Sie in diesen Ordner und öffnen Sie den oben erwähnten Ordner mit den GESAMTEN Werkzeugen:
git clone git://github.com/raspberrypi/tools.git
Sie wollten die folgenden 3 verwenden gcc-linaro-arm-linux-gnueabihf-raspbian
, wenn ich nicht falsch gelesen habe.
Gehen Sie in Ihr Home-Verzeichnis und fügen Sie hinzu:
export PATH=$PATH:$HOME/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
bis zum Ende der benannten Datei ~/.bashrc
Jetzt können Sie sich entweder abmelden und wieder anmelden (dh Ihre Terminalsitzung neu starten) oder . ~/.bashrc
in Ihrem Terminal ausführen , um den PATH
Zusatz in Ihrer aktuellen Terminalsitzung aufzunehmen.
Stellen Sie nun sicher, dass Sie auf den Compiler zugreifen können arm-linux-gnueabihf-gcc -v
. Sie sollten so etwas bekommen:
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/tudhalyas/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../libexec/gcc/arm-linux-gnueabihf/4.7.2/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.b
uild/src/gcc-linaro-4.7-2012.08/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-
linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oort61/crosstool-ng/builds/arm-l
inux-gnueabihf-raspbian-linux/install --with-sysroot=/cbuild/slaves/oort61/crosstool-ng/builds/
arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fo
rtran --disable-multilib --with-arch=armv6 --with-tune=arm1176jz-s --with-fpu=vfp --with-float=
hard --with-pkgversion='crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08' --with-bugurl=
https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgom
p --enable-libssp --with-gmp=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-rasp
bian-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/cbuild/slaves/oort61/crosstool-
ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpc
=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-
gnueabihf/build/static --with-ppl=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf
-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/cbuild/slaves/oort61/cros
stool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --wi
th-libelf=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/a
rm-linux-gnueabihf/build/static --with-host-libstdcxx='-L/cbuild/slaves/oort61/crosstool-ng/bui
lds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static/lib -lpwl' --ena
ble-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-plugin --enable-gol
d --with-local-prefix=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-li
nux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08
)
Aber hey! Ich habe das gemacht und die Bibliotheken funktionieren immer noch nicht!
Wir sind noch nicht fertig! Bisher haben wir nur die Grundlagen gemacht.
raspberrypi
Erstellen Sie in Ihrem Ordner einen Ordner mit dem Namen rootfs
.
Nun müssen Sie das gesamte kopieren /lib
und /usr
Verzeichnis in diesem neu erstellten Ordner. Normalerweise rufe ich das RPI-Bild auf und kopiere es über rsync:
rsync -rl --delete-after --safe-links pi@192.168.1.PI:/{lib,usr} $HOME/raspberrypi/rootfs
wo 192.168.1.PI
wird durch die IP Ihres Raspberry Pi ersetzt.
Jetzt müssen wir eine cmake
Konfigurationsdatei schreiben . Öffnen Sie ~/home/raspberrypi/pi.cmake
in Ihrem bevorzugten Editor und fügen Sie Folgendes ein:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_C_COMPILER $ENV{HOME}/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER $ENV{HOME}/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/raspberrypi/rootfs)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Jetzt sollten Sie in der Lage sein, Ihre cmake
Programme einfach durch Hinzufügen dieses zusätzlichen Flags zu kompilieren : -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake
.
Verwenden eines Beispiels für eine cmake-Hallo-Welt :
git clone https://github.com/jameskbride/cmake-hello-world.git
cd cmake-hello-world
mkdir build
cd build
cmake -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake ../
make
scp CMakeHelloWorld pi@192.168.1.PI:/home/pi/
ssh pi@192.168.1.PI ./CMakeHelloWorld