مقدمه
این یک راهنمای برای کامپایل متقابل Qt 5.15.2 برای Raspberry Pi 4 و نصب ان در Compute Module 4 است. این به روز رسانی به وبلاگ من Qt در Raspberry Pi 4 است، با این تفاوت که این بار من با استفاده از Raspberry Pi OS Lite (اینجا دانلود کنید: https://www.raspberrypi.org/software/operating-systems/)، نسخه Qt 5.15.2 و اوبونتو 20 LTS به عنوان یک کامپیوتر کامپایل متقابل در یک ماشین مجازی.
منابع
علاوه بر وبلاگ قدیمی من (بالا را ببینید)، من همچنین از منابع زیر استفاده کردم:
توسط Uvindu Wijesinghe: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
توجه
یک به روز رسانی برای این مقاله وجود دارد که شامل تلفیق متقابل برای Raspberry Pi، Qt6 و Ubuntu 22.04 LTSاست. اگر به نسخه های جدیدتر نیاز دارید، این لینک را دنبال کنید.
سیستم عامل Raspberry Pi Lite
Raspberry Pi OS Lite را بر روی Raspberry Pi 4 یا Raspberry Compute Module 4 نصب کنید، همانطور که در وبلاگ من توضیح داده شده است نصب Raspberry Pi OS در Raspberry Compute Module 4 .
Qt 5.15.2 در اوبونتو 20 LTS
پس از نصب سیستم عامل Raspberry Pi بر روی ماژول Compute و چکمه های Raspberry از حافظه eMMC، وقت ان است که نرم افزار مورد نیاز را بر روی Raspberry و دستگاه اوبونتو نصب کنید.
ماژول محاسبه تمشک 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
ماشین اوبونتو
یک کامپیوتر یا ماشین مجازی با نصب اوبونتو 20 LTS مورد نیاز است.
اول از همه، اوبونتو را به روز کنید و برخی از کتابخانه های مورد نیاز را نصب کنید:
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 ایجاد کنید و ان را بر روی تمشک نصب کنید، به طوری که یک اعلان رمز عبور با هر 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 را بارگیری می کنیم و انها را در دایرکتوری 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 داریم که ما در دایرکتوری های اوبونتو با 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
کامپایل 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 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 برای استفاده با کتابخانه های کامپایل شده است.</: