Ubuntu上でQualcomm Snapdragon 8155Pボード向けのQtをビルドする
作業を進めるには、Green Hills INTEGRITY および Qualcomm の開発環境がセットアップされている必要があります。「プラットフォーム依存関係のインストール」を参照してください。
環境設定用シェルスクリプトの作成
Qt for INTEGRITY の開発環境をセットアップするには、Qualcomm Snapdragon 8155P ボード用のソースから Qt をビルドします。Qt for INTEGRITY をビルドする前に、ビルド環境をセットアップしてください。これは各ビルドの前に実行する必要があるため、その作業を自動化するバッチスクリプトを以下に示します。
新しいシェルスクリプト「setEnvironment.sh」を作成し、ホームディレクトリに保存します。スクリプトに以下のexportコマンドを追加してください:
export PATH=$PATH:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/comp
export INTEGRITY_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/integrity
export INTEGRITY_BSP=platform-sa8155
export INTEGRITY_BUILD_TARGET=chk
export QC_MULTIMEDIA_INC_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/include/amss/multimedia
export GL_INC_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public
export GL_LIB_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/base:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/display:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/graphics:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/platform/:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt/これらのエクスポートパスは、MULTI IDE および INTEGRITY のインストール時に、/work/ghs/* のインストールディレクトリを使用していることを前提としています(「プラットフォーム依存関係のインストール」を参照)。デフォルトのディレクトリを使用していない場合は、エクスポートパスを適宜調整してください。
ビルド環境を初期化するには、ターミナルで次のコマンドを実行してください:
source ~/setEnvironment.sh注: Qtをビルドするたびに、またはqmake やCMake のビルドシステムを使用するたびに、ターミナルでこのコマンドを実行してください 。
Qtのソースコードの入手
Qt ソースコードは、Qt アカウントからダウンロードできます。
また、GitリポジトリからQtのソースコードを取得することもできます。「ソースコードの入手」を参照してください。
注:Qtの ソースコードのバージョンは6.2以降である必要があります。
注: Qt for INTEGRITY でサポートされているQt モジュールは、「サポートされている Qt モジュール」に記載されています。
クロスコンパイルツールの使用に向けた Qt Desktop のビルド
Qtのクロスコンパイルを行うには、ホスト環境でのQtのビルド環境が用意されている必要があります。ビルド中は、moc、rcc、qmlcachegen、qsbなどのツールがそこから呼び出されます。詳細については、「Qtのクロスコンパイル」をご覧ください。
以下のコマンドを実行してください:
mkdir hostbuild
cd hostbuild/
../qt5/configure -nomake tests -nomake examples -release -prefix /work/ghs/hostbuild
cmake --build . --parallel 6
cmake --install .注: ninja 実行ファイルが存在する場合、configureは 常にNinjaジェネレータおよびビルドツールを使用します。Ninjaはクロスプラットフォーム対応で、機能が豊富かつ高性能であり、すべてのプラットフォームで推奨されています。他のジェネレータを使用しても動作する可能性はありますが、公式にはサポートされていません。
INTEGRITY用のツールチェーンファイルの作成
CMake を使用してプロジェクトをクロスコンパイルするには、ツールチェーンファイルを指定する必要があります。この CMake 言語のファイルでは、プラットフォーム名、使用するコンパイラ/リンカ、およびその他多くのツールチェーン固有の設定について、適切な値が設定されます。Ubuntu 上で Integrity をビルドするには、以下の内容の toolchain.cmake ファイルを作成してください:
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
set(TARGET_ROOT_PATH "/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot")
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_C_COMPILER cxintarm64)
set(CMAKE_CXX_COMPILER cxintarm64)
set(CMAKE_ASM_COMPILER cxintarm64)
#generic
set(CMAKE_SYSTEM_NAME Integrity)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_CROSSCOMPILING True)
set(EGL_FOUND True)
set(UNIX True)
set (CMAKE_C_COMPILE_FEATURES c_std_99)
set (CMAKE_CXX_COMPILE_FEATURES
cxx_alias_templates
cxx_alignas
cxx_alignof
cxx_attributes
cxx_auto_type
cxx_constexp
cxx_decltype
cxx_delegating_constructors
cxx_explicit_conversions
cxx_extern_templates
cxx_inheriting_constructors
cxx_lambdas
cxx_noexcept
cxx_nonstatic_member_init
cxx_nullptr
cxx_override
cxx_range_for
cxx_raw_string_literals
cxx_reference_qualified_functions
cxx_rvalue_references
cxx_static_assert
cxx_std_17
cxx_thread_local
cxx_unicode_literals
cxx_uniform_initialization
cxx_unrestricted_unions
cxx_variadic_macros
cxx_variadic_templates)
#graphical lib paths
set(EGL_LIBRARY_GRAPHIC_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics)
set(EGL_LIBRARY_PLATFORM_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform)
set(EGL_LIBRARY_BASE_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base)
set(EGL_LIBRARY_CHK_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/integrity/libs/arm64/chk)
set(EGL_LIBRARY_PREBUILD_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt)
set(EGL_LIBRARY_OPENWFD_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/display)
#base
set(CMAKE_C_FLAGS "-bsp $ENV{INTEGRITY_BSP} -os_dir $ENV{INTEGRITY_DIR} -non_shared -startfile_dir=$ENV{INTEGRITY_DIR}/libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/arm64/$ENV{INTEGRITY_BUILD_TARGET} -bigswitch -DINTEGRITY -llibposix.a")
set(CMAKE_C_FLAGS_DEBUG "-g -Omaxdebug")
set(CMAKE_C_FLAGS_RELEASE "-Ospeed -Olink -Omax -no_uvfd")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --signed_fields --diag_suppress=1,82,228,236,381,611,961,997,1795,1931,1974,3148 --c++17 --thread_local_storage --exceptions --defer_parse_function_templates")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -frigor=accurate --signed_fields --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor --commons -I $ENV{QC_MULTIMEDIA_INC_DIR}")
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set(BUILD_SHARED_LIBS OFF)
set(QT_CFLAGS_OPTIMIZE_FULL "-Ospeed -Olink -Omax -no_uvfd")
set(GLSLANG_OSDEP_PATH ../3rdparty/glslang/glslang/OSDependent/Unix)
set(GL_INC_DIR ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public)
set(PKG_EGL_LIBRARY_DIRS ${TARGET_ROOT_PATH})
set(EGL_INCLUDE_DIR ${GL_INC_DIR})
set(EGL_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libESXEGL_Adreno.a")
set(GLESv2_INCLUDE_DIR ${GL_INC_DIR})
set(GLESv2_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libESXGLESv2_Adreno.a")
set(IntegrityPlatformGraphics_INCLUDE_DIR ${GL_INC_DIR})
set(IntegrityPlatformGraphics_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libadreno_utils.a")
set(IntegrityPlatformGraphics_LIBRARIES_PACK
"${EGL_LIBRARY_BASE_PATH}/libplanedef.a"
"${EGL_LIBRARY_BASE_PATH}/libmmosalfile.a"
"${EGL_LIBRARY_BASE_PATH}/libOSAbstraction.a"
"${EGL_LIBRARY_OPENWFD_PATH}/libopenwfd.a"
"${EGL_LIBRARY_GRAPHIC_PATH}/libOSUser.a"
"${EGL_LIBRARY_GRAPHIC_PATH}/libpanel.a"
"${EGL_LIBRARY_GRAPHIC_PATH}/libGSLUser.a"
"${EGL_LIBRARY_PREBUILD_PATH}/libglnext-llvm.a"
"${EGL_LIBRARY_PLATFORM_PATH}/libpmem.a"
"${EGL_LIBRARY_CHK_PATH}/libposix.a"
"${EGL_LIBRARY_CHK_PATH}/libivfs.a"
)
list(APPEND _qt_igy_gui_libs
"${GLESv2_LIBRARY}"
"${IntegrityPlatformGraphics_LIBRARY}"
"${IntegrityPlatformGraphics_LIBRARIES_PACK}")
set(OPENGL_INCLUDE_DIR ${GL_INC_DIR})
set(OPENGL_opengl_LIBRARY ${EGL_LIBRARY})INTEGRITY 向けの Qt の設定
以下のコマンドを使用して、Qualcomm Snapdragon 8155Pボード向けにQtを設定します:
cd /work/ghs/targetbuild // Path to Qt installation directory
cmake ../qt5/ -DQT_HOST_PATH=/work/ghs/hostbuild/qtbase
-DCMAKE_TOOLCHAIN_FILE=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/toolchain_integrity.cmake
-DQT_QMAKE_TARGET_MKSPEC=devices/integrity-armv8-SA8155P -DBUILD_qtdoc=OFF
-DBUILD_qttranslations=OFF -DFEATURE_printdialog=OFF --debug-trycompile -DFEATURE_dbus=OFF
-GNinja -DUNIX=ON
-DEGL_LIBRARY=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a
-DEGL_INCLUDE_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public
-DFEATURE_dnslookup=OFF -DFEATURE_glib=OFF -DFEATURE_libudev=OFF -DFEATURE_system_pcre2=OFF -DFEATURE_sql_mysql=OFF
-DCMAKE_INSTALL_PREFIX=/work/ghs/targetbuild注:INTEGRITYでは 、静的Qtビルドのみをサポートしています。
注: QT_HOST_PATH 変数はQt 6で導入されました。クロスコンパイルを行う場合、この変数はホストプラットフォーム用のQtのインストール先に設定する必要があります。これは、ホスト上で実行されるツール(moc、rcc、androiddeployqtなど)の場所を特定するために使用されます。
INTEGRITY 用の Qt のビルド
ターミナルで `cmake ` を実行して Qt をビルドします。cmake を実行する際、ホストマシンのコア数を任意の数に指定できます。この例では 6 コアを使用します:
cmake --build . --parallel 6Qtのインストール
「Qt XML の設定」で configure オプション `-prefix $PWD/qtbase ` を使用していない場合は、ターミナルで以下のコマンドを実行してください:
cd <Qt installation directory>
cmake --install .もし「-prefix $PWD/qtbase 」という configure オプションを使用している場合は、cmake install コマンドを実行しなくても、ビルドディレクトリから Qt を使用できます。
これで、sa8155ボード向けにQtの設定とビルドが完了しました。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.