Qt 5.15 cross compile for Raspberry Compute Module 4 on Ubuntu 20 LTS

تعارف

یہ رسبیری پائی 4 کے لئے کیو ٹی 5.15.2 کو کراس کمپائل کرنے اور اسے کمپیوٹ ماڈیول 4 پر انسٹال کرنے کے لئے ایک گائیڈ ہے۔ یہ رسبیری پائی 4 پر میرے بلاگ پوسٹ کیو ٹی کی تازہ کاری ہے ، اس فرق کے ساتھ کہ اس بار میں راسپبیری پائی او ایس لائٹ (یہاں ڈاؤن لوڈ: https://www.raspberrypi.org/software/operating-systems/کیو ٹی ورژن 5.15.2 اور اوبنٹو 20 ایل ٹی ایس کو ورچوئل مشین میں کراس کمپائل کمپیوٹر کے طور پر استعمال کر رہا ہوں۔

ذرائع

اپنے پرانے بلاگ پوسٹ کے علاوہ (اوپر دیکھیں) میں نے مندرجہ ذیل ذرائع بھی استعمال کیے:

Raspberry Pi OS Lite

رسبیری پی آئی 4 پر یا رسبیری کمپیوٹ ماڈیول 4 پر رسبیری پائی او ایس لائٹ انسٹال کریں جیسا کہ میرے بلاگ پوسٹ میں بیان کیا گیا ہے کہ رسبیری پی آئی او ایس کو رسبیری کمپیوٹ ماڈیول 4 پر انسٹال کریں ۔

Qt 5.15.2 on Ubuntu 20 LTS

کمپیوٹ ماڈیول پر رسبیری پائی او ایس انسٹال ہونے اور ای ایم ایم سی میموری سے رسبیری بوٹس واپس آنے کے بعد ، یہ رسبیری اور اوبنٹو مشین پر مطلوبہ سافٹ ویئر انسٹال کرنے کا وقت ہے۔

رسبیری کمپیوٹ ماڈیول 4

ذیل میں دکھائے گئے اقدامات کو "عام" رسبیری پائی 4 پر بھی کام کرنا چاہئے۔

پائی 4 پر سوئچ کرنے کے بعد ، ترتیب مینو کھولیں۔

sudo raspi-config
ہماری تشکیل کے لئے ہمیں "ایس ایس ایچ" اور "جی ایل (جعلی کے ایم ایس)" کی ضرورت ہے۔ مندرجہ ذیل دو اسکرین شاٹس دیکھیں۔
SSH Konfiguration

FKMS Konfiguration

- پھر ترقیاتی ذرائع کو / وغیرہ / اے پی ٹی / ذرائع ڈاٹ لسٹ میں شامل کریں۔ ایسا کرنے کے لئے، مندرجہ ذیل لائن شامل کریں:
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

پھر - اگر پہلے سے دستیاب نہیں ہے - ایک ایس ایس ایچ کلید بنائیں اور اسے رسبیری پر انسٹال کریں ، تاکہ ہر آر ایس این سی کے ساتھ پاس ورڈ پرامپٹ ظاہر نہ ہو اور صارف نام اور پاس ورڈ درج کرنا پڑے۔ انٹرنیٹ پر کافی ہدایات موجود ہیں ، لہذا میں خود کو یہاں تفصیلی تفصیل چھوڑ دوں گا۔

رسبیری لائبریریوں کے لئے ڈائریکٹری ڈھانچہ بنائیں

مطلوبہ فائلوں کے لئے، میں دستاویزات/Qt-کراس کمپل-رسبیریPi/رسبیریpi4 کے تحت مندرجہ ذیل ڈائریکٹری ڈھانچہ بناتا ہوں:

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
راسپبیری پر مرتب کردہ فائلیں انسٹال کریں

اگر تالیف کامیاب ہوتی ہے تو ، مرتب کردہ فائلیں - وہ کیو ٹی 5.15 ڈائریکٹری میں واقع ہیں - رسبیری پائی میں کاپی کی جاسکتی ہیں۔ ایک بار پھر ، ہم آر ایس این سی کمانڈ کا استعمال کرتے ہوئے ایسا کرتے ہیں۔

rsync -avz --rsync-path="sudo rsync" qt5.15 [email protected]:/usr/local/

کنفیگریشن کیو ٹی تخلیق کار

اگلی بلاگ پوسٹ میں میں وضاحت کروں گا کہ مرتب کردہ لائبریریوں کے ساتھ استعمال کے لئے کیو ٹی کریٹر کو کس طرح استعمال کیا جائے۔</: