परिचय
यह रास्पबेरी पाई 4 के लिए क्यूटी 5.15.2 को क्रॉस-संकलन करने और इसे कम्प्यूट मॉड्यूल 4 पर स्थापित करने के लिए एक गाइड है। यह रास्पबेरी पाई 4 पर मेरे ब्लॉग पोस्ट क्यूटी के लिए एक अपडेट है, इस अंतर के साथ कि इस बार मैं रास्पबेरी पाई ओएस लाइट (यहां डाउनलोड करें: https://www.raspberrypi.org/software/operating-systems/), क्यूटी संस्करण 5.15.2 और उबंटू 20 एलटीएस का उपयोग वर्चुअल मशीन में क्रॉस-कंपाइल कंप्यूटर के रूप में कर रहा हूं।
स्रोत
मेरे पुराने ब्लॉग पोस्ट (ऊपर देखें) के अलावा, मैंने निम्नलिखित स्रोतों का भी उपयोग किया:
- उविंदु विजेसिंघे द्वारा: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
ध्यान
इस लेख के लिए एक अद्यतन है, जिसमें Raspberry Pi, Qt6 और Ubuntu 22.04 LTSके लिए क्रॉस संकलन शामिल है। इस लिंक का अनुसरण करें, यदि आपको नए संस्करणों की आवश्यकता है।
रास्पबेरी पाई ओएस लाइट
रास्पबेरी पाई 4 पर या रास्पबेरी कम्प्यूट मॉड्यूल 4 पर रास्पबेरी पाई ओएस लाइट स्थापित करें जैसा कि रास्पबेरी कम्प्यूट मॉड्यूल 4 पर रास्पबेरी पाई ओएस स्थापित करने के मेरे ब्लॉग पोस्ट में वर्णित है।
उबंटू 20 एलटीएस पर क्यूटी 5.15.2
रास्पबेरी पाई ओएस को कम्प्यूट मॉड्यूल पर स्थापित करने और रास्पबेरी बूट को ईएमएमसी मेमोरी से वापस लाने के बाद, रास्पबेरी और उबंटू मशीन पर आवश्यक सॉफ़्टवेयर स्थापित करने का समय आ गया है।
रास्पबेरी कम्प्यूट मॉड्यूल 4
नीचे दिखाए गए चरणों को "सामान्य" रास्पबेरी पाई 4 पर भी काम करना चाहिए।
पाई 4 पर स्विच करने के बाद, कॉन्फ़िगरेशन मेनू खोलें।
sudo raspi-config
हमारे कॉन्फ़िगरेशन के लिए हमें "एसएसएच" और "जीएल (नकली केएमएस)" की आवश्यकता है। निम्नलिखित दो स्क्रीनशॉट देखें।- फिर विकास स्रोतों को /etc/apt/sources.list में जोड़ें। ऐसा करने के लिए, निम्न पंक्ति जोड़ें:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- फिर निम्नलिखित आदेशों के साथ सिस्टम को अपडेट करें:sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
- और फिर आवश्यक क्यूटी और विकास पैकेज स्थापित करें:sudo apt-get build-dep qt5-qmake
sudo apt-get build-dep libqt5gui5
sudo apt-get build-dep libqt5webengine-data
sudo apt-get build-dep libqt5webkit5
sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 gdbserver
- फिर रास्पबेरीक्यूटी के लिए एक निर्देशिका बनाएं:sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
उबंटू मशीन
उबंटू 20 एलटीएस स्थापित के साथ एक पीसी या वर्चुअल मशीन की आवश्यकता है।
सबसे पहले, उबंटू को अद्यतित करें और कुछ आवश्यक पुस्तकालय स्थापित करें:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gcc git bison python gperf pkg-config gdb-multiarch
sudo apt install build-essential
फिर - यदि पहले से उपलब्ध नहीं है - एक एसएसएच-कुंजी बनाएं और इसे रास्पबेरी पर स्थापित करें, ताकि प्रत्येक आरसिंक के साथ एक पासवर्ड प्रॉम्प्ट दिखाई न दे और उपयोगकर्ता नाम और पासवर्ड दर्ज करना पड़े। इंटरनेट पर पर्याप्त निर्देश हैं, इसलिए मैं खुद को यहां विस्तृत विवरण दूंगा।
रास्पबेरी पुस्तकालयों के लिए निर्देशिका संरचना बनाएँ
आवश्यक फ़ाइलों के लिए, मैं दस्तावेज़ों/क्यूटी-क्रॉसकंपाइल-रास्पबेरीपी/रास्पबेरीपि4 के तहत निम्नलिखित निर्देशिका संरचना बनाता हूं:
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/build
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/tools
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot/usr
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot/opt
sudo chown -R 1000:1000 ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4
cd ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4
क्यूटी संसाधन डाउनलोड करें
हम क्यूटी संसाधनों को डाउनलोड करते हैं और उन्हें रास्पबेरी 4 निर्देशिका में अनपैक करते हैं:
sudo wget http://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz
sudo tar xfv qt-everywhere-src-5.15.2.tar.xz
अब हमें एमकेस्पेक फ़ाइल को थोड़ा संशोधित करने की आवश्यकता है ताकि हम इसे अपने कंपाइलर के साथ उपयोग कर सकें। ऐसा करने के लिए, निम्न आदेश चलाएँ:
cp -R qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabi-g++ qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabihf-g++
sed -i -e 's/arm-linux-gnueabi-/arm-linux-gnueabihf-/g' qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabihf-g++/qmake.conf
क्रॉस-कंपाइलर डाउनलोड करें
एक क्रॉस-कंपाइलर के रूप में मैं लिनारो संस्करण 7.4.1 का उपयोग करता हूं। ऐसा करने के लिए, उपकरण निर्देशिका में बदलें और कंपाइलर को डाउनलोड और अनपैक करें:
cd tools
sudo wget https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
tar xfv gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
रास्पबेरी पुस्तकालयों का आरसिंक
अब हमें रास्पबेरी पाई से मूल पुस्तकालयों की आवश्यकता है, जिसे हम आरसिंक के साथ उबंटू निर्देशिकाओं में कॉपी करते हैं:
cd ..
rsync -avz --rsync-path="sudo rsync" --delete [email protected]:/lib sysroot/
rsync -avz --rsync-path="sudo rsync" --delete [email protected]:/usr/include sysroot/usr/
rsync -avz --rsync-path="sudo rsync" --delete [email protected]:/usr/lib sysroot/usr/
rsync -avz --rsync-path="sudo rsync" --delete [email protected]:/opt/vc sysroot/opt/
अब हमें उन प्रतीकात्मक लिंक को साफ करना होगा जो आरसिंक द्वारा कॉपी किए गए थे ताकि वे सही मूल फ़ाइलों को इंगित करें। डाउनलोड के लिए एक छोटी पायथन स्क्रिप्ट है:
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
फिर स्क्रिप्ट को निष्पादन योग्य बनाएं और इसे कॉल करें:
sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
क्यूटी संकलित करना
अब हम बिल्ड को कॉन्फ़िगर कर सकते हैं और फिर इसे संकलित कर सकते हैं।
cd build
../qt-everywhere-src-5.15.2/configure -release -opengl es2 -eglfs -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/tools/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot -prefix /usr/local/qt5.15 -extprefix ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/qt5.15 -opensource -confirm-license -skip qtscript -skip qtwayland -skip qtwebengine -nomake tests -make libs -pkg-config -no-use-gold-linker -v -recheck
कुछ मिनटों के बाद, स्क्रिप्ट समाप्त हो जानी चाहिए और निम्नलिखित ईजीएलएफएस शर्तों को सेट किया जाना चाहिए या सेट नहीं किया जाना चाहिए।
QPA backends:
DirectFB ............................... no
EGLFS .................................. yes [SHOULD BE YES]
EGLFS details:
EGLFS OpenWFD ........................ no
EGLFS i.Mx6 .......................... no
EGLFS i.Mx6 Wayland .................. no
EGLFS RCAR ........................... no
EGLFS EGLDevice ...................... yes [SHOULD BE YES]
EGLFS GBM ............................ yes
EGLFS VSP2 ........................... no
EGLFS Mali ........................... no
EGLFS Raspberry Pi ................... no [SHOULD BE NO]
EGLFS X11 ............................ yes
LinuxFB ................................ yes
VNC .................................... yes
यदि ऐसा नहीं है या यदि कोई अन्य त्रुटि संदेश दिखाई देता है, तो कृपया जांच करें और साफ करें। यदि आप परिवर्तित चर के साथ कॉन्फ़िगरेशन स्क्रिप्ट को फिर से चलाना चाहते हैं, तो कृपया बिल्ड निर्देशिका की सामग्री को पहले से हटा दें।
यदि सब कुछ ठीक है, तो मेक एंड मेक इंस्टॉल कमांड चलाएं।
make -j4
make install
रास्पबेरी पर संकलित फ़ाइलें स्थापित करें
यदि संकलन सफल होता है, तो संकलित फ़ाइलें - वे qt5.15 निर्देशिका में स्थित हैं - रास्पबेरी पाई में कॉपी की जा सकती हैं। फिर, हम rsync आदेश का उपयोग करके ऐसा करते हैं।
rsync -avz --rsync-path="sudo rsync" qt5.15 [email protected]:/usr/local/
कॉन्फ़िगरेशन QtCreator
अगले ब्लॉग पोस्ट में मैं समझाऊंगा कि संकलित पुस्तकालयों के साथ उपयोग के लिए क्यूटीक्रिएटर का उपयोग कैसे करें।