MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - Qt5のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - Qt5
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == ここでは、Qt 5.14のインストール方法を記載する。<br> <br><br> == 通常のインストール == ==== 依存関係のライブラリのインストール ==== Qtの依存関係のライブラリをインストールする。<br> これらのライブラリは不要な可能性がある。(調査中)<br> sudo zypper install Mesa-devel Mesa-KHR-devel または sudo zypper install Mesa-KHR-devel Mesa-devel Mesa-dri-devel Mesa-libEGL-devel Mesa-libGL-devel Mesa-libGLESv1_CM-devel Mesa-libGLESv2-devel \ Mesa-libglapi-devel kbproto-devel libOSMesa-devel libOSMesa8 libX11-devel libXau-devel libdrm-devel libgbm-devel \ libglvnd-devel libxcb-devel libxcb-screensaver0 libxcb-xf86dri0 libxcb-xtest0 libxcb-xvmc0 pthread-stubs-devel xproto-devel <br> ==== Qtのダウンロード ==== 最新版のQtをダウンロードするため、以下のコマンドを実行する。<br> ファイル情報を知りたい場合はこの[http://download.qt.io/official_releases/ Webサイト]を参照する。<br> wget http://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run ダウンロードしたファイルのアクセス権限を変更する。<br> chmod +x qt-unified-linux-x64-online.run <br> ==== Qtのインストール ==== /usr/localディレクトリ等にインストールする場合は、スーパーユーザでインストールする。<br> ホームディレクトリにインストールする場合は、ローカルユーザでインストールする。<br> <br> 次に、GCCおよびmake、付随するライブラリをインストールする。<br> # CentOS sudo yum groupinstall "Development tools" # SUSE sudo zypper install --type pattern devel_basis <br> Qtをインストールする。<br> ./qt-unified-linux-x64-online.run <br> Qtのインストール画面に従って、インストールを実行する。<br> <br><br> == ソースコードからインストール == ==== 必須環境 ==== * Qt 5.14.0以降 * Qt WebEngine module for QtWebEngine based help viewer * GCC 7以降 * オプション : CMake *: CMakeを使用してLLVM / ClangとQt Creatorをビルドする時に必要である。 * オプション : Ninja *: CMakeを使用してビルドする時に必要である。 * オプション : LLVM / Clang 8.0.0以降<br> *: Clang Code Model、Clang Tools、ClangFormat、Clang PCH Manager、Clang Refactoringプラグインに必要である。 *: LLVM C++ APIは互換性を保証するものではないので、それ以降のバージョンがコンパイルできない場合は、そのバージョンをサポートしていない。 * オプション : Qbs 1.7.x *: Qtのソースコードには、Qbs自身も含まれている。 <br> また、Qtをビルドする時のオプション設定を以下に記載する。<br> # オプション : 環境変数PATHにおいて、llvm-configのパスが通っていない場合に必要である export LLVM_INSTALL_DIR=<LLVMのインストールディレクトリ> # オプション : Clangのリファクタリングを無効にする場合、1を設定する export QTC_DISABLE_CLANG_REFACTORING=1 # オプション : QbsProjectManagerプラグインがQbsを使用する場合に必要である export QBS_INSTALL_DIR=/path/to/qbs # オプション : KSyntaxHighlightingを使用する場合、KSYNTAXHIGHLIGHTING_LIB_DIRライブラリを保持するディレクトリを設定する # インクルードディレクトリの自動推定に失敗する場合、KSYNTAXHIGHLIGHTING_INCLUDE_DIRを設定して、 # 両方の設定をqmakeコマンドのオプションで渡すこともできる export KSYNTAXHIGHLIGHTING_INCLUDE_DIR=<インクルードファイルを保持するディレクトリ> export KSYNTAXHIGHLIGHTING_LIB_DIR=<ライブラリを保持するディレクトリ> <br> ==== 依存関係のライブラリのインストール ==== Qtのソースコードをコンパイルするために必要な依存関係のライブラリをインストールする。<br> sudo zypper install git-core gcc-c++ make python3 perl \ xorg-x11-libxcb-devel xcb-util-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel \ xcb-util-wm-devel xorg-x11-devel libxkbcommon-x11-devel libxkbcommon-devel libXi-devel \ flex bison gperf libicu-devel ruby \ alsa-devel dbus-1-devel libXcomposite-devel libXcursor-devel libXrandr-devel libXtst-devel mozilla-nspr-devel \ mozilla-nss-devel gperf bison nodejs10 nodejs10-devel \ pulseaudio-libs-devel alsa-lib-devel gstreamer1-devel gstreamer1-plugins-base-devel wayland-devel <br> * fontconfig-devel * libfontenc-devel * libXft-devel * libx11-devel * libxcb-devel * libXext-devel * libXfixes-devel * libXrender-devel * libxcb-devel * Mesa-libGL-devel * xcb-util-keysyms-devel * xcb-util-image-devel * xcb-util-wm-devel * libXfixes-devel * xcb-util-renderutil-devel * libXinerama-devel * libxcb-shm0-dev * libxcb-sync0-dev * libxcb-shape0-dev <br> ==== ソースコードのダウンロード ==== Qtのソースコードをダウンロードする。<br> git clone --recursive https://code.qt.io/qt-creator/qt-creator.git <br> ==== ソースコードのビルド ==== Qtのソースコードをビルドするため、ビルド用のディレクトリを作成する。<br> mkdir build cd build <br> * qmakeを使用する場合 *: オプションのClang Code Modelプラグインをビルドする場合、LLVMのインストールディレクトリへのパスを指定する必要がある。 *: <code>export LLVM_INSTALL_DIR=<LLVMのインストールディレクトリ></code> *: <code>qmake ../qt-creator/qtcreator.pro</code> *: <code>make qmake_all</code> *: <code>make -j 8</code> *: もし、<code>Project ERROR: Unknown module(s) in QT: script</code>というエラーが出力される場合、以下のコマンドを実行する。 *: <code>make -j 8 module-qtscript</code> *: <br> * cmakeを使用する場合 *: Qtのソースコードをビルドする。 *: <code>cmake -G Ninja -D CMAKE_BUILD_TYPE=Release -D CMAKE_PREFIX_PATH=<Qtのインストールディレクトリ>; <LLVMのインストールディレクトリ> ../qt-creator</code> *: <code>cmake --build ..</code> <br> コンパイルには時間が掛かるので気長に待つ。(バイナリファイルは、qt-createor-build/binディレクトリに作成される)<br> <br> ==== Qtのインストール ==== Qtをインストールする。<br> make install INSTALL_ROOT=<Qtのインストールディレクトリ> <br><br> == デスクトップエントリの追加 == 以下のコマンドを実行して、デスクトップエントリを追加する。 sudo vi /usr/share/applications/qtcreator.desktop # qtcreator.desktopファイル [Desktop Entry] Type=Application Exec="/home/ユーザ名/Qt/Tools/QtCreator/bin/qtcreator" %F Name=Qt Creator GenericName=The IDE of choice for Qt development. Icon=QtProject-qtcreator StartupWMClass=qtcreator Terminal=false Categories=Development;IDE;Qt; MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs; <br> sudo vi /usr/share/applications/Qt-MaintenanceTool.desktop # Qt-MaintenanceTool.desktopファイル [Desktop Entry] Type=Application Exec=/home/ユーザ名/Qt/MaintenanceTool Path=/home/ユーザ名/Qt Name=Qt Maintenance Tool GenericName=Install or uninstall Qt components. Icon=/home/ユーザ名/Qt/QtIcon.png Terminal=false Categories=Development;Qt; <br> sudo vi /usr/share/applications/qt-project.qtdesigner.desktop # qt-project.qtdesigner.desktopファイル [Desktop Entry] Type=Application Exec="/home/ユーザ名/Qt/5.14.0/gcc_64/bin/designer" %F Name=Qt Designer GenericName=Qt designer Icon=/home/ユーザ名/Qt/designer.png StartupWMClass=qtdesigner Terminal=false Categories=Development;IDE;Qt; MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs; <br><br> == Raspberry Pi 3B / 4Bのクロスコンパイル == ==== 概要 ==== Raspberry Piにおいて、一般的なデスクトップソフトウェアのクロスコンパイルおよび組み込み / デバイス作成のユースケースの<br> クロスコンパイルを行う手順を記載する。<br> <br> 組み込み / デバイス作成とは、デスクトップソフトウェアをX11の下で実行するためのものではなく、<br> ソフトウェアがBroadcomドライバを使用して、dispmanx / EGLの上でフルスクリーンで実行するというユースケースのことである。<br> <br> <u>EGLを使用する場合、Qtソフトウェアはフルスクリーンでのみ動作する。</u><br> <u>通常のウインドウで起動する場合は、XCBを使用する必要があるが、XCBはOpenGLやQt Quickは動作しないことに注意すること。</u><br> <br> <u>このセクションでは、Raspberry PiにRaspbian Busterをインストールしていることを想定している。</u><br> <br> ==== Linux PCの設定 ==== Linux PCにおいて、以下の依存関係のライブラリをインストールする。<br> (Texinfoは、GNU公式Webサイトにアクセスして、ソースコードからインストールすることを推奨する)<br> sudo zypper install autoconf automake cmake unzip tar git wget pkg-config gperf gcc gcc-c++ libgfortran5 \ gawk bison openssl flex figlet pigz ncurses-devel ncurses5-devel texinfo <br> Raspberry Pi専用のGCC ARMツールチェインをダウンロードする。<br> https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ 表. GCC ARMツールチェーンのダウンロード |- ! style="background-color:#00ffff;" | Raspberry Piの種類 ! style="background-color:#00ffff;" | Raspbian Stretch(32-bit) ! style="background-color:#00ffff;" | Raspbian Buster(32-bit) |- | Raspberry Pi Zero/W/WH<br>Raspberry Pi 1 Model A / B / A+ / B+ | style="text-align:center;" | [https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%206.3.0/Raspberry%20Pi%201%2C%20Zero/cross-gcc-6.3.0-pi_0-1.tar.gz/download 6.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%209.3.0/Raspberry%20Pi%201%2C%20Zero/cross-gcc-9.3.0-pi_0-1.tar.gz/download 9.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%2010.2.0/Raspberry%20Pi%201%2C%20Zero/cross-gcc-10.2.0-pi_0-1.tar.gz/download 10.2.0] | style="text-align:center;" | [https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%208.3.0/Raspberry%20Pi%201%2C%20Zero/cross-gcc-8.3.0-pi_0-1.tar.gz/download 8.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%209.3.0/Raspberry%20Pi%201%2C%20Zero/cross-gcc-9.3.0-pi_0-1.tar.gz/download 9.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%2010.2.0/Raspberry%20Pi%201%2C%20Zero/cross-gcc-10.2.0-pi_0-1.tar.gz/download 10.2.0] |- | Raspberry Pi 2 Model A / B<br>Raspberry Pi 3 Model A / B | style="text-align:center;" | [https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%206.3.0/Raspberry%20Pi%202%2C%203/cross-gcc-6.3.0-pi_2-3.tar.gz/download 6.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%209.3.0/Raspberry%20Pi%202%2C%203/cross-gcc-9.3.0-pi_2-3.tar.gz/download 9.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%2010.2.0/Raspberry%20Pi%202%2C%203/cross-gcc-10.2.0-pi_2-3.tar.gz/download 10.2.0] | style="text-align:center;" | [https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%208.3.0/Raspberry%20Pi%202%2C%203/cross-gcc-8.3.0-pi_2-3.tar.gz/download 8.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%209.3.0/Raspberry%20Pi%202%2C%203/cross-gcc-9.3.0-pi_2-3.tar.gz/download 9.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%2010.2.0/Raspberry%20Pi%202%2C%203/cross-gcc-10.2.0-pi_2-3.tar.gz/download 10.2.0] |- | Raspberry Pi 3 Model A+ / B+<br>Raspberry Pi 4 Model A+ / B+<br>Raspberry Pi Compute 3 / 3lite / 3+ | style="text-align:center;" | [https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%206.3.0/Raspberry%20Pi%203A%2B%2C%203B%2B%2C%204/cross-gcc-6.3.0-pi_3%2B.tar.gz/download 6.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%209.3.0/Raspberry%20Pi%203A%2B%2C%203B%2B%2C%204/cross-gcc-9.3.0-pi_3%2B.tar.gz/download 8.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Stretch/GCC%2010.2.0/Raspberry%20Pi%203A%2B%2C%203B%2B%2C%204/cross-gcc-10.2.0-pi_3%2B.tar.gz/download 10.2.0] | style="text-align:center;" | [https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%208.3.0/Raspberry%20Pi%203A%2B%2C%203B%2B%2C%204/cross-gcc-8.3.0-pi_3%2B.tar.gz/download 8.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%209.3.0/Raspberry%20Pi%203A%2B%2C%203B%2B%2C%204/cross-gcc-9.3.0-pi_3%2B.tar.gz/download 9.3.0]<br>[https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Buster/GCC%2010.2.0/Raspberry%20Pi%203A%2B%2C%203B%2B%2C%204/cross-gcc-10.2.0-pi_3%2B.tar.gz/download 10.2.0] |} </center> <br> また、Linero社が提供しているGCC ARMツールチェーンも使用することができる。<br> https://releases.linaro.org/components/toolchain/binaries/<br> wget https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz <br> GCC ARMツールチェインを解凍して、任意のディレクトリに配置する。<br> ここでは、~/InstallSoftware/GCC_ARMディレクトリに配置している。<br> mv cross-gcc-10.2.0-pi_3+.tar.gz GCC_Raspbian_Buster32_10_2_0 cd GCC_Raspbian_Buster32_10_2_0 ~/InstallSoftware/GCC_ARM <br> GCC ARMツールチェーンは、システム固有のLTO(Link Time Optimization)フラグを使用して構築されているため、<br> ソフトウェアをコンパイルする時、これらのツールチェーンを使用することで、Raspberry PiのSoC固有の機能を簡単に利用することができる。<br> <br> Raspberry Pi 4は、Broadcom BCM2711 SoC(Cortex-A72 64bit)を採用しており、Raspberry Pi 3B+と同様、ARMv8-aアーキテクチャを採用している。<br> <br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ 表. Raspberry PiとLTO(Link Time Optimization)フラグの関係 |- ! style="background-color:#00ffff;" | Raspberry Piの種類 ! style="background-color:#00ffff;" | LTO(Link Time Optimization)フラグ |- | Raspberry Pi Zero/W/WH<br>Raspberry Pi 1 Model A / B / A+ / B+ || -march=armv6 -mfloat-abi=hard -mfpu=vfp |- | Raspberry Pi 2 Model A / B<br>Raspberry Pi 3 Model A / B || -march=armv7-a -mfloat-abi=hard -mfpu=neon-vfpv4 |- | Raspberry Pi 3 Model A+ / B+ (32Bit)<br>Raspberry Pi 4 Model A+ / B+ (32Bit)<br>Raspberry Pi Compute 3 / 3lite / 3+ (32Bit) || -march=armv8-a -mfloat-abi=hard -mfpu=neon-fp-armv8 |- | Raspberry Pi 3 Model A+ / B+ (64Bit)<br>Raspberry Pi 4 Model A+ / B+ (64Bit)<br>Raspberry Pi Compute 3 / 3lite / 3+ (64Bit) || -march=armv8-a+fp+simd |} </center> <br> ==== Raspberry Piの設定 ==== 描画処理に時間が掛かる場合、Raspberry PiのVRAMを256[MB]程度に変更する。<br> <code>sudo raspi-config</code> <br> <u>Raspberry Pi 4Bでは、Broadcom EGLはサポートされていないため、Qt 5を使用する場合は、KMSを有効にする必要がある。</u><br> また、KMSを有効にするには、<u>libgles2-mesa-dev</u>ライブラリと<u>libgbm-dev</u>ライブラリをインストールする必要がある。<br> * GL(FAKE KMS)を有効にする手順 *: <code>sudo raspi-config</code> *: 次に、[Advanced Options] - [A8 GL Driver] - [G2 GL (Fake KMS)]を選択することにより、KMSが有効になる。 *: 最後に、[Finish]を選択して終了する。 *: (最小限のビルドを使用する場合、このオプションが利用可能になる前に、いくつかのアップデートを促される時はアップデートする。 <br> 次に、/etc/apt/sources.listファイルのdeb-srcから始まる行のコメントを外す。<br> sudo vi /etc/apt/sources.list <br> # /etc/apt/sources.listファイル # 編集前 #deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi # 編集後 deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi <br> Raspbian Busterのソフトウェアおよびファームウェアをアップデートする。<br> sudo apt-get update sudo apt-get dist-upgrade sudo reboot sudo rpi-update sudo reboot <br> Raspberry Piに、Qtライブラリをインストールする。(ここでは簡単にするために、build-depを使用する)<br> ここで、<code>build-dep</code>コマンドとは、ビルドに必要なパッケージが全てインストールするコマンドである。<br> ビルド設定によっては、不要なパッケージも含まれている。<br> # Raspberry Pi 3B # EGLを使用する場合 sudo apt-get install ccache libicu-dev icu-devtools libhidrd0 libhidrd0-dev libzstd1 libzstd-dev \ libinput-bin libinput-dev libts0 libts-bin libts-dev libmtdev1 libmtdev-dev libevdev2 libevdev-dev \ libblkid-dev libffi-dev libglib2.0-dev libglib2.0-dev-bin libmount-dev \ libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libselinux1-dev libsepol1-dev libwacom-dev \ libfontconfig1-dev libdbus-1-dev libnss3-dev libxkbcommon-dev libjpeg-dev libasound2-dev libudev-dev libgles2-mesa-dev \ libxcb-xinerama0 libxcb-xinerama0-dev gdbserver python (QtQuickを使用する場合) \ libgtk-3-dev (QtWidget向けにGTKネイティブテーマを使用する場合) # XCBを使用する場合 sudo apt-get install ccache libicu-dev icu-devtools libhidrd0 libhidrd0-dev libsctp1 libsctp-dev libzstd1 libzstd-dev \ libinput-bin libinput-dev libts0 libts-bin libts-dev libmtdev1 libmtdev-dev libevdev2 libevdev-dev \ libblkid-dev libffi-dev libglib2.0-dev libglib2.0-dev-bin libmount-dev \ libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libselinux1-dev libsepol1-dev libwacom-dev \ libfontconfig1-dev libdbus-1-dev libnss3-dev libxkbcommon-dev libjpeg-dev libasound2-dev libudev-dev \ libxcb-xinerama0 libxcb-xinerama0-dev gdbserver \ python (QtQuickを使用する場合) \ libgtk-3-dev (QtWidget向けにGTKネイティブテーマを使用する場合) \ libx11-dev libxcb1-dev libxext-dev libxi-dev libxcomposite-dev libxcursor-dev libxtst-dev libxrandr-dev \ libfreetype6-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev \ libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev \ libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util0-dev \ libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig1-dev # Raspberry Pi 4B # EGLを使用する場合 sudo apt-get install ccache libicu-dev icu-devtools libhidrd0 libhidrd0-dev libzstd1 libzstd-dev \ libinput-bin libinput-dev libts0 libts-bin libts-dev libmtdev1 libmtdev-dev libevdev2 libevdev-dev \ libblkid-dev libffi-dev libglib2.0-dev libglib2.0-dev-bin libmount-dev \ libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libselinux1-dev libsepol1-dev libwacom-dev \ libfontconfig1-dev libdbus-1-dev libnss3-dev libxkbcommon-dev libjpeg-dev libasound2-dev libudev-dev libgles2-mesa-dev \ libxcb-xinerama0 libxcb-xinerama0-dev gdbserver python (QtQuickを使用する場合) \ libgtk-3-dev (QtWidget向けにGTKネイティブテーマを使用する場合) # XCBを使用する場合 sudo apt-get install ccache libicu-dev icu-devtools libhidrd0 libhidrd0-dev libsctp1 libsctp-dev libzstd1 libzstd-dev \ libinput-bin libinput-dev libts0 libts-bin libts-dev libmtdev1 libmtdev-dev libevdev2 libevdev-dev \ libblkid-dev libffi-dev libglib2.0-dev libglib2.0-dev-bin libmount-dev \ libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libselinux1-dev libsepol1-dev libwacom-dev \ libfontconfig1-dev libdbus-1-dev libnss3-dev libxkbcommon-dev libjpeg-dev libasound2-dev libudev-dev \ libxcb-xinerama0 libxcb-xinerama0-dev gdbserver \ python (QtQuickを使用する場合) \ libgtk-3-dev (QtWidget向けにGTKネイティブテーマを使用する場合) \ libx11-dev libxcb1-dev libxext-dev libxi-dev libxcomposite-dev libxcursor-dev libxtst-dev libxrandr-dev \ libfreetype6-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev \ libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev \ libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util0-dev \ libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig1-dev sudo apt-get build-dep libqt5webengine-data (WebEngineを使用する場合) sudo apt-get build-dep libqt5webkit5 (WebKitを使用する場合) <br> マルチメディア関連やBluetooth等を使用する場合、下表に示す任意のパッケージをインストールする。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ その他のライブラリ(オプション) |- ! style="background-color:#00ffff;" | 機能 ! style="background-color:#00ffff;" | インストールするライブラリ ! style="background-color:#00ffff;" | configureスクリプトのオプション |- | Bluetooth || bluez bluez-tools libbluetooth-dev || |- | 画像 || libjpeg-dev libpng-dev libtiff-dev || |- | コーデック || libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev || |- | マルチメディア || libgstreamer1.0-0 libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base<br>gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad<br>libgstreamer-plugins-bad1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-tools<br>gstreamer1.0-alsa gstreamer1.0-x gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5<br>libwayland-dev(Wayland開発パッケージは、gstreamerヘッダで必要) || |- | ALSAオーディオ || libasound2-dev || |- | Pulseオーディオ || pulseaudio libpulse-dev || |- | OpenALオーディオ || libopenal-data libsndio7.0 libopenal1 libopenal-dev || |- | データベース || libpq-dev(PostgreSQL)<br>libmariadbclient-dev(MariaDB / MySQL) || |- | プリンタ || libcups2-dev || |- | Wayland || libwayland-dev || |- | X11 || libx11-dev libxcb1-dev libxext-dev libxi-dev libxcomposite-dev libxcursor-dev libxtst-dev libxrandr-dev<br>libfreetype6-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev<br>libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev<br>libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util0-dev<br> libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig1-dev || |- | WebEngine || 必須 :<br>flex bison gperf libre2-dev libnss3-dev libdrm-dev<br><br>オプション1 :<br>libxml2-dev libxslt1-dev libminizip-dev libjsoncpp-dev liblcms2-dev libevent-dev libprotobuf-dev<br>protobuf-compiler<br><br>オプション2(不安定なため注意すること) :<br>libopus-dev libvpx-dev || |- | アクセシビリティ || libatspi-dev || |- | SCTP || libsctp1 libsctp-dev || -sctp |- | Broadcom EGLの代わりに<br>VC4ドライバを使用する場合<br><br><u>※Raspberry Pi 4では必須</u> || libgles2-mesa-dev libgbm-dev || -platform linux-rpi-vc4-g++ |} </center> <br> ビルドしたQtソフトウェアをRasberry Piにデプロイするためのディレクトリを作成する。<br> 加えて、Qtライブラリを配置するディレクトリも作成する。<br> mkdir -p ~/InstallSoftware/QtApplication ~/InstallSoftware/Qt_5_x_x_EGL ~/InstallSoftware/Qt_5_x_x_XCB <br> <u>Raspberry Pi 4Bの場合、以下のシンボリックリンクを作成する。</u><br> sudo ln -sf -r /usr/include/arm-linux-gnueabihf/asm /usr/include sudo ln -sf -r /usr/include/arm-linux-gnueabihf/gnu /usr/include sudo ln -sf -r /usr/include/arm-linux-gnueabihf/bits /usr/include sudo ln -sf -r /usr/include/arm-linux-gnueabihf/sys/* /usr/include/sys sudo ln -sf -r /usr/include/arm-linux-gnueabihf/openssl/* /usr/include/openssl sudo ln -sf /usr/lib/arm-linux-gnueabihf/crtn.o /usr/lib/crtn.o && \ sudo ln -sf /usr/lib/arm-linux-gnueabihf/crt1.o /usr/lib/crt1.o && \ sudo ln -sf /usr/lib/arm-linux-gnueabihf/crti.o /usr/lib/crti.o <br> 次のセクションにおいて、<code>rsync</code>コマンドを使用してLinux PCとRaspberry Piのファイルを同期する。<br> <u>しかし、同期するファイルには、スーパユーザ権限が必要なものがある。</u><br> <br> そのため、一般ユーザでも全てのファイルを同期できるように、/etc/sudoersファイルに以下の設定を追記する。<br> 以下の設定により、<code>rsync</code>コマンドは、必要に応じてスーパユーザ権限で実行される。<br> echo "$USER ALL=NOPASSWD:$(which rsync)" | sudo tee --append /etc/sudoers <br> ==== SysRootディレクトリの設定 ==== Linux PCで、Raspberry Pi向けのQtソフトウェアをクロスコンパイルできるように開発環境を設定する。<br> Raspberry Pi上でネイティブにコンパイルすることもできるが、Linux PCの方がスループットが良い。<br> <br> Linux PC上に開発用ディレクトリを作成する。<br> また、Raspberry Piのいくつかのルートディレクトリと同期する必要があるため、システムルートディレクトリも作成する。<br> mkdir -p ~/Program/Qt_Embedded/sysroot ~/Program/Qt_Embedded/sysroot/lib ~/Program/Qt_Embedded/sysroot/opt \ ~/Program/Qt_Embedded/sysroot/usr ~/Program/Qt_Embedded/sysroot/usr/share <br> <code>rsync</code>コマンドを使用して、Raspberry Piに存在するいくつかのディレクトリから、ファイルをダウンロードする。<br> rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/lib ~/Program/Qt_Embedded/sysroot rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/include ~/Program/Qt_Embedded/sysroot/usr rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/lib ~/Program/Qt_Embedded/sysroot/usr rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/share/pkgconfig ~/Program/Qt_Embedded/sysroot/usr/share rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/opt/vc ~/Program/Qt_Embedded/sysroot/opt <br> ダウンロードしたファイルおよびディレクトリのシンボリックリンクを相対的に調整する。<br> fixQualifiedLibraryPathsが正常に動作しないため、提供されたスクリプトをダウンロードして実行する。<br> wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py chmod +x sysroot-relativelinks.py ./sysroot-relativelinks.py ~/Program/Qt_Embedded/sysroot <br> ==== Qtライブラリのダウンロード ==== ===== Raspberry Pi 3B /4B 共通 ===== まず、Qtライブラリのソースコードをダウンロードする。<br> <br> 以下のコマンドにおいて、<Qtのバージョン>および<Qtのショートバージョン>は、ダウンロードするQtのバージョンに変更する。<br> 例えば、Qt 5.15.2をダウンロードする場合、5.15.2と入力する。Qt 5.15の最新版をダウンロードする場合、5.15と入力する。<br> * QtBaseをダウンロードする場合 *: <code>cd ~/Program/Qt_Embedded</code> *: <code>git clone git://code.qt.io/qt/qtbase.git -b <Qtのバージョン></code> *: または *: <code>git clone https://github.com/qt/qtbase -b <Qtのバージョン></code> *: <br> * Qt Everywhere Opensourceをビルドする場合 *: <code>wget https://download.qt.io/official_releases/qt/x.x/x.x.x/single/qt-everywhere-src-x.x.x.tar.xz</code> *: <code>tar xf qt-everywhere-opensource-src-x.x.x.tar.gz</code> *: <code>cd qt-everywhere-opensource-src-x.x.x</code> *: <br> * Githubからソースコードをダウンロードする場合 *: QtのGithubでは、より多くの新しいアップデートが行われている。 *: <code>git clone https://github.com/qt/qt5.git</code> *: <code>cd qt5</code> *: <code>git checkout <Qtのバージョン></code>または<code>git checkout <Qtのショートバージョン></code> *: <br> *: <code>init-repository</code>コマンドは、Qtが提供する指定したモジュールのソースコードを取得するためのツールである。 *: super-repoはそれ自体は小さく、他の全てはgit submodulesとして保持されている。 *: 利用可能な全てのモジュールについては[https://doc.qt.io/qt-5/qtmodules.html こちらのWebサイト]、ツールについては<code>init-repository --help</code>コマンドまたは[https://github.com/qt/qt5/blob/dev/init-repository こちらのWebサイト]を参照すること。 *: <code>./init-repository --module-subset=essential</code> *: <br> <br> ===== Raspberry Pi 4B ===== <u>Raspberry Pi 4Bの場合、以下のように、qmake.confをカスタマイズする必要がある。</u><br> qmake.confファイルは、ビルド時の設定を定義するものである。<br> cd /<Qtのソースコードが存在するディレクトリ>/qtbase/mkspecs/devices cp -r linux-arm-gnueabi-g++ linux-arm-gnueabihf-g++ sed -i -e 's/arm-linux-gnueabi-/arm-linux-gnueabihf-/g' ./linux-arm-gnueabihf-g++/qmake.conf または cd /<Qtのソースコードが存在するディレクトリ>/qtbase/mkspecs cp -r linux-arm-gnueabi-g++ linux-arm-gnueabihf-g++ sed -i -e 's/arm-linux-gnueabi-/arm-linux-gnueabihf-/g' ./linux-arm-gnueabihf-g++/qmake.conf <br> ===== Raspberry Pi 3B (EGLを使用する場合)===== * 方法 1 Raspberry Pi 3Bの場合も、以下のように、qmake.confをカスタマイズする必要がある。<br> cd /<Qtのソースコードが存在するディレクトリ>/qtbase/mkspecs/devices cp -r linux-rasp-pi3-g++ linux-rasp-pi3-brcm-g++ vi linux-rasp-pi3-brcm-g++/qmake.conf <br> # qmake.confファイル # qmake configuration for the Raspberry Pi 3 using the Broadcom graphics stack # MODIFIED to use the library names that are shipped since 2016 # # Also setting the linker flags according to the pkg-config files that are shipped with the libraries. # Remove egl.pc and glesv2.pc from /usr/lib/arm-linux-gnueabihf/pkgconfig/ for these to take effect. # The reason for using static values instead of supplying the correct pkg-config files is that configure ignores -pthread from there # # Including headers from /opt/vc first, but also from mesa version of EGL and GLES, since the /opt/vc headers are from 2009 and don't work with qtwebengine. # This way you can make mesa headers available by manually removing directories EGL, GLES and GLES2 from /opt/vc/include before building. include(../common/linux_device_pre.conf) # Let the linker know about /opt/vc/lib. Required for EGL config.test (at least) because brcmGLESv2 also needs brcmEGL. QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib VC_LIBRARY_PATH = $$[QT_SYSROOT]/opt/vc/lib VC_INCLUDE_PATH = $$[QT_SYSROOT]/opt/vc/include MESA_INCLUDE_PATH = $$[QT_SYSROOT]/usr/include QMAKE_LIBDIR_OPENGL_ES2 = $${VC_LIBRARY_PATH} QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 QMAKE_LIBDIR_BCM_HOST = $$VC_LIBRARY_PATH QMAKE_INCDIR_EGL = \ $${VC_INCLUDE_PATH} \ $${MESA_INCLUDE_PATH} \ $${VC_INCLUDE_PATH}/interface/vcos/pthreads \ $${VC_INCLUDE_PATH}/interface/vmcs_host/linux QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} QMAKE_INCDIR_BCM_HOST = $$VC_INCLUDE_PATH # recreating pkg-config --libs glesv2 QMAKE_LIBS_OPENGL_ES2 = -L$${VC_LIBRARY_PATH} -lbrcmGLESv2 -lbcm_host -lvcos -lvchiq_arm -pthread # recreating pkg-config --libs egl QMAKE_LIBS_EGL = -L$${VC_LIBRARY_PATH} -lbrcmEGL -lbrcmGLESv2 -lbcm_host -lvchostif -lbcm_host -lvcos -lvchiq_arm -pthread #recreating pkg-config --libs bcm_host QMAKE_LIBS_BCM_HOST = -L$${VC_LIBRARY_PATH} -lbcm_host -lvcos -lvchiq_arm -pthread QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 QMAKE_CXXFLAGS = $$QMAKE_CFLAGS DISTRO_OPTS += hard-float DISTRO_OPTS += deb-multi-arch EGLFS_DEVICE_INTEGRATION = eglfs_brcm include(../common/linux_arm_device_post.conf) load(qt_config) <br> <u>Raspberry Pi 3Bの場合、上記で作成したqmake.confファイルを使用する必要がある。</u><br> これは、Qtをビルドする時、pkg-configを使用して、どのライブラリがどの場所にインストールされているかを判断する。<br> <br> 実際には複数の方法があるが、最良の方法は、上記で作成したqmake.confファイルの静的な定義を使用することである。<br> そこで、.pcファイルを削除して、configureがMesaのデフォルトを使用せずに、上記の定義を使用する。<br> cd /<sysrootが存在するディレクトリ>/sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig mv egl.pc egl.pc.mesa mv glesv2.pc glesv2.pc.mesa <br> * 方法 2 cd /<Qtのソースコードが存在するディレクトリ>/qtbase/mkspecs/devices cp -r linux-rasp-pi2-g++ linux-rasp-pi3-ex-g++ vi linux-rasp-pi3-ex-g++/qmake.conf <br> # linux-rasp-pi3-ex-g++/qmake.confファイル # 編集前 QMAKE_LIBS_EGL = -lEGL -lGLESv2 QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 # 編集後 QMAKE_LIBS_EGL = -lbrcmEGL -lbrcmGLESv2 QMAKE_LIBS_OPENGL_ES2 = -lbrcmEGL -lbrcmGLESv2 # 追記 QMAKE_LIBS_OPENVG = -lbrcmEGL -lbrcmOpenVG -lbrcmGLESv2 <br> 次に、以下のソースコードを編集する。<br> vi /<Qtのソースコードが存在するディレクトリ>/qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp <br> # qxcbeglwindow.cppファイル 96行目あたり # 編集前 m_surface = eglCreateWindowSurface(m_glIntegration->eglDisplay(), m_config, m_window, 0); # 編集後 m_surface = eglCreateWindowSurface(m_glIntegration->eglDisplay(), m_config, (void*)m_window, 0); <br> SysRootディレクトリから、nss.pcファイルがあるディレクトリに対して、パスを追加する。<br> find <SysRootディレクトリ> -type f -name nss.pc export PKG_CONFIG_PATH=<nss.pcファイルが存在するディレクトリ> <br> * 方法 3 <u>この方法は、qt-everywhere-src-5.x.xファイルのみで実行できる。</u><br> <br> Githubから、mkspecsを自動編集するツールをダウンロードする。<br> このツールでは、libbrcm*.soライブラリ名を参照するように設定されている。<br> git clone https://github.com/oniongarlic/qt-raspberrypi-configuration.git <br> ツールをQtのソースコードがあるディレクトリにインストールする。<br> cd ./qt-raspberrypi-configuration make install DESTDIR=<Qtのソースコードがあるディレクトリ>/qt-everywhere-src-5.x.x <br> ==== Qtライブラリのビルド ==== ここでは、Qtソフトウェアは~/Program/Qt_Embedded/QtSoftwareディレクトリ、qmake等のホストツールは~/Program/Qt_Embedded/Hostディレクトリ、<br> Qtライブラリは~/Program/Qt_Embedded/Targetディレクトリとしている。<br> <br> <Raspberry Piのバージョン>は、Raspberry Piの種類に変更する。<br> <u>ただし、上記のセクションでmkspecを変更した場合は、そのディレクトリ名に合わせること。</u><br> * <Raspberry Piのバージョン> ** Raspberry Pi 1 **: <code>linux-rasp-pi-g++</code> ** Raspberry Pi 2 **: <code>linux-rasp-pi2-g++</code> ** Reaspberry Pi 3 **: <code>linux-rasp-pi3-g++</code> ** Raspberry Pi 4 **: <code>linux-rasp-pi4-v3d-g++</code> <br> <u>Raspbian OS 64bitを使用している場合は、<code>-device-option</code>オプションを以下のように記述する。</u><br> <code>-device-option CROSS_COMPILE=/<GCC ARMツールチェインのインストールディレクトリ>/bin/aarch64-linux-gnueabihf-</code><br> また、Qt 5.8以降は、<code>-no-use-gold-linker</code>オプションを追加する必要がある。<br> <br> * QtBaseをビルドする場合 *: <code>cd qtbase && mkdir build && cd build</code> *: <br> *: <code>../configure -release -opengl es2 -eglfs -device <Raspberry Piのバージョン> \</code> *: <code>-device-option CROSS_COMPILE=/<GCC ARMツールチェーンのインストールディレクトリ>/bin/arm-linux-gnueabihf- \</code> *: <code>-sysroot /home/<ユーザ名>/Program/Qt_Embedded/sysroot -opensource -confirm-license -skip qtscript -skip qtwayland -skip qtwebengine \</code> *: <code>-nomake examples -nomake tests -make libs -pkg-config -no-use-gold-linker -v -recheck \</code> *: <code>-L/home/<ユーザ名>/Program/Qt_Embedded/sysroot/usr/lib/arm-linux-gnueabihf -I/home/<ユーザ名>/Program/Qt_Embedded/sysroot/usr/include/arm-linux-gnueabihf \</code> *: <code>-prefix /home/<ユーザ名>/Program/Qt_Embedded/Qt5 -extprefix /home/<ユーザ名>/Program/Qt_Embedded/Qt5</code> *: <br> *: <code>gmake -j $(nproc)</code> *: <code>gmake install</code> *: <br> *: 失敗した場合は、全てを削除するために以下のコマンドを実行する。<br> *: <code>git clean -dfx</code> *: <br> * Qt Everywhere Opensourceをビルドする場合 *: <code>mkdir build && cd build</code> *: <br> *: <code>../configure -release -opengl es2 -eglfs -device <Raspberry Piのバージョン> \</code> *: <code>-device-option CROSS_COMPILE=/<GCC ARMツールチェーンのインストールディレクトリ>/bin/arm-linux-gnueabihf- \</code> *: <code>-sysroot /home/<ユーザ名>/Program/Qt_Embedded/sysroot -opensource -confirm-license -skip qtscript -skip qtwayland -skip qtwebengine \</code> *: <code>-nomake examples -nomake tests -make libs -pkg-config -no-use-gold-linker -v -recheck \</code> *: <code>-L/home/<ユーザ名>/Program/Qt_Embedded/sysroot/usr/lib/arm-linux-gnueabihf -I/home/<ユーザ名>/Program/Qt_Embedded/sysroot/usr/include/arm-linux-gnueabihf \</code> *: <code>-prefix /home/<ユーザ名>/Program/Qt_Embedded/Qt5 -extprefix /home/<ユーザ名>/Program/Qt_Embedded/Qt5</code> *: <br> *: <code>gmake -j $(nproc)</code> *: <code>gmake install</code> *: <br> *: <u>もし、ビルドしたQtライブラリにネイティブのrccファイルが存在しない場合は、rccファイルをQtライブラリのbinディレクトリにコピーする。</u><br> *: (Qtライブラリを使用するソフトウェアをビルドする場合、このrccバイナリが必要である)<br> *: <code>cp ~/Program/Qt_Embedded/qtbase/bin/rcc ~/Program/Qt_Embedded/Qt5/bin</code> <br> * Githubにあるソースコードからビルドする場合 *: <code>mkdir -p ~/Program/Qt_Embedded/build && cd ~/Program/Qt_Embedded/build</code> *: <br> *: <code>../qt5/configure -release -opengl es2 -eglfs -device linux-rasp-pi3-brcm-g++ \</code> *: <code>-device-option CROSS_COMPILE=/<GCC ARMツールチェーンのインストールディレクトリ>/bin/arm-linux-gnueabihf- \</code> *: <code>-sysroot /run/media/suse/SAMSUNG860EVO/Qt_Embedded/sysroot \</code> *: <code>-opensource -confirm-license -v -nomake examples -nomake tests -make libs -no-use-gold-linker -recheck-all \</code> *: <code>-bundled-xcb-xinput -qpa eglfs -skip qtscript -skip qtwayland -skip qtwebengine \</code> *: <code>-prefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Qt_5_15_2 \</code> *: <code>-extprefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Target \</code> *: <code>-hostprefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Host</code> *: <br> *: <code>gmake -j $(nproc)</code> *: <code>gmake install</code> <br> ==== Qtライブラリのインストール ==== ビルドしたQtライブラリを、Raspberry Piにデプロイする。<br> ~/Program/Qt_Embedded/Qt5ディレクトリに存在する全てのファイルを、Raspberry Piの/usr/localディレクトリに同期させる。<br> rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ ~/Program/Qt_Embedded/Target <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_5_x_x <br> Raspberry PiのリンカがQtライブラリを読み込むようにするため、以下のコマンドを実行する。<br> <u>/etc/ld.so.conf.dディレクトリに配置する場合、Raspberry Pi 2B / 3Bでは、ファイル名の先頭に"00"を付加すること。</u><br> # .profileファイルに設定する場合 export LD_LIBRARY_PATH="/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_5_x_x/lib:$LD_LIBRARY_PATH" # /etc/ld.so.conf.dディレクトリに配置する場合 echo /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_5_x_x/lib | sudo tee /etc/ld.so.conf.d/00-Qt_5_x_x.conf sudo ldconfig <br> これにより、Raspberry PiでQtライブラリが使用できる。<br> <br> ==== Qtソフトウェアの動作確認 ==== Qtソフトウェアをビルドして、動作確認を行う。<br> <br> まず、Qt Creatorを起動して、Qt Creatorメイン画面左の[プロジェクト] - 右ペインの[ビルド設定] - [Build Environment]項目 - [詳細]プルダウンを開く。<br> [詳細]プルダウンから[追加]ボタンを押下して、以下の項目を設定する。<br> * Variable - QT_QPA_PLATFOMRTHEME *: Value - qt5ct * Variable - DISPLAY *: Value - :0.0 * Variable - XAUTHORITY *: Value - /home/<Raspberry Piのユーザ名>/.Xauthrity * Variable - XDG_SESSION_TYPE *: Value - x11 <br> 次に、Raspberry Piの~/.profileファイルまたは~/.bashrcファイルに、以下の設定を追記する。<br> export QT_QPA_PLATFOMRTHEME=qt5ct export DISPLAY=:0.0 export XAUTHORITY=/home/<Raspberry Piのユーザ名>/.Xauthrity export XDG_SESSION_TYPE=x11 <br> ビルドの完了後、実行ファイルをRaspberry Piにコピーする。<br> cd qtbase/examples/opengl/qopenglwidget ~/Program/Qt_Embedded/Qt5/bin/qmake make -j $(nproc) scp -P <ポート番号> -i <秘密鍵のフルパス> qopenglwidget <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/home/<Raspberry Piのユーザ名>/Qt5Pi <br> Raspberry Piで、EGL / GLESライブラリを修正する。<br> Raspberry Piの/usr/lib/arm-linux-gnueabihfディレクトリには、MesaのlibEGLとlibGLESv2が存在する。<br> Qtソフトウェアは、/opt/vc/libディレクトリにあるライブラリではなく、これらを選択することになる。<br> <br> これは、OpenGLのパフォーマンスを気にしないX11デスクトップソフトウェアには都合が良いが、<br> フルスクリーンの組み込みソフトウェアをウィンドウ化するには全く役に立たない。<br> <br> オリジナルのファイルは、必ず、バックアップする。<br> sudo mv /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0_org sudo mv /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0_org sudo ln -s /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 sudo ln -s /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 sudo ln -s /opt/vc/lib/libbrcmEGL.so /opt/vc/lib/libEGL.so sudo ln -s /opt/vc/libbrcmGLESv2.so /opt/vc/libGLESv2.so <br> また、見つからないシンボリックリンクも追加する。<br> sudo ln -s /opt/vc/lib/libEGL.so /opt/vc/lib/libEGL.so.1 sudo ln -s /opt/vc/libGLESv2.so /opt/vc/lib/libGLESv2.so.2 <br> 以下の例では、Linux PC側で、Qtソフトウェアをビルドしている。<br> <Qtソフトウェアのサンプル>と<Qtのバージョン>はユーザ環境に合致するものを記述すること。<br> git clone git://code.qt.io/qt/<Qtソフトウェアのサンプル>.git -b <Qtのバージョン> cd <Qtソフトウェアのサンプル> ~/Program/Qt_Embedded/Qt5/bin/qmake make -j 8 make install <br> 最後に、Qtソフトウェアをデプロイする。<br> rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" ~/Program/Qt_Embedded/Qt5Pi <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/home/<Raspberry Piのユーザ名>/Qt5Pi <br><br> __FORCETOC__ [[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Qt]]
インストール - Qt5
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse