Saya akan mencoba menulis ini sebagai tutorial untuk Anda agar mudah diikuti.
CATATAN: Tutorial ini hanya berfungsi untuk gambar raspbian lama. Untuk Raspbian yang lebih baru berdasarkan Debian Buster, lihat petunjuk berikut di utas ini: https://stackoverflow.com/a/58559140/869402
Prasyarat
Sebelum Anda mulai, Anda perlu memastikan yang berikut ini telah diinstal:
apt-get install git rsync cmake ia32-libs
Mari kita menyusun ulang Pie!
Mulailah dengan membuat folder di direktori home Anda dengan nama raspberrypi.
Masuk ke folder ini dan tarik ke bawah seluruh folder alat yang Anda sebutkan di atas:
git clone git://github.com/raspberrypi/tools.git
Anda ingin menggunakan yang berikut dari 3 yang gcc-linaro-arm-linux-gnueabihf-raspbian, jika saya tidak salah baca.
Masuk ke direktori home Anda dan tambahkan:
export PATH=$PATH:$HOME/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
ke akhir file bernama ~/.bashrc
Sekarang Anda dapat keluar dan masuk kembali (yaitu memulai kembali sesi terminal Anda), atau menjalankan . ~/.bashrcdi terminal Anda untuk mengambilPATH tambahan dalam sesi terminal Anda saat ini.
Sekarang, verifikasi bahwa Anda dapat mengakses kompiler arm-linux-gnueabihf-gcc -v. Anda harus mendapatkan sesuatu seperti ini:
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
)
Tapi hey! Saya melakukan itu dan libs masih tidak berfungsi!
Kami belum selesai! Sejauh ini, kami hanya melakukan dasar-dasarnya.
Di raspberrypifolder Anda , buat folder bernama rootfs.
Sekarang Anda perlu menyalin seluruh direktori /libdan /usrke folder yang baru dibuat ini. Saya biasanya memunculkan gambar rpi dan menyalinnya melalui rsync:
rsync -rl --delete-after --safe-links pi@192.168.1.PI:/{lib,usr} $HOME/raspberrypi/rootfs
di mana 192.168.1.PIdiganti dengan IP Raspberry Pi Anda.
Sekarang, kita perlu menulis cmakefile konfigurasi. Buka ~/home/raspberrypi/pi.cmakedi editor favorit Anda dan masukkan yang berikut ini:
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)
Sekarang Anda seharusnya dapat mengkompilasi cmakeprogram Anda hanya dengan menambahkan tanda tambahan ini:-D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake .
Menggunakan contoh cmake hello world :
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