मैं इसे आपके लिए एक ट्यूटोरियल के रूप में लिखने का प्रयास करने जा रहा हूं, इसलिए इसका पालन करना आसान हो जाता है।
नोट: यह ट्यूटोरियल केवल पुराने रास्पियन छवियों के लिए काम करता है। डेबियन बस्टर पर आधारित नए रास्पबियन के लिए निम्नलिखित देखें कि इस धागे में कैसे: https://stackoverflow.com/a/58559140/869402
पूर्व आवश्यकताएं
शुरू करने से पहले आपको यह सुनिश्चित करने की आवश्यकता है कि निम्नलिखित स्थापित है:
apt-get install git rsync cmake ia32-libs
चलो एक संकलन संकलन पार!
कहा जाता है अपने घर निर्देशिका में एक फ़ोल्डर बनाने के साथ शुरू करो raspberrypi
।
इस फ़ोल्डर पर जाएं और ऊपर उल्लिखित ENTIRE टूल फ़ोल्डर को नीचे खींचें:
git clone git://github.com/raspberrypi/tools.git
यदि आप gcc-linaro-arm-linux-gnueabihf-raspbian
गलत नहीं पढ़ते हैं, तो आप निम्नलिखित 3 का उपयोग करना चाहते हैं।
अपनी होम निर्देशिका में जाएं और जोड़ें:
export PATH=$PATH:$HOME/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
नामित फ़ाइल के अंत तक ~/.bashrc
अब आप या तो लॉग आउट कर सकते हैं और वापस लॉग इन कर सकते हैं (अर्थात अपने टर्मिनल सत्र को पुनः आरंभ करें), या . ~/.bashrc
अपने टर्मिनल में PATH
अतिरिक्त टर्मिनल सत्र को लेने के लिए अपने टर्मिनल में दौड़ें ।
अब, सत्यापित करें कि आप कंपाइलर का उपयोग कर सकते हैं arm-linux-gnueabihf-gcc -v
। आपको कुछ इस तरह से मिलना चाहिए:
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
)
लेकिन नमसते! मैंने ऐसा किया और काम अभी भी काम नहीं करता है!
हम अभी तक नहीं कर रहे हैं! अब तक, हमने केवल मूल बातें की हैं।
अपने raspberrypi
फोल्डर में, फोल्डर बनाएं rootfs
।
अब आपको इस नए बनाए गए फ़ोल्डर में संपूर्ण /lib
और /usr
निर्देशिका को कॉपी करने की आवश्यकता है । मैं आमतौर पर आरपीआई छवि लाता हूं और इसे rsync के माध्यम से कॉपी करता हूं:
rsync -rl --delete-after --safe-links pi@192.168.1.PI:/{lib,usr} $HOME/raspberrypi/rootfs
जहां 192.168.1.PI
आपके रास्पबेरी पाई के आईपी द्वारा प्रतिस्थापित किया गया है।
अब, हमें एक cmake
विन्यास फाइल लिखने की जरूरत है । ~/home/raspberrypi/pi.cmake
अपने पसंदीदा संपादक में खोलें और निम्नलिखित डालें:
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)
अब आपको cmake
इस अतिरिक्त ध्वज को जोड़कर अपने कार्यक्रमों को संकलित करने में सक्षम होना चाहिए -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake
:।
एक cmake हैलो दुनिया उदाहरण का उपयोग कर :
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