Qt 5.15 cross compile Raspberry-laskentamoduulille 4 Ubuntu 20 LTS:ssä

Johdanto

Tämä on opas Qt 5.15.2:n ristikääntämiseen Raspberry Pi 4:lle ja asentamiseen laskentamoduuliin 4. Kyseessä on päivitys blogikirjoitukseeni Qt auf dem Raspberry Pi 4, sillä erotuksella, että tällä kertaa käytän Raspberry Pi OS Liteä (lataa täältä: https://www.raspberrypi.org/software/operating-systems/), Qt-versio 5.15.2 ja Ubuntu 20 LTS:n käyttö ristikääntötietokoneena virtuaalikoneessa.

Lähteet

Vanhan blogikirjoitukseni (katso yllä) lisäksi käytin myös seuraavia lähteitä: - Uvindu Wijesinghe: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4

Raspberry Pi OS Lite

Asenna Raspberry Pi OS Lite Raspberry Pi 4:ään tai asenna blogikirjoitukseni mukaisesti Raspberry Pi OS Raspberry-laskentamoduuliin 4 Raspberryn laskentamoduulilla 4.

Qt 5.15.2 Ubuntu 20 LTS:llä

Kun Raspberry Pi OS on asennettu laskentamoduuliin ja Raspberry käynnistyy uudelleen eMMC-tallennustilasta, on aika asentaa tarvittava ohjelmisto Raspberryyn ja Ubuntu-koneeseen.

Raspberry-laskentamoduuli 4

Alla esitettyjen vaiheiden tulisi toimia myös "normaalilla" Raspberry Pi 4:llä.

Kun olet kytkenyt Pi 4:n päälle, avaa määritysvalikko.

sudo raspi-config

Kokoonpanoon tarvitaan "SSH" ja "GL (Fake KMS)". Katso kaksi seuraavaa kuvakaappausta.

SSH Konfiguration

FKMS Konfiguration

  • Syötä sitten development sources hakemistoon /etc/apt/sources.list. Lisää seuraava rivi:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
  • Päivitä järjestelmä sitten seuraavilla komennoilla:
sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
  • Asenna sitten vaaditut 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. Tuo ensinnäkin Ubuntu ajan tasalle ja asenna joitain vaadittuja kirjastoja:

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

Sitten – jos sitä ei vielä ole olemassa – luo ssh-avain ja asenna se Raspberryyn, jotta salasanakysely ei tule näkyviin jokaisen rsync-tiedoston kanssa ja käyttäjänimeä ja salasanaa ei tarvitse syöttää. Internetissä on tarpeeksi ohjeita tätä varten, jotta voin tallentaa itselleni yksityiskohtaisen kuvauksen tähän.

Luo Raspberry-kirjastojen hakemistorakenne

Vaadituille tiedostoille luon seuraavan hakemistorakenteen kohdassa 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

Ladataan Qt-resurssit ja puretaan 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. Suorita tämä 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ä

Käytän Linaro-versiota 7.4.1 ristikääntäjänä. Voit tehdä tämän siirtymällä 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

Raspberry-kirjastojen Rsync

Tarvitsemme nyt Raspberry Pi:n alkuperäiset kirjastot, jotka kopioimme Ubuntu-hakemistoihin rsyncin avulla:

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 vielä puhdistettava symboliset linkit, jotka rsync kopioi, jotta ne osoittavat oikeisiin alkuperäisiin tiedostoihin. Pieni Python-komentosarja on ladattava:

wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py

Tee sitten komentosarja suoritettavaksi ja valitse se:

sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot

Käännä Qt

Nyt voimme määrittää koontiversion ja sitten kääntää sen.

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 komentosarja on valmis ja seuraavia EGLFS-ehtoja ei pitäisi asettaa tai jättää 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 saat muita virheilmoituksia, tutki ja korjaa ne. Jos haluat suorittaa määritysskriptin uudelleen muutetuilla muuttujilla, muista poistaa koontikoodihakemiston sisältö etukäteen. Jos kaikki on kunnossa, suorita make and make install -komennot.

make -j4
make install

Asenna käännetyt tiedostot Raspberryyn

Jos kääntäminen onnistui, käännetyt tiedostot – jotka sijaitsevat hakemistossa qt5.15 – voidaan kopioida Raspberry Pi:lle. Teemme tämän uudelleen rsync-komennolla.

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

QtCreatorin määritykset

Seuraavassa blogipostauksessa aselitän, kuinka QtCreatoria käytetään käännettyjen kirjastojen kanssa.