Construire Qt pour la carte Qualcomm Snapdragon 8155P sur Ubuntu
L'installation des environnements de développement Green Hills INTEGRITY et Qualcomm est nécessaire avant de procéder. Voir Installation des dépendances de la plate-forme.
Création d'un script shell de définition de l'environnement
Pour configurer l'environnement de développement de Qt pour INTEGRITY, compiler Qt à partir des sources de la carte Qualcomm Snapdragon 8155P. Avant de construire Qt pour INTEGRITY, configurer l'environnement de construction. Voici un script batch pour automatiser cela, car cela doit être fait avant chaque compilation.
Créez un nouveau script shell setEnvironment.sh, et enregistrez-le dans votre dossier personnel. Ajoutez les commandes d'exportation suivantes au script :
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/
Ces chemins d'exportation supposent que vous avez utilisé les répertoires d'installation /work/ghs/* lors de l'installation de l'EDI MULTI et d'INTEGRITY (voir Installation des dépendances de la plate-forme). Si vous n'avez pas utilisé les répertoires par défaut, adaptez les chemins d'exportation en conséquence.
Pour initialiser votre environnement de construction, exécutez la commande suivante dans un terminal :
source ~/setEnvironment.sh
Note : Exécutez cette commande dans votre terminal chaque fois que vous compilez Qt XML, ou que vous utilisez les systèmes de compilation qmake ou CMake.
Obtenir les sources de Qt
Vous pouvez télécharger le code source de Qt à partir de votre compte Qt.
Vous pouvez également obtenir les sources de Qt à partir du repo Git, voir Obtenir le code source.
Note : La version des sources de Qt doit être 6.2 ou plus récente.
Note : Les modules Qt supportés par Qt for INTEGRITY sont listés dans Modules Qt supportés.
Construction de Qt Desktop pour l'utilisation d'outils de compilation croisée
La compilation croisée de Qt nécessite la disponibilité d'une version hôte de Qt. Pendant la compilation, des outils tels que moc, rcc, qmlcachegen, qsb, et d'autres, sont invoqués à partir de là. Pour des informations plus détaillées, veuillez lire Cross-compiling Qt.
Exécutez les commandes suivantes :
mkdir hostbuild cd hostbuild/ ../qt5/configure -nomake tests -nomake examples -release -prefix /work/ghs/hostbuild cmake --build . --parallel 6 cmake --install .
Remarque : configure utilise toujours le générateur et l'outil de construction Ninja si un exécutable ninja est disponible. Ninja est multiplateforme, riche en fonctionnalités, performant et recommandé sur toutes les plateformes. L'utilisation d'autres générateurs peut fonctionner mais n'est pas officiellement supportée.
Création d'un fichier de chaîne d'outils pour INTEGRITY
Pour compiler un projet avec CMake, il faut spécifier un fichier de chaîne d'outils. Ce fichier de langage CMake définit les valeurs correctes pour le nom de la plate-forme, le compilateur/linker utilisé, et tout un tas d'autres choses spécifiques à la chaîne d'outils. Pour Integrity build sur Ubuntu, créez un fichier toolchain.cmake avec le contenu suivant :
# 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})Configurer Qt pour INTEGRITY
Configurez Qt pour la carte Qualcomm Snapdragon 8155P en utilisant les commandes suivantes :
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
Remarque : INTEGRITY ne prend en charge que les constructions statiques de Qt.
Note : QT_HOST_PATH variable introduite dans Qt 6. Lors de la compilation croisée, cette variable doit être définie à l'emplacement d'installation de Qt Location pour la plate-forme hôte. Elle est utilisée pour localiser les outils à exécuter sur l'hôte (moc, rcc, androiddeployqt, etc.).
Construire Qt pour INTEGRITY
Construisez Qt en appelant cmake dans le terminal. Vous pouvez exécuter cmake avec autant de cœurs que vous le souhaitez sur votre machine hôte. Dans notre exemple, nous utilisons six cœurs :
cmake --build . --parallel 6
Installation de Qt
Si vous n'avez pas utilisé l'option configure -prefix $PWD/qtbase dans Configuration de Qt, exécutez les commandes suivantes dans un terminal :
cd <Qt installation directory> cmake --install .
Si vous avez utilisé l'option configure -prefix $PWD/qtbase, vous pouvez utiliser Qt XML à partir du répertoire de construction, sans exécuter la commande cmake install.
Qt est maintenant configuré et construit pour la carte sa8155.
© 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.