Raspberry Pi Qt cross-compile: Unterschied zwischen den Versionen
Nick (Diskussion | Beiträge) |
Nick (Diskussion | Beiträge) |
||
| Zeile 31: | Zeile 31: | ||
sudo mkdir /opt/qtVERSION | sudo mkdir /opt/qtVERSION | ||
cd /opt/qtVERSION | cd /opt/qtVERSION | ||
===RPI tools=== | ===RPI tools=== | ||
Download RPI tools: | Download RPI tools: | ||
| Zeile 36: | Zeile 37: | ||
Pfad: | Pfad: | ||
/opt/qtVERSION/tools | /opt/qtVERSION/tools | ||
===sysroot=== | ===sysroot=== | ||
Erstellen des sysroot verzeichnisses und | Erstellen des sysroot verzeichnisses und synchronisation mit raspian-image sysroot verzeichnisses: | ||
mkdir sysroot sysroot/usr sysroot/opt | mkdir sysroot sysroot/usr sysroot/opt | ||
rsync -avz /mnt/rasp-pi-rootfs/lib sysroot | rsync -avz /mnt/rasp-pi-rootfs/lib sysroot | ||
| Zeile 45: | Zeile 47: | ||
Pfad: | Pfad: | ||
/opt/qtVERSION/sysroot | /opt/qtVERSION/sysroot | ||
===Symlinks === | ===Symlinks === | ||
Symlinks relativ anpassen: | Symlinks relativ anpassen: | ||
| Zeile 50: | Zeile 53: | ||
chmod +x sysroot-relativelinks.py | chmod +x sysroot-relativelinks.py | ||
./sysroot-relativelinks.py sysroot | ./sysroot-relativelinks.py sysroot | ||
===qtbase=== | ===qtbase=== | ||
qtbase für RPI bauen. [Pfad: /opt/qtVERSION] | qtbase für RPI bauen. [Pfad: /opt/qtVERSION] | ||
mkdir qt5build | |||
git clone git://code.qt.io/qt/qtbase.git -b <qt-version> | git clone git://code.qt.io/qt/qtbase.git -b <qt-version> | ||
cd qtbase | cd qtbase | ||
<rpi-version> | |||
linux-rasp-pi-g++ for RPi, linux-rasp-pi2-g++ for RPi2 and linux-rasp-pi3-g++ for RPi3 | |||
./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 -opensource -confirm-license -make libs - | 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 | ||
make install | make install | ||
| Zeile 62: | Zeile 68: | ||
git clean -dfx | git clean -dfx | ||
=Qt= | ===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=== | |||
Go to Options -> Compilers -> Add -> GCC | |||
Compiler path: ~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ | |||
===Debugger=== | |||
Go to Options -> Debuggers -> Add | |||
/opt/qtVERSION/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gdb | |||
===Kits=== | |||
Go to Options -> Build & Run | |||
Version vom 26. Mai 2021, 15:09 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
Go to Options -> Compilers -> Add -> GCC
Compiler path: ~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++
Debugger
Go to Options -> Debuggers -> Add
/opt/qtVERSION/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gdb
Kits
Go to Options -> Build & Run