ਜਾਣ-ਪਛਾਣ
ਇਹ ਰਸਬੇਰੀ ਪਾਈ 4 ਲਈ Qt 5.15.2 ਨੂੰ ਕਰਾਸ-ਕੰਪਾਇਲ ਕਰਨ ਅਤੇ ਇਸ ਨੂੰ ਕੰਪਿਊਟ ਮਾਡਿਊਲ 4 'ਤੇ ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਇੱਕ ਗਾਈਡ ਹੈ। ਇਹ ਰਸਬੇਰੀ ਪਾਈ 4 'ਤੇ Qt ਪੋਸਟ Qt ਲਈ ਇੱਕ ਅੱਪਡੇਟ ਹੈ, ਇਸ ਫਰਕ ਦੇ ਨਾਲ ਕਿ ਇਸ ਵਾਰ ਮੈਂ ਰਸਬੇਰੀ ਪਾਈ OS ਲਾਈਟ (ਇੱਥੇ ਡਾਊਨਲੋਡ ਕਰੋ: https://www.raspberrypi.org/software/operating-systems/), Qt ਸੰਸਕਰਣ 5.15.2 ਅਤੇ Ubuntu 20 LTS ਨੂੰ ਇੱਕ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਵਿੱਚ ਇੱਕ ਕਰਾਸ-ਕੰਪਾਇਲ ਕੰਪਿਊਟਰ ਦੇ ਤੌਰ ਤੇ ਵਰਤ ਰਿਹਾ ਹਾਂ।
ਸਰੋਤ
ਮੇਰੇ ਪੁਰਾਣੇ ਬਲੌਗ ਪੋਸਟ (ਉੱਪਰ ਦੇਖੋ) ਤੋਂ ਇਲਾਵਾ, ਮੈਂ ਨਿਮਨਲਿਖਤ ਸਰੋਤਾਂ ਦੀ ਵੀ ਵਰਤੋਂ ਕੀਤੀ:
- ਉਵਿੰਦੂ ਵਿਜੇਸਿੰਘੇ ਦੁਆਰਾ: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
ਧਿਆਨ ਦਿਓ
ਇਸ ਲੇਖ ਲਈ ਇੱਕ ਅੱਪਡੇਟ ਹੈ, ਜਿਸ ਵਿੱਚ Raspberry Pi, Qt6 ਅਤੇ Ubuntu 22.04 LTSਲਈ ਕਰਾਸ ਸੰਕਲਨ ਸ਼ਾਮਲ ਹੈ। ਜੇ ਤੁਹਾਨੂੰ ਨਵੇਂ ਸੰਸਕਰਣਾਂ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਇਸ ਲਿੰਕ ਦੀ ਪਾਲਣਾ ਕਰੋ।
ਰਸਬੇਰੀ ਪਾਈ OS Lite
ਰਸਬੇਰੀ ਪਾਈ 4 'ਤੇ ਜਾਂ ਰਸਬੇਰੀ ਕੰਪਿਊਟ ਮਾਡਿਊਲ 4 'ਤੇ ਰਸਬੇਰੀ ਪਾਈ OS ਲਾਈਟ ਨੂੰ ਇੰਸਟਾਲ ਕਰੋ ਜਿਵੇਂ ਕਿ ਮੇਰੀ ਬਲੌਗ ਪੋਸਟ ਵਿੱਚ ਵਰਣਨ ਕੀਤਾ ਗਿਆ ਹੈ ਰਸਬੇਰੀ ਕੰਪਿਊਟ ਮਾਡਿਊਲ 4 'ਤੇ ਰਸਬੇਰੀ ਪਾਈ OS ਨੂੰ ਇੰਸਟਾਲ ਕਰੋ ।
ਉਬੰਟੂ 20 LTS ਉੱਤੇ Qt 5. 15. 2
ਰਸਬੇਰੀ ਪਾਈ OS ਨੂੰ ਕੰਪਿਊਟ ਮਾਡਿਊਲ 'ਤੇ ਇੰਸਟਾਲ ਕੀਤੇ ਜਾਣ ਅਤੇ ਰਸਬੇਰੀ ਦੇ eMMC ਮੈਮਰੀ ਤੋਂ ਵਾਪਸ ਬੂਟ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਰਸਬੇਰੀ ਅਤੇ ਉਬੰਟੂ ਮਸ਼ੀਨ 'ਤੇ ਲੋੜੀਂਦੇ ਸਾਫਟਵੇਅਰ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਦਾ ਸਮਾਂ ਆ ਗਿਆ ਹੈ।
Raspberry ਕੰਪਿਊਟ ਮੋਡੀਊਲ 4
ਹੇਠਾਂ ਦਿਖਾਏ ਗਏ ਕਦਮਾਂ ਨੂੰ ਇੱਕ "ਸਧਾਰਨ" ਰਸਬੇਰੀ ਪਾਈ 4 'ਤੇ ਵੀ ਕੰਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।
ਪਾਈ 4 ਨੂੰ ਚਾਲੂ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਕੌਨਫਿਗ੍ਰੇਸ਼ਨ ਮੀਨੂ ਨੂੰ ਖੋਲ੍ਹੋ।
sudo raspi-config
ਸਾਡੀ ਸੰਰਚਨਾ ਲਈ ਸਾਨੂੰ "SSH" ਅਤੇ "GL (Fake KMS)" ਦੀ ਲੋੜ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਦੋ ਸਕ੍ਰੀਨਸ਼ੌਟ ਦੇਖੋ।- ਫਿਰ ਵਿਕਾਸ ਦੇ ਸਰੋਤਾਂ ਨੂੰ /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
- ਅਤੇ ਫਿਰ ਲੋੜੀਂਦੇ Qt ਅਤੇ ਡਿਵੈਲਪਮੈਂਟ ਪੈਕੇਜਾਂ ਨੂੰ ਇੰਸਟਾਲ ਕਰੋ: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
- ਫਿਰ ਰਸਬੇਰੀ Qt ਲਈ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਬਣਾਓ:sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
Ubuntu Machine
ਉਬੰਟੂ ੨੦ ਐਲਟੀਐਸ ਇੰਸਟਾਲ ਕੀਤੇ ਇੱਕ ਪੀਸੀ ਜਾਂ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਦੀ ਲੋੜ ਹੈ।
ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਉਬੰਟੂ ਨੂੰ ਅੱਪ-ਟੂ-ਡੇਟ ਕਰੋ ਅਤੇ ਕੁਝ ਲੋੜੀਂਦੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੰਸਟਾਲ ਕਰੋ:
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
ਫਿਰ - ਜੇ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ - ਇੱਕ ਐਸਐਸਐਚ-ਕੀ ਬਣਾਓ ਅਤੇ ਇਸ ਨੂੰ ਰਸਬੇਰੀ ਤੇ ਇੰਸਟਾਲ ਕਰੋ, ਤਾਂ ਜੋ ਹਰ rsync ਦੇ ਨਾਲ ਇੱਕ ਪਾਸਵਰਡ ਪ੍ਰੋਂਪਟ ਨਾ ਦਿਖਾਈ ਦੇਵੇ ਅਤੇ ਯੂਜ਼ਰਨੇਮ ਅਤੇ ਪਾਸਵਰਡ ਦਰਜ ਕਰਨਾ ਪਵੇ। ਇੰਟਰਨੈੱਟ 'ਤੇ ਕਾਫੀ ਹਿਦਾਇਤਾਂ ਹਨ, ਇਸ ਲਈ ਮੈਂ ਏਥੇ ਵਿਸਤਰਿਤ ਵਰਣਨ ਤੋਂ ਆਪਣੇ ਆਪ ਨੂੰ ਬਚਾ ਲਵਾਂਗਾ।
ਰਸਬੇਰੀ ਲਾਇਬਰੇਰੀਆਂ ਲਈ ਡਾਇਰੈਕਟਰੀ ਢਾਂਚਾ ਬਣਾਓ
ਲੋੜੀਂਦੀਆਂ ਫ਼ਾਈਲਾਂ ਲਈ, ਮੈਂ Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4 ਦੇ ਤਹਿਤ ਅੱਗੇ ਦਿੱਤਾ ਡਾਇਰੈਕਟਰੀ ਢਾਂਚਾ ਬਣਾਉਂਦਾ/ਦੀ ਹਾਂ:
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
ਡਾਊਨਲੋਡ Qt ਸਰੋਤ
ਅਸੀਂ Qt ਸਰੋਤਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਦੇ ਹਾਂ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਰਸਬੇਰੀਪੀ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
ਹੁਣ ਸਾਨੂੰ mkspec ਫਾਈਲ ਨੂੰ ਥੋੜ੍ਹਾ ਜਿਹਾ ਸੋਧਣ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਜੋ ਅਸੀਂ ਇਸਨੂੰ ਆਪਣੇ ਕੰਪਾਇਲਰ ਨਾਲ ਵਰਤ ਸਕੀਏ। ਅਜਿਹਾ ਕਰਨ ਲਈ, ਹੇਠ ਲਿਖੀਆਂ ਕਮਾਂਡਾਂ ਨੂੰ ਚਲਾਓ:
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
Raspberry ਲਾਇਬਰੇਰੀਆਂ ਦੀ Rsync
ਹੁਣ ਸਾਨੂੰ ਰਸਬੇਰੀ ਪਾਈ ਤੋਂ ਅਸਲੀ ਲਾਇਬਰੇਰੀਆਂ ਦੀ ਲੋੜ ਹੈ, ਜਿੰਨ੍ਹਾਂ ਨੂੰ ਅਸੀਂ Rsync ਦੇ ਨਾਲ Ubuntu ਡਾਇਰੈਕਟਰੀਆਂ ਵਿੱਚ ਕਾਪੀ ਕਰਦੇ ਹਾਂ:
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/
ਹੁਣ ਸਾਨੂੰ ਸਿੰਬੋਲਿਕ ਲਿੰਕਾਂ ਨੂੰ ਸਾਫ਼ ਕਰਨਾ ਪਏਗਾ ਜੋ ਆਰਐਸਇਨਕੇ ਦੁਆਰਾ ਕਾਪੀ ਕੀਤੇ ਗਏ ਸਨ ਤਾਂ ਜੋ ਉਹ ਸਹੀ ਅਸਲ ਫਾਈਲਾਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰ ਸਕਣ। ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਇੱਕ ਛੋਟੀ Python ਸਕ੍ਰਿਪਟ ਹੈ:
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
ਤਦ ਸਕ੍ਰਿਪਟ ਨੂੰ ਚੱਲਣਯੋਗ ਬਣਾਓ ਅਤੇ ਇਸ ਨੂੰ ਕਾਲ ਕਰੋ:
sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
ਕੰਪਾਇਲਿੰਗ Qt
ਹੁਣ ਅਸੀਂ ਬਿਲਡ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਫਿਰ ਇਸਨੂੰ ਕੰਪਾਇਲ ਕਰ ਸਕਦੇ ਹਾਂ।
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
ਕੁਝ ਮਿੰਟਾਂ ਬਾਅਦ, ਸਕ੍ਰਿਪਟ ਨੂੰ ਖਤਮ ਕਰ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਹੇਠ ਲਿਖੀਆਂ EGLFS ਸ਼ਰਤਾਂ ਸੈੱਟ ਕੀਤੀਆਂ ਜਾਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ ਜਾਂ ਨਹੀਂ।
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
ਅਗਲੇ ਬਲੌਗ ਪੋਸਟ ਵਿੱਚ ਮੈਂ ਦੱਸਾਂਗਾ ਕਿ ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨਾਲ ਵਰਤਣ ਲਈ QtCreator ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ।