Giriş
Bu, Raspberry Pi 4 için Qt 5.15.2'yi çapraz derlemek ve Bilgi İşlem Modülü 4'e yüklemek için bir kılavuzdur. Raspberry Pi 4'teki blog yazım Qt'ye bir güncelleme, bu sefer Raspberry Pi OS Lite (buradan indirin: https://www.raspberrypi.org/software/operating-systems/), Qt sürüm 5.15.2 ve Ubuntu 20 LTS'yi sanal bir makinede çapraz derleme bilgisayarı olarak kullanıyorum.
Kaynaklar
Eski blog yazıma ek olarak (yukarıya bakın), aşağıdaki kaynakları da kullandım:
- Uvindu Wijesinghe tarafından: https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
Dikkat
Bu makalede Raspberry Pi, Qt6 ve Ubuntu 22.04 LTS için çapraz derleme içeren bir güncelleme var. Daha yeni sürümlere ihtiyacınız varsa bu bağlantıyı takip edin.
Raspberry Pi OS Lite
Raspberry Pi OS Lite'ı Raspberry Pi 4'e veya Raspberry Compute Module 4'e Raspberry Pi OS'yi Raspberry Compute Module 4'e Yükleme blog yazımda açıklandığı gibi yükleyin.
Ubuntu 5.15.2 LTS üzerinde Qt 20
Raspberry Pi OS, Bilgi İşlem Modülüne yüklendikten ve Raspberry eMMC belleğinden geri yüklendikten sonra, gerekli yazılımı Raspberry'ye ve Ubuntu makinesine yüklemenin zamanı geldi.
Ahududu Bilgi İşlem Modülü 4
Aşağıda gösterilen adımlar "normal" bir Raspberry Pi 4 üzerinde de çalışmalıdır.
Pi 4'ü açtıktan sonra yapılandırma menüsünü açın.
sudo raspi-config
Yapılandırmamız için "SSH" ve "GL (Sahte KMS)" ye ihtiyacımız var. Aşağıdaki iki ekran görüntüsüne bakın.- Ardından geliştirme kaynaklarını /etc/apt/sources.list dosyasına ekleyin. Bunu yapmak için aşağıdaki satırı ekleyin:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- Ardından sistemi aşağıdaki komutlarla güncelleyin:sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
- Ve sonra gerekli Qt ve geliştirme paketlerini yükleyin: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
- Ardından RaspberryQt için bir dizin oluşturun:sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
Ubuntu Makinesi
Ubuntu 20 LTS yüklü bir PC veya sanal makine gereklidir.
Her şeyden önce, Ubuntu'yu güncel hale getirin ve gerekli bazı kütüphaneleri yükleyin:
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
Ardından - zaten mevcut değilse - bir ssh anahtarı oluşturun ve Ahududu'ya yükleyin, böylece her rsync'te bir şifre istemi görünmez ve kullanıcı adı ve şifre girilmesi gerekir. İnternette yeterli talimat var, bu yüzden kendimi burada ayrıntılı açıklamadan ayıracağım.
Ahududu kitaplıkları için dizin yapısı oluşturma
Gerekli dosyalar için Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4 altında aşağıdaki dizin yapısını oluşturuyorum:
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 Kaynaklarını İndirin
Qt kaynaklarını indirip raspberrypi4 dizininde açıyoruz:
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
Şimdi derleyicimizle kullanabilmemiz için mkspec dosyasını biraz değiştirmemiz gerekiyor. Bunu yapmak için aşağıdaki komutları çalıştırın:
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
Çapraz Derleyiciyi İndir
Çapraz derleyici olarak Linaro sürüm 7.4.1 kullanıyorum. Bunu yapmak için, araçlar dizinine geçin ve derleyiciyi indirip paketini açın:
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
Ahududu Kütüphanelerinin Rsync
Şimdi rsync ile Ubuntu dizinlerine kopyaladığımız Raspberry Pi'den orijinal kütüphanelere ihtiyacımız var:
cd ..
rsync -avz --rsync-path="sudo rsync" --delete pi@192.168.1.7:/lib sysroot/
rsync -avz --rsync-path="sudo rsync" --delete pi@192.168.1.7:/usr/include sysroot/usr/
rsync -avz --rsync-path="sudo rsync" --delete pi@192.168.1.7:/usr/lib sysroot/usr/
rsync -avz --rsync-path="sudo rsync" --delete pi@192.168.1.7:/opt/vc sysroot/opt/
Şimdi rsync tarafından kopyalanan sembolik bağlantıları temizlemeliyiz, böylece doğru orijinal dosyalara işaret ederler. İndirmek için küçük bir Python betiği var:
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
Ardından komut dosyasını çalıştırılabilir hale getirin ve çağırın:
sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
Qt derleme
Şimdi yapıyı yapılandırabilir ve sonra derleyebiliriz.
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
Birkaç dakika sonra, komut dosyası tamamlanmalı ve aşağıdaki EGLFS koşulları ayarlanmalı veya ayarlanmamalıdır.
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
Durum böyle değilse veya başka bir hata mesajı görünüyorsa, lütfen araştırın ve temizleyin. Yapılandırma komut dosyasını değiştirilen değişkenlerle yeniden çalıştırmak isterseniz, lütfen yapı dizininin içeriğini önceden silin.
Her şey yolundaysa, make ve make install komutlarını çalıştırın.
make -j4
make install
Derlenmiş dosyaları Ahududu'ya yükleyin
Derleme başarılı olursa, derlenen dosyalar - qt5.15 dizininde bulunurlar - Raspberry Pi'ye kopyalanabilir. Yine, bunu rsync komutunu kullanarak yapıyoruz.
rsync -avz --rsync-path="sudo rsync" qt5.15 pi@192.168.1.7:/usr/local/
Yapılandırma QtCreator
Bir sonraki blog yazısında , derlenmiş kütüphanelerle kullanım için QtCreator'ın nasıl kullanılacağını açıklayacağım.