13,118
回編集
(→Qtのビルド) タグ: 差し戻し済み |
編集の要約なし タグ: 取り消し |
||
| 1,324行目: | 1,324行目: | ||
gawk bison openssl flex figlet pigz ncurses-devel ncurses5-devel texinfo | gawk bison openssl flex figlet pigz ncurses-devel ncurses5-devel texinfo | ||
<br> | <br> | ||
Linero社が提供しているGCC ARMツールチェーンをダウンロードする。<br> | |||
https://releases.linaro.org/components/toolchain/binaries/<br> | |||
<br> | <br> | ||
wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz | |||
tar xf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz | |||
<br> | <br> | ||
==== '''Wayland-Scannerのインストール(重要)''' ==== | ==== '''Wayland-Scannerのインストール(重要)''' ==== | ||
Wayland-Scannerをインストールするには、MesonとNinjaをビルドする必要がある。<br> | Wayland-Scannerをインストールするには、MesonとNinjaをビルドする必要がある。<br> | ||
<br> | <br> | ||
まず、Wayland Scannerをダウンロードする。<br> | まず、Wayland Scannerをダウンロードする。<br> | ||
| 1,363行目: | 1,339行目: | ||
次に、Wayland Scannerをビルドする。<br> | 次に、Wayland Scannerをビルドする。<br> | ||
<u>Wayland Scannerのインストールディレクトリは、PinePhoneのホスト向けターゲットディレクトリを指定すること。</u><br> | <u>Wayland Scannerのインストールディレクトリは、PinePhoneのホスト向けターゲットディレクトリを指定すること。</u><br> | ||
meson ./build --prefix=<Wayland-Scannerのインストールディレクトリ> -Ddocumentation=false | meson ./build/ --prefix=<Wayland-Scannerのインストールディレクトリ> -Ddocumentation=false | ||
ninja -C | ninja -C build/ install | ||
<br> | <br> | ||
| 1,491行目: | 1,467行目: | ||
rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <PinePhoneのユーザ名>@<PinePhoneのホスト名またはIPアドレス>:/usr/share/pkgconfig ~/Program/Qt_Embedded/sysroot/usr/share | rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <PinePhoneのユーザ名>@<PinePhoneのホスト名またはIPアドレス>:/usr/share/pkgconfig ~/Program/Qt_Embedded/sysroot/usr/share | ||
<br> | <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のソースコードのダウンロード ==== | ==== Qtのソースコードのダウンロード ==== | ||
* Qt Everywhere (こちらを推奨する)<br> | * Qt Everywhere (こちらを推奨する)<br> | ||
*: <code>wget https://download.qt.io/official_releases/qt/ | *: <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- | *: <code>tar xf qt-everywhere-opensource-src-x.x.x.tar.gz</code> | ||
*: <br> | *: <br> | ||
* Githubの使用 | * Githubの使用 | ||
*: | *: GithubからQtのソースコードを個別にダウンロードする。<br> | ||
*: <code>git clone https://github.com/qt/qt5.git | *: <code>git clone https://github.com/qt/qt5.git</code> | ||
*: <br> | *: <br> | ||
*: ダウンロードしたスーパーリポジトリに移動する。<br> | *: ダウンロードしたスーパーリポジトリに移動する。<br> | ||
*: <code>cd | *: <code>cd qt5</code> | ||
*: <code>git checkout <Qtのバージョン></code> | *: <code>git checkout <Qtのバージョン></code> | ||
*: または | *: または | ||
| 1,515行目: | 1,497行目: | ||
<br> | <br> | ||
==== | ==== Qtの設定 ==== | ||
Qtのソースコードがあるディレクトリにおいて、qtbase/mkspecs/devices/linux-pinephone-g++ディレクトリを作成する。<br> | Qtのソースコードがあるディレクトリにおいて、qtbase/mkspecs/devices/linux-pinephone-g++ディレクトリを作成する。<br> | ||
mkdir <Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++ | mkdir <Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++ | ||
| 1,585行目: | 1,567行目: | ||
==== Qtのビルド ==== | ==== Qtのビルド ==== | ||
===== GCC 11以降を使用する場合 ===== | |||
mkdir build && cd build | GCC 11以降のツールチェーンを使用する場合、Qt 5.15のビルド時において、以下に示すエラーが発生する。<br> | ||
error: 'numeric_limits' is not a member of 'std' static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max(); | |||
error: expected primary-expression before '>' token static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max(); | |||
error: '::max' has not been declared; did you mean 'std::max'? static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max(); | |||
<br> | |||
これは、std::limitsが削除されて、limits.hファイルに移行されたからである。<br> | |||
もし、GCC 11以降を使用してQt 5.15をビルドする場合は、qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qglobal.hファイルを、以下に示すように編集する。<br> | |||
vi qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qglobal.h | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qglobal.hファイル | |||
// 45〜48行目あたり | |||
// 編集前 | |||
#ifdef __cplusplus | |||
# include <type_traits> | |||
# include <cstddef> | |||
# include <utility> | |||
#endif | |||
// 編集後 | |||
#ifdef __cplusplus | |||
# include <type_traits> | |||
# include <cstddef> | |||
# include <utility> | |||
#include <limits> | |||
#endif | |||
</syntaxhighlight> | |||
<br> | |||
===== Qtのビルド ===== | |||
Qtをビルドするため、ビルド用のディレクトリを作成する。<br> | |||
mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build | |||
<br> | <br> | ||
Configureスクリプトを実行する。<br> | |||
export PATH="/<Wayland Scannerのインストールディレクトリ>/bin:$PATH" | export PATH="/<Wayland Scannerのインストールディレクトリ>/bin:$PATH" | ||
export LD_LIBRARY_PATH="/<Wayland Scannerのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" | export LD_LIBRARY_PATH="/<Wayland Scannerのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" | ||
export PKG_CONFIG_PATH="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig" | |||
export | export PKG_CONFIG_LIBDIR="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig:/<SysRootがあるディレクトリ>/usr/share/pkgconfig" | ||
export PKG_CONFIG_LIBDIR=" | |||
# コンパイラの設定 | # コンパイラの設定 | ||
export | export COMPILER="/<GCC ARMツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-" | ||
# または | # または | ||
# export | # export COMPILER="/<GCC ARMツールチェーンのインストールディレクトリ>/bin/aarch64-unknown-linux-gnu-" | ||
../<Qtのソースコードがあるディレクトリ>/configure -v | |||
-release \ | |||
-opensource \ | |||
-confirm-license \ | |||
-opengl es2 \ | |||
-qpa wayland \ | |||
-device linux-pinephone-g++ \ | |||
-device-option CROSS_COMPILE=$COMPILER \ | |||
-nomake examples -no-compile-examples -nomake tests -make libs -no-use-gold-linker -recheck-all \ | |||
-skip qtscript -skip qtwebengine -skip qtandroidextras -skip qtmacextras -skip qtwinextras \ | |||
-skip qtgamepad -skip qtpurchasing -skip qtcharts -skip qtsensors \ (不要な場合) | |||
-skip qtlocation -skip qtspeech -skip qtlottie \ (不要な場合) | |||
-skip qtdoc \ | |||
-sysroot /<SysRootが存在するディレクトリ>/sysroot \ | |||
-prefix /<Qtソフトウェアを配置するディレクトリ>/QtSoftware \ | |||
-extprefix /<PinePhoneにインストールするQtライブラリを配置するディレクトリ>/Target \ | |||
-hostprefix /<Linux PCで使用するQtツールを配置するディレクトリ>/Host | |||
<br> | |||
Qtをビルドおよびインストールする。<br> | |||
gmake -j $(nproc) | |||
gmake install | |||
<br> | |||
===== Qt Waylandのビルド ===== | |||
まず、Qt Waylandのソースコードのディレクトリ(/<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner)に対して、<br> | |||
wayland-text-input-unstable-v2-client-protocolファイル、wayland-text-input-unstable-v2-server-protocol.hファイル、wayland-wayland-client-protocol.hファイルを作成する。<br> | |||
<br> | |||
<u>なお、wayland-text-input-unstable-v2-client-protocolファイルとwayland-text-input-unstable-v2-server-protocol.hファイルは、空のファイルである。</u><br> | |||
touch /<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner/wayland-text-input-unstable-v2-client-protocol.h \ | |||
/<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner/wayland-text-input-unstable-v2-server-protocol.h \ | |||
/<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner/wayland-wayland-client-protocol.h | |||
<br> | |||
vi /<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner/wayland-wayland-client-protocol.h | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// wayland-wayland-client-protocol.hファイル | |||
#include "../../../../../src/client/wayland-wayland-client-protocol.h" | |||
</syntaxhighlight> | |||
<br> | |||
次に、Wayland Scannerをインストールする。<br> | |||
なお、Wayland Scannerのビルドには、Meson(Pythonライブラリ)とNinjaが必要である。<br> | |||
# Wayland Scannerのビルドに必要なライブラリをインストールする。 | |||
#: <code>sudo zypper install meson ninja expat-devel libxml2-devel</code> | |||
#: <br> | |||
# Wayland Scannerのソースコードをダウンロードする。<br> | |||
#: <code>git clone https://github.com/wayland-project/wayland.git</code> | |||
#: <code>cd wayland && mkdir build</code> | |||
#: <br> | |||
# Wayland Scannerのビルドおよびインストールする。 | |||
#: <code>meson ./build --prefix=<上記でインストールしたQtツールのインストールディレクトリ> -Ddocumentation=false</code> | |||
#: <code>ninja -C ./build install</code> | |||
<br> | |||
最後に、Qt Waylandをビルドおよびインストールする。<br> | |||
export PATH="/<Wayland Scannerのインストールディレクトリ>/bin:$PATH" | |||
export LD_LIBRARY_PATH="/<Wayland Scannerのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" | |||
export LD_LIBRARY_PATH="/<上記でインストールしたQtライブラリのインストールディレクトリ>/lib:$LD_LIBRARY_PATH" | |||
export PKG_CONFIG_PATH="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig" | |||
export PKG_CONFIG_LIBDIR="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig:/<SysRootがあるディレクトリ>/usr/share/pkgconfig" | |||
cd /<Qtのソースコードがあるディレクトリ>/qtwayland | |||
mkdir build && cd build | |||
/<上記でインストールしたQtツールがあるディレクトリ>/bin/qmake ../qtwayland.pro | |||
<br> | |||
===== Qt SVGのビルド ===== | |||
もし、Qt SVGをビルドおよびインストールしていない場合は、手動で行う。<br> | |||
<u>なお、Qt SVGをインストールするには、上記でインストールしたQtツール(Linux PC向け)のディレクトリにあるqmakeファイルを使用する必要がある。</u><br> | |||
<br> | <br> | ||
Qt | まず、Qt SVGのソースコードが存在するディレクトリに移動して、ビルド用ディレクトリを作成する。<br> | ||
cd /<Qtのソースコードがあるディレクトリ>/qtsvg | |||
mkdir build && cd build | |||
<br> | |||
Qt SVGをビルドおよびインストールする。<br> | |||
<u>なお、Qt SVGのインストールディレクトリは、自動的にQtライブラリ(ターゲット向け)のディレクトリにインストールされる。</u><br> | |||
<u>そのため、<code>DESTDIR</code>オプション等は付加しない。(付加しても無視される)</u> | |||
/<上記でインストールしたLinux PC向けのQtツールのディレクトリ>/Host/bin/qmake ../qtsvg.pro | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
<br> | |||
===== Qt Virtual Keyboardのビルド ===== | |||
もし、Qt Virtual Keyboardをビルドおよびインストールしていない場合は、手動で行う。<br> | |||
この時、Qt Virtual Keyboardがインストールされているディレクトリを環境変数<code>LD_LIBRARY_PATH</code>に追加する必要がある。<br> | |||
<br> | |||
<u>なお、Qt Virtual Keyboardをインストールするには、上記でインストールしたQtツール(Linux PC向け)のディレクトリにあるqmakeファイルを使用する必要がある。</u><br> | |||
<br> | |||
まず、Qt Virtual Keyboardのソースコードが存在するディレクトリに移動して、ビルド用ディレクトリを作成する。<br> | |||
cd /<Qtのソースコードがあるディレクトリ>/qtvirtualkeyboard | |||
mkdir build && cd build | |||
<br> | |||
Qt Virtual Keyboardをビルドおよびインストールする。<br> | |||
<u>なお、Qt Virtual Keyboardのインストールディレクトリは、自動的にQtライブラリ(ターゲット向け)のディレクトリにインストールされる。</u><br> | |||
<u>そのため、<code>DESTDIR</code>オプション等は付加しない。(付加しても無視される)</u> | |||
export LD_LIBRARY_PATH="/<上記でインストールしたQtライブラリ(ターゲット向け)のディレクトリ>/lib:$LD_LIBRARY_PATH" | |||
/<上記でインストールしたLinux PC向けのQtツールのディレクトリ>/Host/bin/qmake "CONFIG+=lang-all" ../qtvirtualkeyboard.pro | |||
make -j $(nproc) | |||
make install | |||
<br> | <br> | ||