Bevezetés
Ez egy útmutató a Qt 5.15.2 keresztfordításához a Raspberry Pi 4-hez és a 4. számítási modulra való telepítéséhez. Ez egy frissítés a Qt blogbejegyzésemhez a Raspberry Pi 4-en, azzal a különbséggel, hogy ezúttal a Raspberry Pi OS Lite-ot (letöltés itt: https://www.raspberrypi.org/software/operating-systems/), a Qt 5.15.2-es verzióját és az Ubuntu 20 LTS-t használom keresztfordító számítógépként egy virtuális gépen.
Források
A régi blogbejegyzésem mellett (lásd fent) a következő forrásokat is felhasználtam:
- Uvindu Wijesinghe: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
Figyelem
Van egy frissítés ehhez a cikkhez, amely tartalmazza a Raspberry Pi, Qt6 és Ubuntu 22.04 LTS keresztfordítást. Kövesse ezt a linket, ha újabb verziókra van szüksége.
Raspberry Pi OS Lite
Telepítse a Raspberry Pi OS Lite-ot Raspberry Pi 4-re vagy Raspberry Compute Module 4-re a Raspberry Pi OS telepítése a Raspberry Compute Module 4-re című blogbejegyzésemben leírtak szerint.
Qt 5.15.2 Ubuntu 20 LTS-en
Miután a Raspberry Pi operációs rendszert telepítette a számítási modulra, és a Raspberry elindult az eMMC memóriából, ideje telepíteni a szükséges szoftvert a Raspberry és az Ubuntu gépre.
Raspberry számítási modul 4
Az alábbi lépéseknek "normál" Raspberry Pi 4-en is működniük kell.
A Pi 4 bekapcsolása után nyissa meg a konfigurációs menüt.
sudo raspi-config
Konfigurációnkhoz "SSH" és "GL (Fake KMS)" -re van szükségünk. Lásd az alábbi két képernyőképet.- Ezután adjon hozzá fejlesztési forrásokat az /etc/apt/sources.list fájlhoz. Ehhez adja hozzá a következő sort:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- Ezután frissítse a rendszert a következő parancsokkal:sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
- Ezután telepítse a szükséges Qt és fejlesztői csomagokat: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
- Ezután hozzon létre egy könyvtárat a RaspberryQt számára:sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
Ubuntu gép
Ubuntu 20 LTS-sel telepített számítógépre vagy virtuális gépre van szükség.
Először is frissítse az Ubuntut, és telepítsen néhány szükséges könyvtárat:
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
Ezután - ha még nem áll rendelkezésre - hozzon létre egy ssh-kulcsot, és telepítse a Málnára, hogy ne jelenjen meg minden rsync-nél jelszókérés, és felhasználónevet és jelszót kell megadni. Van elég utasítás az interneten, ezért itt megkímélem magam a részletes leírástól.
Könyvtárstruktúra létrehozása a Raspberry könyvtárakhoz
A szükséges fájlokhoz a következő könyvtárstruktúrát hozom létre a Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4 alatt:
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
Qt források letöltése
Letöltjük a Qt erőforrásokat és kicsomagoljuk őket a raspberrypi4 könyvtárba:
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
Most egy kicsit módosítanunk kell az mkspec fájlt, hogy használhassuk a fordítónkkal. Ehhez futtassa a következő parancsokat:
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
Cross-Compiler letöltése
Keresztfordítóként a Linaro 7.4.1-es verzióját használom. Ehhez váltson az eszközök könyvtárára, és töltse le és csomagolja ki a fordítót:
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
Málna könyvtárak szinkronizálása
Most szükségünk van a Raspberry Pi eredeti könyvtáraira, amelyeket az rsync segítségével másolunk az Ubuntu könyvtárakba:
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/
Most meg kell tisztítanunk az rsync által másolt szimbolikus linkeket, hogy a megfelelő eredeti fájlokra mutassanak. Van egy kis Python szkript a letöltéshez:
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
Ezután tegye végrehajthatóvá a szkriptet, és hívja meg:
sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
Qt fordítása
Most konfigurálhatjuk a buildet, majd lefordíthatjuk.
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
Néhány perc múlva a parancsfájlnak be kell fejeződnie, és a következő EGLFS-feltételeket kell beállítani vagy nem beállítani.
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
Ha nem ez a helyzet, vagy bármilyen más hibaüzenet jelenik meg, kérjük, vizsgálja meg és tisztítsa meg. Ha újra futtatni szeretné a konfigurációs szkriptet módosított változókkal, törölje előtte a build könyvtár tartalmát.
Ha minden rendben van, futtassa a make és make install parancsokat.
make -j4
make install
Telepítse a lefordított fájlokat a Málnára
Ha az összeállítás sikeres, a lefordított fájlok - amelyek a qt5.15 könyvtárban találhatók - átmásolhatók a Raspberry Pi-re. Ezt ismét az rsync paranccsal végezzük.
rsync -avz --rsync-path="sudo rsync" qt5.15 [email protected]:/usr/local/
QtCreator konfiguráció
A következő blogbejegyzésben elmagyarázom, hogyan kell használni a QtCreatort a lefordított könyvtárakkal való használatra.