Qt 5.15 הידור צולב עבור מודול מחשוב פטל 4 על אובונטו 20 LTS

מבוא

זהו מדריך עבור הידור צולב 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 כמו מחשב cross-compile במכונה וירטואלית.

מקורות

בנוסף לפוסט הישן שלי בבלוג (ראה לעיל), השתמשתי גם במקורות הבאים:

Raspberry Pi OS לייט

התקן את Raspberry Pi OS Lite ב- Raspberry Pi 4 או ב- Raspberry Compute Module 4 כמתואר בפוסט בבלוג שלי התקנת מערכת ההפעלה Raspberry Pi במודול Raspberry Compute Module 4 .

Qt 5.15.2 על אובונטו 20 LTS

לאחר שמערכת ההפעלה Raspberry Pi מותקנת במודול המחשוב ומגפי Raspberry חוזרים מזיכרון ה- eMMC, הגיע הזמן להתקין את התוכנה הנדרשת ב- Raspberry ובמכונת Ubuntu.

מודול מחשוב פטל 4

השלבים המוצגים להלן צריכים לעבוד גם על Raspberry Pi 4 "רגיל".

לאחר הפעלת Pi 4, פתח את תפריט התצורה.

sudo raspi-config
עבור התצורה שלנו אנחנו צריכים "SSH" ו "GL (KMS מזויף)". ראה את שני צילומי המסך הבאים.
SSH Konfiguration

FKMS Konfiguration

- לאחר מכן הוסף מקורות פיתוח ל- /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 מותקן.
קודם כל, להביא אובונטו מעודכן ולהתקין כמה ספריות נדרשות:

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 [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/

עכשיו אנחנו צריכים לנקות את הקישורים הסמליים שהועתקו על ידי 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 -j4
make install

התקן קבצים שעברו הידור על פטל

אם האוסף מצליח, הקבצים הידור - הם ממוקמים בספרייה qt5.15 - ניתן להעתיק את פטל Pi. שוב, אנו עושים זאת באמצעות הפקודה rsync.

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

תצורה QtCreator

בפוסט הבא בבלוג אסביר כיצד להשתמש ב- QtCreator לשימוש עם הספריות המהודרות.</