📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

1,459行目: 1,459行目:
===== CMakeツールチェーンファイルの作成 =====
===== CMakeツールチェーンファイルの作成 =====
ターゲット向けQt 6ライブラリのビルドで使用するCMakeツールチェーンファイルを作成する。<br>
ターゲット向けQt 6ライブラリのビルドで使用するCMakeツールチェーンファイルを作成する。<br>
  vi ToolChain_for_PinePhone.cmake
  vi Qt6ToolChain_for_PinePhone.cmake
<br>
<br>
  <syntaxhighlight lang="cmake">
  <syntaxhighlight lang="cmake">
1,471行目: 1,471行目:
   
   
  # Set path to System Root.
  # Set path to System Root.
  set(TARGET_SYSROOT /run/media/suse/SAMSUNG860EVO/Qt_Embedded/SystemRoot_Manjaro)
  set(TARGET_SYSROOT <PinePhoneのシステムルートディレクトリ>)
  set(CMAKE_SYSROOT ${TARGET_SYSROOT})
  set(CMAKE_SYSROOT ${TARGET_SYSROOT})
   
   
1,503行目: 1,503行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
===== Qt Baseのビルド =====
===== Qtのビルド =====
Qtをビルドするため、ビルド用のディレクトリを作成する。<br>
Qt 6をクロスビルドするため、クロスビルド向けディレクトリを作成する。<br>
  mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build
  mkdir build && cd build
<br>
<br>
CMakeファイルを実行する。<br>
Qt 6のクロスビルド向けの設定を行う。<br>
  # Set PinePhone's system root.
  # Wayland Scannerのパスを設定
  MANJARO_SYSROOT="<PinePhoneのシステムルートディレクトリ>"
  export PATH="/<Wayland Scannerのインストールディレクトリ>/bin:$PATH"
export LD_LIBRARY_PATH="/<Wayland Scannerのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
   
   
  export PATH="<ホスト向けQt 6がインストールされたディレクトリ>/bin:$PATH"
  # PinePhoneのシステムルートディレクトリを設定
  export LD_LIBRARY_PATH="<ホスト向けQt 6がインストールされたディレクトリ>/lib:$LD_LIBRARY_PATH"
  export SYSROOT=<PinePhoneのシステムルートディレクトリ>
   
   
  export PKG_CONFIG_PATH=<PinePhoneのシステムルートディレクトリ>/usr/lib/pkgconfig
# Pkg-Configの設定
  export PKG_CONFIG_LIBDIR=<PinePhoneのシステムルートディレクトリ>/usr/lib/pkgconfig:<PinePhoneのシステムルートディレクトリ>/usr/share/pkgconfig
  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"
   
   
  # Compile Qt 6 for PinePhone
  # コンパイラの設定
  cmake -GNinja \
  export CROSS_COMPILER="/<GCC ARMツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-"
  ../qt-everywhere-src-6.x.x  \
# または
  # export CROSS_COMPILER="/<GCC ARMツールチェーンのインストールディレクトリ>/bin/aarch64-unknown-linux-gnu-"
cmake -G Ninja \
<Qt 6のソースコードがあるディレクトリ>      \
  -DCMAKE_BUILD_TYPE=Release          \
  -DCMAKE_BUILD_TYPE=Release          \
  -DQT_FEATURE_eglfs_egldevice=ON    \
  -DQT_FEATURE_eglfs_egldevice=ON    \
  -DQT_FEATURE_eglfs_gbm=ON          \
  -DQT_FEATURE_eglfs_gbm=ON          \
  -DQT_BUILD_TOOLS_WHEN_CROSSCOMPILING=ON \
-DCMAKE_TOOLCHAIN_FILE=<CMakeデバイスファイルのパス>          \
  -DQT_BUILD_EXAMPLES=OFF \
  -DQT_BUILD_TOOLS_WHEN_CROSSCOMPILING=ON                 \
  -DQT_BUILD_TESTS=OFF   \
-DQT_QMAKE_TARGET_MKSPEC=devices/linux-pinephone-g++    \
  -DBUILD_qtdoc=OFF       \
-DQT_QMAKE_DEVICE_OPTIONS=CROSS_COMPILE=$CROSS_COMPILER  \
  -DBUILD_qtwebengine=OFF \
  -DQT_BUILD_EXAMPLES=OFF \
  -DBUILD_qtwebview=OFF   \
  -DQT_BUILD_TESTS=OFF     \
  -DQT_HOST_PATH=<ホスト向けQt 6がインストールされたディレクトリ>          \
  -DBUILD_qtdoc=OFF       \ # QtDocをインストールしない場合
  -DCMAKE_STAGING_PREFIX=<ターゲット向けQt 6をインストールするディレクトリ> \
  -DBUILD_qtwebengine=OFF \ # QtWebEngineをインストールしない場合
  -DCMAKE_INSTALL_PREFIX=<おそらく使用しない>                       \
  -DBUILD_qtwebview=OFF   \ # QtWebViewをインストールしない場合
  -DCMAKE_PREFIX_PATH=<PinePhoneのシステムルートディレクトリ>//usr/lib/                        \
  -DBUILD_qtwebchannel=OFF \ # QtWebChannelをインストールしない場合
  -DCMAKE_TOOLCHAIN_FILE=<ターゲット向けQt 6ライブラリのビルドで使用するCMakeツールチェーンファイルのパス> \
  -DCMAKE_SYSROOT=$SYSROOT \
  -DQT_QMAKE_TARGET_MKSPEC=<Qt向けPinePhoneのデバイスファイル  例: devices/linux-pinephone-g++>
  -DQT_HOST_PATH=<x86 64向けQt 6のパスのトップディレクトリ  例: /home/user/Qt/6.x.x/gcc_64> \
  -DCMAKE_STAGING_PREFIX=<PinePhone向けQt 6ライブラリを配置するディレクトリ>     \
  -DCMAKE_INSTALL_PREFIX=<Qtソフトウェアを配置するディレクトリ>                 \
  -DCMAKE_PREFIX_PATH=$SYSROOT/usr/lib
<br>
<br>
Qtをビルドおよびインストールする。<br>
Qt 6をクロスビルドおよびインストールする。<br>
  cmake --build . --parallel $(nproc)
  cmake --build . --parallel $(nproc)
  cmake --install .
  cmake --install .
<br>
===== Qtライブラリのインストール =====
クロスビルドしたQtライブラリを、PinePhoneにデプロイする。<br>
<br>
まず、PinePhone向けQt 6ライブラリのインストールディレクトリに存在する全てのファイルを、PinePhoneの任意のディレクトリ(例. ~/InstallSoftware/Qt_6_x_xディレクトリ)に同期させる。<br>
rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \
<PinePhone向けQt 6ライブラリのインストールディレクトリ> <PinePhoneのユーザ名>@<PinePhoneのホスト名またはIPアドレス>:/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_6_x_x
<br>
<u>※注意</u><br>
<u>PinePhoneにアップロードしたQtライブラリの所有者がrootになっている場合があるため、</u><br>
<u>以下のコマンドを実行して、所有者をローカルユーザに変更する必要がある。</u><br>
sudo chown -R <ユーザ名>:<グループ名> ~/InstallSoftware/Qt_6_x_x
<br>
PinePhoneのリンカがQtライブラリを読み込むようにするため、以下のコマンドを実行する。<br>
/etc/ld.so.conf.dディレクトリに配置する場合、ファイル名の先頭に"<code>00</code>"を付加すること。<br>
<br>
<u>※注意</u><br>
<u>~/.profileファイルに環境変数<code>LD_LIBRARY_PATH</code>を設定する場合、再度、Qt Creatorで環境変数<code>LD_LIBRARY_PATH</code>を設定する必要がある。</u><br>
<u>Qt Creatorでの設定は、Qt Creatorメイン画面左にある[プロジェクト] - [RUN] - [Environment]で設定する。</u><br>
# .profileファイルに設定する場合
export LD_LIBRARY_PATH="/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_6_x_x/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/qmltooling:$LD_LIBRARY_PATH" 
# /etc/ld.so.conf.d/00-Qt_6_x_x.confファイルに設定する場合
echo /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_6_x_x/lib | sudo tee /etc/ld.so.conf.d/00-Qt_6_x_x.conf
echo /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/qmltooling | sudo tee /etc/ld.so.conf.d/00-Qt_6_x_x.conf
<br>
ライブラリを読み込む。<br>
# .profileファイルに設定した場合
source ~/.profile
# /etc/ld.so.conf.d/00-Qt_6_x_x.confファイルに設定した場合
sudo ldconfig
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Qt]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Qt]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]