Raspberry Pi Qt cross-compile: Unterschied zwischen den Versionen

Aus Nicki Wiki
Zur Navigation springen Zur Suche springen
Zeile 119: Zeile 119:


=Quellen=
=Quellen=
[https://wiki.qt.io/Raspberry_Pi_Beginners_Guide Raspberry Pi Beginners Guide]
[https://wiki.qt.io/RaspberryPi2EGLFS RaspberryPi2EGLFS]
[https://wiki.qt.io/RaspberryPi2EGLFS RaspberryPi2EGLFS]

Version vom 26. Mai 2021, 15:20 Uhr


RPI

Download letztes raspian-lite: wget http://downloads.raspberrypi.org/raspbian_latest Auf SD-Karte installieren und auf dem RPI starten. Auf dem RPI:

sudo raspi-config  #Expand Filesystem and change the GPU memory to 128 MB
sudo rpi-update
reboot

Installation Bibliotheken:

sudo nano /etc/apt/sources.list #uncomment the deb-src line
sudo apt-get update
sudo apt-get build-dep qt4-x11
sudo apt-get build-dep libqt5gui5
sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0

Zielverzeichnis anlegen:

sudo mkdir /usr/local/qt5pi
sudo chown pi:pi /usr/local/qt5pi

RPI Image mount

Image von SD-Karte ziehen oder direkt von SD-Karte mounten.
sudo mkdir /mnt/rasp-pi-rootfs

Mount: Raspberry Pi mount image
Partition 2: 512 * 122880 = 62914560

sudo mount -o loop,offset=62914560 raspian.img /mnt/rasp-pi-rootfs

Cross-Compile Toolchain

Arbeitsverzeichnis

Arbeitsverzeichnis anlegen:

sudo mkdir /opt/qtVERSION
cd /opt/qtVERSION

RPI tools

Download RPI tools:

git clone https://github.com/raspberrypi/tools

Pfad:

/opt/qtVERSION/tools

sysroot

Erstellen des sysroot verzeichnisses und synchronisation mit raspian-image sysroot verzeichnisses:

mkdir sysroot sysroot/usr sysroot/opt
rsync -avz /mnt/rasp-pi-rootfs/lib sysroot
rsync -avz /mnt/rasp-pi-rootfs/usr/include sysroot/usr
rsync -avz /mnt/rasp-pi-rootfs/usr/lib sysroot/usr
rsync -avz /mnt/rasp-pi-rootfs/opt/vc sysroot/opt

Pfad:

/opt/qtVERSION/sysroot

Symlinks

Symlinks relativ anpassen:

wget https://raw.githubusercontent.com/Kukkimonsuta/rpi-buildqt/master/scripts/utils/sysroot-relativelinks.py
chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot

qtbase

qtbase für RPI bauen. [Pfad: /opt/qtVERSION]

mkdir qt5build
git clone git://code.qt.io/qt/qtbase.git -b <qt-version>
cd qtbase 

<rpi-version>

linux-rasp-pi-g++ for RPi, linux-rasp-pi2-g++ for RPi2 and linux-rasp-pi3-g++ for RPi3

Configuration: (Für höhere Qt versionen (als 5.9.1) hinzufügenen der option -no-use-gold-linker

./configure -release -opengl es2 -device <rpi-version> -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot /opt/qtVERSION/sysroot -prefix /usr/local/qt5pi -opensource -confirm-license -make libs -no-use-gold-linker -v -skip wayland -skip qtscript -nomake tests -nomake examples
make
make install

buld säubern:

git clean -dfx

rsync qt5build to mount

cd /opt/qtVERSION rsync -avz qt5pi /mnt/rasp-pi-rootfs/usr/local

Update RPI

RPI starten und Bibliotheken updaten [auf RPI]:

echo /usr/local/qt5pi/lib | sudo tee /etc/ld.so.conf.d/qt5pi.conf
sudo ldconfig

Fix EGL/GLES Bibliotheken

sudo mv /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0_backup
sudo mv /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0_backup
sudo ln -s /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0
sudo ln -s /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
sudo ln -s /opt/vc/lib/libbrcmEGL.so /opt/vc/lib/libEGL.so
sudo ln -s /opt/vc/lib/libbrcmGLESv2.so /opt/vc/lib/libGLESv2.so

Fehlende symbolische Links ergänzen:

sudo ln -s /opt/vc/lib/libEGL.so /opt/vc/lib/libEGL.so.1
sudo ln -s /opt/vc/lib/libGLESv2.so /opt/vc/lib/libGLESv2.so.2

Qt Module

git clone git://code.qt.io/qt/<qt-module>.git -b <qt-version>
cd <qt-module>
/opt/qtVERSION/qt5/bin/qmake
make
make install
rsync -avz qt5pi /mnt/rasp-pi-rootfs/usr/local

QT Creator

Geräte

Einstellungen -> Geräte -> Hinzufügen -> IP, user, pass -> Finish

Compiler

Einstellungen -> Compilers -> Hinzufügen -> GCC

Compiler path: ~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++

Debugger

Einstellungen -> Debuggers -> Hinzufügen

/opt/qtVERSION/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gdb

Kits

Einstellungen -> Build & Run -> Kits -> Hinzufügen

Generic Linux Device
Device: the one we just created
Sysroot: ~/raspi/sysroot
Compiler: the one we just created
Debugger: the one we just created
Qt version: the one we saw under Qt Versions
Qt mkspec: leave empty

Quellen

Raspberry Pi Beginners Guide RaspberryPi2EGLFS