紹介

これは、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を仮想マシンのクロスコンパイルコンピューターとして使用しているという違いがあります。

ソース

私の古いブログ投稿(上記を参照)に加えて、私は次のソースも使用しました:

注意

この記事にはRaspberry Pi, Qt6 ,Ubuntu 22.04 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 つのスクリーンショットを参照してください。
SSH Konfiguration

FKMS Konfiguration

- 次に、開発ソースを /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 [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/

次に、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 [email protected]:/usr/local/

設定 QtCreator

次の ブログ記事 では、コンパイルされたライブラリで使用するためにQtCreatorを使用する方法を説明します。

Walter Prechtl

Walter Prechtl

更新日時: 18. 3月 2024
読書時間: 6 分