Qt 5.15 ristiinkääntää Raspberry Compute Module 4: lle Ubuntu 20 LTS: ssä

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ä:

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.
SSH Konfiguration

FKMS Konfiguration

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

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 [email protected]:/usr/local/

Kokoonpano QtCreator

Seuraavassa blogikirjoituksessa kerron, miten QtCreatoria käytetään käännettyjen kirjastojen kanssa.