紹介
これは、Raspberry Pi 4用のQt 5.15.2をクロスコンパイルし、コンピューティングモジュール4にインストールするためのガイドです。 これは、Raspberry Pi 4に関する私のブログ投稿Qtのアップデートですが、今回はRaspberry Pi OS Lite(ダウンロードはこちら:https://www.raspberrypi.org/software/operating-systems/)、Qtバージョン5.15.2、Ubuntu 20 LTSを仮想マシンのクロスコンパイルコンピューターとして使用しているという違いがあります。
ソース
私の古いブログ投稿(上記を参照)に加えて、私は次のソースも使用しました:
ラズベリーパイOS Lite
私のブログ記事「Raspberry Pi OS をRaspberry Compute Module 4にインストールする」で説明されているように、Raspberry Pi OS Liteを Raspberry Pi 4またはRaspberry Compute Module 4に インストールします。
Qt 5.15.2 on Ubuntu 20 LTS
ラズベリーパイOSがコンピューティングモジュールにインストールされ、ラズベリーがeMMCメモリから起動したら、ラズベリーとUbuntuマシンに必要なソフトウェアをインストールします。
ラズベリーコンピューティングモジュール 4
以下に示す手順は、「通常の」ラズベリーパイ4でも機能するはずです。
Pi 4の電源を入れた後、構成メニューを開きます。
sudo raspi-config
構成には、「SSH」と「GL(偽のKMS)」が必要です。次の 2 つのスクリーンショットを参照してください。- 次に、開発ソースを /etc/apt/sources.list に追加します。これを行うには、次の行を追加します。
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- 次に、次のコマンドでシステムを更新します。sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
-次に、必要なQtと開発パッケージをインストールします。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
- 次に、ラズベリーQtのディレクトリを作成します。sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15
###ウブンツマシン Ubuntu 20 LTSがインストールされているPCまたは仮想マシンが必要です。 まず、Ubuntuを最新の状態にし、いくつかの必要なライブラリをインストールします。
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
次に、まだ利用できない場合は、ssh-keyを作成してラズベリーにインストールし、rsyncごとにパスワードプロンプトが表示されないようにし、ユーザー名とパスワードを入力する必要があります。インターネットには十分な指示があるので、ここで詳細な説明は割愛します。
ラズベリーライブラリのディレクトリ構造を作成する
必要なファイルについては、ドキュメント/ 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
Qtリソースのダウンロード
Qtリソースをダウンロードし、ラズベリーpi4ディレクトリに解凍します。
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
次に、コンパイラで使用できるようにmkspecファイルを少し変更する必要があります。これを行うには、次のコマンドを実行します。
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
クロスコンパイラのダウンロード
クロスコンパイラとして、私はLinaroバージョン7.4.1を使用しています。これを行うには、toolsディレクトリに移動し、コンパイラをダウンロードして解凍します。
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を使用してUbuntuディレクトリにコピーします。
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/
次に、rsyncによってコピーされたシンボリックリンクをクリーンアップして、正しい元のファイルを指すようにする必要があります。ダウンロード用の小さなPythonスクリプトがあります:
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
次に、スクリプトを実行可能にして呼び出します。
sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
Qtのコンパイル
これで、ビルドを構成してコンパイルできます。
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
数分後、スクリプトが終了し、以下の EGLFS 条件が設定されるか、設定されないかがわかります。
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
そうでない場合、またはその他のエラーメッセージが表示された場合は、調査してクリーンアップしてください。変数を変更した状態で設定スクリプトを再度実行したい場合は、事前にビルドディレクトリの内容を削除してください。 すべて問題がなければ、makeコマンドとmakeインストールコマンドを実行します。
make -j4
make install
####コンパイルされたファイルをラズベリーにインストールする
コンパイルが成功した場合、コンパイルされたファイル(qt5.15ディレクトリにあります)をRaspberryPiにコピーできます。繰り返しますが、rsyncコマンドを使用してこれを行います。
rsync -avz --rsync-path="sudo rsync" qt5.15 pi@192.168.1.7:/usr/local/
設定 QtCreator
次の ブログ記事 では、コンパイルされたライブラリで使用するためにQtCreatorを使用する方法を説明します。