Uvod
Ovo je vodič za unakrsno sastavljanje Qt 5.15.2 za Raspberry Pi 4 i ugradnju na Računalni modul 4. To je ažuriranje mog posta na blogu Qt na Raspberry Pi 4, s razlikom da ovaj put koristim Raspberry Pi OS Lite (preuzmite ovdje: https://www.raspberrypi.org/software/operating-systems/), Qt verziju 5.15.2 i Ubuntu 20 LTS kao računalo za unakrsno sastavljanje u virtualnom stroju.
Izvori
Osim starog posta na blogu (vidi gore), koristio sam i sljedeće izvore:
- napisao Uvindu Wijesinghe: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
Pažnja
Postoji ažuriranje ovog članka, koji sadrži unakrsnu kompilaciju za Raspberry Pi, Qt6 i Ubuntu 22.04 LTS. Slijedite ovu poveznicu ako trebate novije verzije.
Malina Pi OS Lite
Instalirajte Raspberry Pi OS Lite na Raspberry Pi 4 ili na Raspberry Compute Module 4 kako je opisano u mom postu na blogu Instaliranje Raspberry Pi OS-a na Raspberry Compute Module 4 .
Qt 5.15.2 na Ubuntu 20 LTS
Nakon što je Raspberry Pi OS instaliran na Računalni modul i Raspberry čizme natrag iz eMMC memorije, vrijeme je da instalirate potreban softver na Raspberry i na Ubuntu stroj.
Modul računa maline 4
Koraci prikazani u nastavku također bi trebali raditi na "normalnom" Raspberry Pi 4.
Nakon uključivanja Pi 4 otvorite izbornik za konfiguraciju.
sudo raspi-config
Za našu konfiguraciju potrebni su nam "SSH" i "GL (Lažni KMS)". Pogledajte sljedeće dvije snimke zaslona.- Zatim dodajte izvore razvoja na /etc/apt/sources.list. Da biste to učinili, dodajte sljedeći redak:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- Zatim ažurirajte sustav sljedećim naredbama:sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
- A zatim instalirajte potrebne Qt i razvojne pakete: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
- Zatim stvorite direktorij za RaspberryQt:sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
Ubuntu Stroj
Potrebno je računalo ili virtualni stroj s instaliranim Ubuntu 20 LTS.
Prije svega, ažurirajte Ubuntu i instalirajte neke potrebne knjižnice:
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
Zatim - ako već nije dostupan - stvorite ssh-ključ i instalirajte ga na Malinu, tako da se ne pojavi upit za lozinku sa svakim rsyncom i potrebno je unijeti korisničko ime i lozinku. Na internetu ima dovoljno uputa, pa ću se ovdje poštedjeti detaljnog opisa.
Stvaranje strukture direktorija za biblioteke malina
Za potrebne datoteke stvaram sljedeću strukturu direktorija u odjeljku Dokumenti/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
Preuzmi resurse Qt
Preuzimamo resurse Qt i raspakiravamo ih u direktorij 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
Sada moramo malo izmijeniti mkspec datoteku kako bismo je mogli koristiti s našim kompajlerom. Da biste to učinili, pokrenite sljedeće naredbe:
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
Preuzmi cross-compiler
Kao cross-kompajler koristim Linaro verziju 7.4.1. Da biste to učinili, promijenite direktorij alata i preuzmite i raspakirajte kompajler:
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 biblioteka malina
Sada su nam potrebne izvorne knjižnice iz Raspberry Pi, koje kopiramo u Ubuntu direktorije s rsyncom:
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/
Sada moramo očistiti simboličke veze koje je kopirao rsync tako da ukazuju na ispravne izvorne datoteke. Postoji mala Python skripta za preuzimanje:
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
Zatim učinite skriptu izvršnom i nazovite je:
sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
Sastavljanje Qt
Sada možemo konfigurirati međuverziju, a zatim je sastaviti.
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
Nakon nekoliko minuta skripta bi trebala biti dovršena, a sljedeći EGLFS uvjeti trebaju biti postavljeni ili ne.
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
Ako to nije slučaj ili se pojave druge poruke o pogrešci, istražite i očistite. Ako želite ponovno pokrenuti konfiguracijsku skriptu s promijenjenim varijablama, prethodno izbrišite sadržaj direktorija međuverzije.
Ako je sve u redu, pokrenite naredbe za stvaranje i instalaciju.
make -j4
make install
Instalirajte kompilirane datoteke na malinu
Ako je kompilacija uspješna, kompilirane datoteke - nalaze se u direktoriju qt5.15 - mogu se kopirati u Raspberry Pi. Opet, to činimo pomoću naredbe rsync.
rsync -avz --rsync-path="sudo rsync" qt5.15 [email protected]:/usr/local/
Konfiguracija QtCreator
U sljedećem postu na blogu objasnit ću kako koristiti QtCreator za korištenje s kompiliranim knjižnicama.