Inleiding
Dit is 'n gids vir die kruissamestelling van Qt 5.15.2 vir Raspberry Pi 4 en die installering daarvan op die Compute Module 4. Dit is 'n opdatering van my blogpos Qt op die Raspberry Pi 4, met die verskil dat ek hierdie keer Raspberry Pi OS Lite gebruik (laai hier af: https://www.raspberrypi.org/software/operating-systems/), Qt weergawe 5.15.2 en Ubuntu 20 LTS as 'n kruis-saamgestelde rekenaar in 'n virtuele masjien.
Bronne
Benewens my ou blogpos (sien hierbo), het ek ook die volgende bronne gebruik:
- deur Uvindu Wijesinghe: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
Aandag
Daar is 'n opdatering van hierdie artikel, wat kruissamestelling vir Raspberry Pi, Qt6 en Ubuntu 22.04 LTSbevat. Volg hierdie skakel as jy nuwer weergawes benodig.
Framboos Pi OS Lite
Installeer Raspberry Pi OS Lite op 'n Raspberry Pi 4 of op 'n Raspberry Compute Module 4 soos beskryf in my blogpos Die installering van Raspberry Pi OS op Raspberry Compute Module 4 .
Qt 5.15.2 oor Ubuntu 20 LTS
Nadat die Raspberry Pi OS op die Compute Module geïnstalleer is en die Raspberry uit die eMMC-geheue terugstewel, is dit tyd om die vereiste sagteware op die Raspberry en op die Ubuntu-masjien te installeer.
Framboos Rekenaar Module 4
Die onderstaande stappe moet ook op 'n "normale" Raspberry Pi 4 werk.
Nadat u die Pi 4 aangeskakel het, maak u die konfigurasiemenu oop.
sudo raspi-config
Vir ons konfigurasie benodig ons "SSH" en "GL (Fake KMS)". Sien die volgende twee skermkiekies.- Voeg dan ontwikkelingsbronne by /etc/apt/sources.list. Om dit te doen, voeg die volgende reël by:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- Werk dan die stelsel op met die volgende opdragte:sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
- En installeer dan die vereiste Qt- en ontwikkelingspakkette: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
- Skep dan 'n gids vir RaspberryQt:sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
Ubuntu-masjien
'N Rekenaar of virtuele masjien met Ubuntu 20 LTS geïnstalleer is nodig.
Bring eerstens Ubuntu op datum en installeer 'n paar vereiste biblioteke:
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
As dit nog nie beskikbaar is nie, skep 'n ssh-sleutel en installeer dit op die Raspberry, sodat 'n wagwoordprompt nie met elke rsync verskyn nie en gebruikersnaam en wagwoord ingevoer moet word. Daar is genoeg instruksies op die internet, so ek sal myself die gedetailleerde beskrywing hier spaar.
Skep gidsstruktuur vir die Framboosbiblioteke
Vir die vereiste lêers skep ek die volgende gidsstruktuur onder 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
Laai Qt-hulpbronne af
Ons laai die Qt-bronne af en pak dit uit in die raspberrypi4-gids:
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
Nou moet ons die mkspec-lêer 'n bietjie verander sodat ons dit saam met ons samesteller kan gebruik. Om dit te doen, voer die volgende opdragte uit:
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
Laai kruissamesteller af
As kruissamesteller gebruik ek 'n Linaro weergawe 7.4.1. Om dit te doen, verander na die gereedskapgids en laai die samesteller af en pak dit uit:
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 van framboosbiblioteke
Nou benodig ons die oorspronklike biblioteke van die Raspberry Pi, wat ons met rsync in die Ubuntu-kaarte kopieer:
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/
Nou moet ons die simboliese skakels wat deur die rsync gekopieër is, skoonmaak sodat dit na die regte oorspronklike lêers wys. Daar is 'n klein Python-script om af te laai:
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
Maak dan die skrif uitvoerbaar en noem dit:
sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
Stel Qt saam
Nou kan ons die build opstel en dit dan saamstel.
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
Na 'n paar minute moet die skrif voltooi wees en die volgende EGLFS-voorwaardes gestel word of nie gestel word nie.
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
As dit nie die geval is nie of as daar enige ander foutboodskappe verskyn, ondersoek en maak dit skoon. As u die konfigurasieskrip weer met veranderde veranderlikes wil laat loop, moet u die inhoud van die bougids vooraf uitvee.
As alles in orde is, voer dan die maak uit en maak installeringsopdragte.
make -j4
make install
Installeer saamgestelde lêers op die Framboos
As die samestelling suksesvol is, kan die saamgestelde lêers - dit is in die qt5.15-gids - na die Raspberry Pi gekopieër word. Weereens doen ons dit met behulp van die rsync-opdrag.
rsync -avz --rsync-path="sudo rsync" qt5.15 [email protected]:/usr/local/
Konfigurasie QtCreator
In die volgende blogpos sal ek verduidelik hoe om QtCreator te gebruik vir gebruik met die saamgestelde biblioteke.