مقدمة
هذا دليل للتجميع المتقاطع Qt 5.15.2 ل Raspberry Pi 4 وتثبيته على وحدة الحوسبة 4. إنه تحديث لمنشور مدونتي Qt على Raspberry Pi 4 ، مع اختلاف أنني هذه المرة أستخدم Raspberry Pi OS Lite (تنزيل هنا: 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. اتبع هذا الرابط، إذا كنت بحاجة إلى إصدارات أحدث.
راسبيري باي أو إس لايت
قم بتثبيت Raspberry Pi OS Lite على Raspberry Pi 4 أو على وحدة حساب Raspberry 4 كما هو موضح في منشور مدونتي تثبيت Raspberry Pi OS على وحدة حساب Raspberry 4 .
كيو تي 5.15.2 على أوبونتو 20 LTS
بعد تثبيت نظام التشغيل Raspberry Pi OS على وحدة الحوسبة وعودة Raspberry من ذاكرة eMMC ، حان الوقت لتثبيت البرنامج المطلوب على Raspberry وعلى جهاز Ubuntu.
وحدة حساب التوت 4
يجب أن تعمل الخطوات الموضحة أدناه أيضا على Raspberry Pi 4 "العادي".
بعد تشغيل Pi 4 ، افتح قائمة التكوين.
sudo raspi-config
لتكويننا نحتاج إلى "SSH" و "GL (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
- ثم قم بإنشاء دليل ل RaspberryQt:sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
آلة أوبونتو
مطلوب جهاز كمبيوتر أو جهاز افتراضي مثبت عليه Ubuntu 20 LTS.
بادئ ذي بدء ، قم بتحديث Ubuntu وتثبيت بعض المكتبات المطلوبة:
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
ثم - إذا لم يكن متاحا بالفعل - قم بإنشاء مفتاح ssh وتثبيته على Raspberry ، بحيث لا تظهر مطالبة كلمة المرور مع كل rsync ويجب إدخال اسم المستخدم وكلمة المرور. هناك تعليمات كافية على الإنترنت ، لذلك سأجنب الوصف التفصيلي هنا.
إنشاء بنية دليل لمكتبات التوت
بالنسبة للملفات المطلوبة ، أقوم بإنشاء بنية الدليل التالية ضمن المستندات / 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 وفك ضغطها في دليل raspberrypi4:
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
تنزيل برنامج التحويل البرمجي المتقاطع
بصفتي مترجما مشتركا ، أستخدم إصدار Linaro 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
Rsync من مكتبات التوت
نحتاج الآن إلى المكتبات الأصلية من Raspberry Pi ، والتي ننسخها إلى أدلة Ubuntu باستخدام rsync:
cd ..
rsync -avz --rsync-path="sudo rsync" --delete pi@192.168.1.7:/lib sysroot/
rsync -avz --rsync-path="sudo rsync" --delete pi@192.168.1.7:/usr/include sysroot/usr/
rsync -avz --rsync-path="sudo rsync" --delete pi@192.168.1.7:/usr/lib sysroot/usr/
rsync -avz --rsync-path="sudo rsync" --delete pi@192.168.1.7:/opt/vc sysroot/opt/
الآن يتعين علينا تنظيف الروابط الرمزية التي تم نسخها بواسطة rsync بحيث تشير إلى الملفات الأصلية الصحيحة. يوجد برنامج نصي صغير للغة Python للتنزيل:
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
بعد بضع دقائق ، يجب الانتهاء من البرنامج النصي ويجب تعيين شروط 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 and install.
make -j4
make install
تثبيت الملفات المترجمة على التوت
إذا نجح التجميع ، يمكن نسخ الملفات المترجمة - الموجودة في دليل qt5.15 - إلى Raspberry Pi. مرة أخرى ، نقوم بذلك باستخدام الأمر rsync.
rsync -avz --rsync-path="sudo rsync" qt5.15 pi@192.168.1.7:/usr/local/
تكوين QtCreator
في منشور المدونة التالي ، سأشرح كيفية استخدام QtCreator للاستخدام مع المكتبات المترجمة.</