Qt 5.15 kompil silang untuk Raspberry Compute Module 4 pada Ubuntu 20 LTS

Pengenalan

Ini adalah panduan untuk menyusun silang Qt 5.15.2 untuk Raspberry Pi 4 dan memasangnya pada Modul Pengkomputeran 4. Ini adalah kemas kini kepada catatan blog saya Qt di Raspberry Pi 4, dengan perbezaan kali ini saya menggunakan Raspberry Pi OS Lite (muat turun di sini: https://www.raspberrypi.org/software/operating-systems/), Qt versi 5.15.2 dan Ubuntu 20 LTS sebagai komputer silang disusun dalam mesin maya.

Sumber

Sebagai tambahan kepada catatan blog lama saya (lihat di atas), saya juga menggunakan sumber berikut:

Raspberry Pi OS Lite

Pasang Raspberry Pi OS Lite pada Raspberry Pi 4 atau pada Raspberry Compute Module 4 seperti yang diterangkan dalam catatan blog saya Memasang Raspberry Pi OS pada Raspberry Compute Module 4 .

Qt 5.15.2 pada Ubuntu 20 LTS

Selepas Raspberry Pi OS dipasang pada Modul Pengkomputeran dan but Raspberry kembali dari memori eMMC, sudah tiba masanya untuk memasang perisian yang diperlukan pada Raspberry dan pada mesin Ubuntu.

Modul Pengkomputeran Raspberry 4

Langkah-langkah yang ditunjukkan di bawah juga harus berfungsi pada Raspberry Pi 4 "normal".

Selepas bertukar pada Pi 4, buka menu konfigurasi.

sudo raspi-config
Untuk konfigurasi kami, kami memerlukan "SSH" dan "GL (KMS Palsu)". Lihat dua tangkapan skrin berikut.
SSH Konfiguration

FKMS Konfiguration

- Kemudian tambah sumber pembangunan kepada /etc/apt/sources.list. Untuk melakukan ini, tambahkan baris berikut:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- Kemudian kemas kini sistem dengan arahan berikut:
sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
- Dan kemudian pasang Qt dan pakej pembangunan yang diperlukan:
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
- Kemudian buat direktori untuk RaspberryQt:
sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15

Mesin Ubuntu

PC atau mesin maya dengan pemasangan Ubuntu 20 LTS diperlukan.
Pertama sekali, bawa Ubuntu terkini dan pasang beberapa pustaka yang diperlukan:

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

Kemudian - jika belum tersedia - buat kunci ssh dan pasang pada Raspberry, supaya gesaan kata laluan tidak muncul dengan setiap rsync dan nama pengguna dan kata laluan perlu dimasukkan. Terdapat arahan yang mencukupi di Internet, jadi saya akan menyelamatkan diri saya penerangan terperinci di sini.

Buat struktur direktori untuk perpustakaan Raspberry

Untuk fail yang diperlukan, saya mencipta struktur direktori berikut di bawah Dokumen/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

Muat turun Sumber Qt

Kami memuat turun sumber Qt dan membongkarnya dalam direktori raspberrypi4:

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

Sekarang kita perlu mengubah suai fail mkspec sedikit supaya kita boleh menggunakannya dengan pengkompil kami. Untuk melakukan ini, jalankan arahan berikut:

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

Muat turun Cross-Compiler

Sebagai pengkompil silang saya menggunakan versi Linaro 7.4.1. Untuk melakukan ini, tukar ke direktori alat dan muat turun dan buka pengkompil:

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

Rsync Perpustakaan Raspberry

Sekarang kita memerlukan perpustakaan asal dari Raspberry Pi, yang kita salin ke dalam direktori Ubuntu dengan rsync:

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/

Sekarang kita perlu membersihkan pautan simbolik yang disalin oleh rsync supaya mereka menunjuk kepada fail asal yang betul. Terdapat skrip Python kecil untuk dimuat turun:

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

Kemudian buat skrip boleh laku dan panggil:

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

Menyusun Qt

Sekarang kita boleh mengkonfigurasi binaan dan kemudian menyusunnya.

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

Selepas beberapa minit, skrip perlu selesai dan syarat EGLFS berikut harus ditetapkan atau tidak ditetapkan.

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

Jika ini tidak berlaku atau jika terdapat sebarang mesej ralat lain, sila siasat dan bersihkan. Jika anda ingin menjalankan skrip konfigurasi sekali lagi dengan pemboleh ubah yang berubah, sila padamkan kandungan direktori binaan terlebih dahulu.
Jika semuanya OK, kemudian jalankan membuat dan membuat arahan pemasangan.

make -j4
make install

Pasang fail yang disusun di Raspberry

Jika kompilasi berjaya, fail yang disusun - ia terletak di direktori qt5.15 - boleh disalin ke Raspberry Pi. Sekali lagi, kami melakukan ini menggunakan arahan rsync.

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

Konfigurasi QtCreator

Dalam catatan blog seterusnya saya akan menerangkan cara menggunakan QtCreator untuk digunakan dengan perpustakaan yang disusun.