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

n
1,453行目: 1,453行目:
<br>
<br>
==== Qtのビルド ====
==== Qtのビルド ====
===== CMakeツールチェーンファイルの作成 =====
ターゲット向けQt 6ライブラリのビルドで使用するCMakeツールチェーンファイルを作成する。<br>
vi ToolChain_for_PinePhone.cmake
<br>
<syntaxhighlight lang="cmake">
# ToolChain_for_PinePhone.cmake
cmake_minimum_required(VERSION 3.18)
include_guard(GLOBAL)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# Set path to System Root.
set(TARGET_SYSROOT /run/media/suse/SAMSUNG860EVO/Qt_Embedded/SystemRoot_Manjaro)
set(CMAKE_SYSROOT ${TARGET_SYSROOT})
# Set path to package config.
set(ENV{PKG_CONFIG_PATH}        ${TARGET_SYSROOT}/usr/lib/pkgconfig)
set(ENV{PKG_CONFIG_LIBDIR}      ${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/share/pkgconfig)
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})
# Set path to Cross Compiler.
set(CMAKE_C_COMPILER    <クロスコンパイル向けGCCまたはClangのパス>)
set(CMAKE_CXX_COMPILER  <クロスコンパイル向けG++またはClang++のパス>)
set(CMAKE_C_FLAGS  "${CMAKE_CXX_FLAGS} -fPIC -Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib -L${TARGET_SYSROOT}/usr/lib")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib -L${TARGET_SYSROOT}/usr/lib")
set(QT_COMPILER_FLAGS          "-march=armv8-a -mtune=cortex-a53")
#set(QT_COMPILER_FLAGS_RELEASE  "-O2 -pipe")
set(QT_COMPILER_FLAGS_RELEASE  "-O3")
set(QT_LINKER_FLAGS            "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_THREAD_LIBS_INIT "-lrt -lpthread -ldl")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
set(THREADS_PREFER_PTHREAD_FLAG ON)
</syntaxhighlight>
<br>
===== Qt Baseのビルド =====
===== Qt Baseのビルド =====
Qtをビルドするため、ビルド用のディレクトリを作成する。<br>
Qtをビルドするため、ビルド用のディレクトリを作成する。<br>
  mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build
  mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build
<br>
<br>
Configureスクリプトを実行する。<br>
CMakeファイルを実行する。<br>
  export PATH="/<Wayland Scannerのインストールディレクトリ>/bin:$PATH"
  # Set PinePhone's system root.
  export LD_LIBRARY_PATH="/<Wayland Scannerのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
  MANJARO_SYSROOT="<PinePhoneのシステムルートディレクトリ>"
   
   
  export PKG_CONFIG_PATH="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig"
  export PATH="<ホスト向けQt 6がインストールされたディレクトリ>/bin:$PATH"
  export PKG_CONFIG_LIBDIR="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig:/<SysRootがあるディレクトリ>/usr/share/pkgconfig"
  export LD_LIBRARY_PATH="<ホスト向けQt 6がインストールされたディレクトリ>/lib:$LD_LIBRARY_PATH"
   
   
# コンパイラの設定
  export PKG_CONFIG_PATH=<PinePhoneのシステムルートディレクトリ>/usr/lib/pkgconfig
  export COMPILER="/<GCC ARMツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-"
  export PKG_CONFIG_LIBDIR=<PinePhoneのシステムルートディレクトリ>/usr/lib/pkgconfig:<PinePhoneのシステムルートディレクトリ>/usr/share/pkgconfig
  # または
# export COMPILER="/<GCC ARMツールチェーンのインストールディレクトリ>/bin/aarch64-unknown-linux-gnu-"
   
   
  ../<Qtのソースコードがあるディレクトリ>/configure -v
# Compile Qt 6 for PinePhone
-release \
cmake -GNinja \
  -opensource \
  ../qt-everywhere-src-6.x.x  \
  -confirm-license \
  -DCMAKE_BUILD_TYPE=Release          \
  -opengl es2 \
  -DQT_FEATURE_eglfs_egldevice=ON    \
  -qpa wayland \
  -DQT_FEATURE_eglfs_gbm=ON          \
  -device linux-pinephone-g++ \
  -DQT_BUILD_TOOLS_WHEN_CROSSCOMPILING=ON \
  -device-option CROSS_COMPILE=$COMPILER \
  -DQT_BUILD_EXAMPLES=OFF \
  -nomake examples -no-compile-examples -nomake tests -make libs -no-use-gold-linker -recheck-all \
  -DQT_BUILD_TESTS=OFF    \
  -skip qtscript -skip qtwebengine -skip qtandroidextras -skip qtmacextras -skip qtwinextras \
  -DBUILD_qtdoc=OFF      \
  -skip qtgamepad -skip qtpurchasing -skip qtcharts -skip qtsensors \   (不要な場合)
  -DBUILD_qtwebengine=OFF \
  -skip qtlocation -skip qtspeech -skip qtlottie \                     (不要な場合)
  -DBUILD_qtwebview=OFF  \
  -skip qtdoc \
  -DQT_HOST_PATH=<ホスト向けQt 6がインストールされたディレクトリ>          \
  -sysroot /<SysRootが存在するディレクトリ>/sysroot \
  -DCMAKE_STAGING_PREFIX=<ターゲット向けQt 6をインストールするディレクトリ> \
  -prefix /<Qtソフトウェアを配置するディレクトリ>/QtSoftware \
  -DCMAKE_INSTALL_PREFIX=<おそらく使用しない>                       \
  -extprefix /<PinePhoneにインストールするQtライブラリを配置するディレクトリ>/Target \
  -DCMAKE_PREFIX_PATH=<PinePhoneのシステムルートディレクトリ>//usr/lib/                        \
  -hostprefix /<Linux PCで使用するQtツールを配置するディレクトリ>/Host
  -DCMAKE_TOOLCHAIN_FILE=<ターゲット向けQt 6ライブラリのビルドで使用するCMakeツールチェーンファイルのパス> \
  -DQT_QMAKE_TARGET_MKSPEC=<Qt向けPinePhoneのデバイスファイル  例: devices/linux-pinephone-g++>
<br>
<br>
Qtをビルドおよびインストールする。<br>
Qtをビルドおよびインストールする。<br>
  gmake -j $(nproc)
  cmake --build . --parallel $(nproc)
  gmake install
  cmake --install .
<br>
<br><br>


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