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:
- oleh Uvindu Wijesinghe: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
Perhatian
Terdapat kemas kini kepada artikel ini, yang mengandungi kompilasi silang untuk Raspberry Pi, Qt6 dan Ubuntu 22.04 LTS. Ikuti pautan ini, jika anda memerlukan versi yang lebih baharu.
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.- 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.