Construir Qt para la placa Qualcomm Snapdragon 8155P en Ubuntu
Es necesario tener configurados los entornos de desarrollo de Green Hills INTEGRITY y Qualcomm antes de continuar. Ver Instalación de dependencias de plataforma.
Creación de un script de shell de entorno establecido
Para configurar el entorno de desarrollo de Qt para INTEGRITY, compile Qt a partir de las fuentes para la placa Qualcomm Snapdragon 8155P. Antes de compilar Qt for INTEGRITY, configura el entorno de compilación. Aquí un script por lotes para automatizar eso, ya que debe hacerse antes de cada compilación.
Crea un nuevo shell script setEnvironment.sh, y guárdalo en tu carpeta home. Añada los siguientes comandos de exportación a la secuencia de comandos:
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/
Estas rutas de exportación suponen que ha utilizado los directorios de instalación de /work/ghs/* al instalar MULTI IDE e INTEGRITY (consulte Instalación de las dependencias de la plataforma). Si no ha utilizado los directorios por defecto, ajuste las rutas de exportación en consecuencia.
Para inicializar su entorno de compilación, ejecute el siguiente comando en un terminal:
source ~/setEnvironment.sh
Nota: Ejecute este comando en su terminal cada vez que compile Qt, o utilice los sistemas de compilación qmake o CMake.
Obtener los fuentes de Qt
Puedes descargar el código fuente de Qt desde tu cuenta Qt.
También puede obtener las fuentes de Qt desde el repositorio Git, consulte Obtención del código fuente.
Nota: La versión del código fuente de Qt debe ser 6.2 o posterior.
Nota: Los módulos Qt soportados por Qt for INTEGRITY están listados en Módulos Qt soportados.
Construcción de Qt Desktop para el uso de herramientas de compilación cruzada
La compilación cruzada de Qt requiere que haya una compilación de Qt disponible. Durante la compilación, herramientas como moc, rcc, qmlcachegen, qsb, y otras, son invocadas desde allí. Para información más detallada, por favor lea Cross-compiling Qt.
Ejecute los siguientes comandos:
mkdir hostbuild cd hostbuild/ ../qt5/configure -nomake tests -nomake examples -release -prefix /work/ghs/hostbuild cmake --build . --parallel 6 cmake --install .
Nota: configure siempre utiliza el generador Ninja y la herramienta de compilación si un ejecutable ninja está disponible. Ninja es multiplataforma, rico en funciones, eficaz y recomendado en todas las plataformas. El uso de otros generadores puede funcionar pero no está soportado oficialmente.
Creación de un archivo de cadena de herramientas para INTEGRITY
Para realizar la compilación cruzada de un proyecto con CMake, se debe especificar un archivo toolchain. Este archivo de lenguaje CMake establece los valores correctos para el nombre de la plataforma, el compilador/enlazador utilizado, y un montón de otras cosas específicas de la cadena de herramientas. Para la construcción de la integridad en Ubuntu crear un archivo toolchain.cmake con el contenido:
# 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})Configurando Qt para INTEGRITY
Configure Qt para la placa Qualcomm Snapdragon 8155P utilizando los siguientes comandos:
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
Nota: INTEGRITY sólo admite compilaciones estáticas de Qt.
Nota: QT_HOST_PATH variable introducida en Qt 6. Al realizar la compilación cruzada, debe establecerse en la ubicación de instalación de Qt para la plataforma host. Se utiliza para localizar las herramientas que deben ejecutarse en el host (moc, rcc, androiddeployqt, etc.).
Construir Qt para INTEGRITY
Construye Qt llamando a cmake en el terminal. Puedes ejecutar cmake con tantos núcleos en tu máquina anfitriona como desees. En nuestro ejemplo utilizamos seis núcleos:
cmake --build . --parallel 6
Instalación de Qt
Si no ha utilizado la opción configure -prefix $PWD/qtbase en Configuring Qt, ejecute los siguientes comandos en un terminal:
cd <Qt installation directory> cmake --install .
Si ha utilizado la opción configure -prefix $PWD/qtbase, puede utilizar Qt desde el directorio build, sin ejecutar el comando cmake install.
Qt está ahora configurado y construido para la placa 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.