Johdanto
Tämä on opas Qt 5.15.2: n ristiinkääntämiseen Raspberry Pi 4: lle ja sen asentamiseen laskentamoduuliin 4. Se on päivitys blogikirjoitukseeni Qt Raspberry Pi 4: ssä, sillä erolla, että tällä kertaa käytän Raspberry Pi OS Liteä (lataa täältä: https://www.raspberrypi.org/software/operating-systems/), Qt-versiota 5.15.2 ja Ubuntu 20 LTS: ää ristiinkäännettävänä tietokoneena virtuaalikoneessa.
Lähteet
Vanhan blogikirjoitukseni (ks. yllä) lisäksi käytin myös seuraavia lähteitä:
- Uvindu Wijesinghe: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
Huomio
Tähän artikkeliin on tehty päivitys, joka sisältää ristiinkäännön Raspberry Pi, Qt6 ja Ubuntu 22.04 LTS. Seuraa tätä linkkiä, jos tarvitset uudempia versioita.
Vadelma Pi OS Lite
Asenna Raspberry Pi OS Lite Raspberry Pi 4:ään tai Vadelmalaskentamoduuliin 4, kuten blogikirjoituksessani Raspberry Pi OS:n asentaminen Vadelmalaskentamoduuliin 4 on kuvattu.
Qt 5.15.2 Ubuntu 20 LTS: ssä
Kun Raspberry Pi -käyttöjärjestelmä on asennettu laskentamoduuliin ja Vadelma käynnistyy takaisin eMMC-muistista, on aika asentaa tarvittava ohjelmisto Vadelmaan ja Ubuntu-koneeseen.
Vadelmalaskentamoduuli 4
Alla esitettyjen vaiheiden pitäisi toimia myös "normaalissa" Raspberry Pi 4: ssä.
Kun olet kytkenyt Pi 4: n päälle, avaa määritysvalikko.
sudo raspi-config
Kokoonpanoamme varten tarvitsemme "SSH" ja "GL (Fake KMS)". Katso seuraavat kaksi näyttökuvaa.- Lisää sitten kehityslähteet tiedostoon /etc/apt/sources.list. Voit tehdä tämän lisäämällä seuraavan rivin:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- Päivitä sitten järjestelmä seuraavilla komennoilla:sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
- Asenna sitten tarvittavat Qt ja kehityspaketit: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
- Luo sitten hakemisto RaspberryQt:lle:sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
Ubuntu-kone
Tarvitaan tietokone tai virtuaalikone, johon on asennettu Ubuntu 20 LTS.
Ensinnäkin, tuo Ubuntu ajan tasalle ja asenna tarvittavat kirjastot:
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
Luo sitten - jos se ei ole vielä käytettävissä - ssh-avain ja asenna se Vadelmaan, jotta salasanakehote ei tule näkyviin jokaisen rsyncin yhteydessä ja käyttäjätunnus ja salasana on syötettävä. Internetissä on tarpeeksi ohjeita, joten säästän itselleni yksityiskohtaisen kuvauksen täällä.
Luo hakemistorakenne Vadelma-kirjastoille
Vaadituille tiedostoille luon seuraavan hakemistorakenteen kohtaan 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
Lataa Qt-resurssit
Lataamme Qt-resurssit ja puramme ne raspberrypi4-hakemistoon:
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
Nyt meidän on muokattava mkspec-tiedostoa hieman, jotta voimme käyttää sitä kääntäjämme kanssa. Voit tehdä tämän suorittamalla seuraavat komennot:
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
Lataa ristikääntäjä
Ristikääntäjänä käytän Linaron versiota 7.4.1. Voit tehdä tämän vaihtamalla työkaluhakemistoon ja lataamalla ja purkamalla kääntäjän:
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
Vadelmakirjastojen Rsync
Nyt tarvitsemme Raspberry Pi: n alkuperäiset kirjastot, jotka kopioimme Ubuntu-hakemistoihin rsyncillä:
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/
Nyt meidän on puhdistettava rsyncin kopioimat symboliset linkit niin, että ne osoittavat oikeisiin alkuperäisiin tiedostoihin. Ladattavana on pieni Python-komentosarja:
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
Tee sitten komentosarja suoritettavaksi ja kutsu sitä:
sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
Qt:n kääntäminen
Nyt voimme määrittää koontiversion ja kääntää sen sitten.
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
Muutaman minuutin kuluttua komentosarjan pitäisi olla valmis ja seuraavat EGLFS-ehdot on asetettava tai jätettävä asettamatta.
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
Jos näin ei ole tai jos muita virheilmoituksia tulee näkyviin, tutki ja siivoa. Jos haluat suorittaa määrityskomentosarjan uudelleen muutetuilla muuttujilla, poista koontihakemiston sisältö etukäteen.
Jos kaikki on kunnossa, suorita make and make install -komennot.
make -j4
make install
Asenna käännetyt tiedostot vadelmaan
Jos kokoaminen onnistuu, käännetyt tiedostot - ne sijaitsevat qt5.15-hakemistossa - voidaan kopioida Raspberry Pi: hen. Jälleen teemme tämän käyttämällä rsync-komentoa.
rsync -avz --rsync-path="sudo rsync" qt5.15 pi@192.168.1.7:/usr/local/
Kokoonpano QtCreator
Seuraavassa blogikirjoituksessa kerron, miten QtCreatoria käytetään käännettyjen kirjastojen kanssa.