VxWorks용 Qt
자세한 정보는 The Qt Company에 문의하십시오: https://www.qt.io/contact-us/
VxWorks용 Qt 라이선스
Qt for VxWorks는 Qt for Device Creation Professional(DCP) 라이선스에 따라 제공됩니다. 자세한 내용은 Qt 가격 정책을 참조하십시오.
지원되는 아키텍처 및 VxWorks 릴리스
Qt 6.10은 VxWorks 25.03에서 검증되었습니다.
지원되는 아키텍처:
- ARM-v7—BD-SL-i.MX6에서 테스트 완료. 사용된 BSP: fsl_imx6
- x86_64—Intel NUC6i3SYH에서 테스트되었습니다. 사용된 BSP: itl_generic
향후 Qt 릴리스에 관심이 있으시면 Qt 프로페셔널 서비스에 문의해 주십시오.
VxWorks 요구 사항
Qt Widgets 애플리케이션
- POSIX 지원
- C++17 지원
Qt Quick 2. 응용 프로그램
Qt Widgets 애플리케이션에 필요한 모든 기능과 더불어 다음 기능이 추가로 제공됩니다:
- OpenGL ES 2.0용 GPU 장치(GPUDEV)
지원되는 모듈
가장 필수적인 Qt 모듈 과 일부 추가 모듈이 지원됩니다.
지원되는 필수 모듈
| Qt 모듈 | 참고 사항 |
|---|---|
| Qt Core | QProcess 은 지원되지 않습니다. QLocalSocket 및 QLocalServer 은 SOCK_SEQPACKET만 지원합니다. |
| Qt GUI | 해당 없음 |
| Qt Network | 해당 사항 없음 |
| Qt Qml | 해당 사항 없음 |
| Qt Quick | 해당 사항 없음 |
| Qt Quick Controls | 해당 없음 |
| Qt Quick Dialogs | 해당 사항 없음 |
| Qt Quick Layouts | 해당 사항 없음 |
| Qt Quick Test | 해당 사항 없음 |
| Qt Test | 해당 사항 없음 |
| Qt Widgets | 해당 사항 없음 |
지원되는 애드온
| Qt 애드온 |
|---|
| Qt Concurrent |
| Qt GRPC/Protobuf |
| Qt Graphs |
| Qt Image Formats |
| Qt Multimedia |
| Qt 네이티브 인터페이스 |
| Qt OpenGL |
| Qt Quick 3D |
| Qt Quick Compiler |
| Qt Quick Effects |
| Qt SQL |
| Qt SVG |
| Qt Virtual Keyboard |
참고: configure 도구를 실행할 때 -skip <module> 옵션을 사용하여 지원되지 않거나 사용되지 않는 모듈을 빌드에서 명시적으로 제외할 수있습니다 .
플랫폼 관련 참고 사항
Qt는 RTP 애플리케이션에서 사용될 수 있도록 준비되어 있으며, DKM은 지원되지 않습니다.
Qt 5.0의 출시와 함께, Qt에는 더 이상 자체 윈도우 시스템 구현이 포함되어 있지 않습니다. QWS는 더 이상 지원되는 플랫폼이 아닙니다. 단일 프로세스 사용 사례의 경우, Qt 플랫폼 추상화( Qt Platform Abstraction )가 더 우수한 솔루션입니다.
VxWorks에서 사용할 수 있는 플러그인이 하나 있습니다: EGLFS입니다. 이 플러그인의 사용 가능 여부는 Qt의 구성에 따라 달라집니다.
특정 장치에 대한 구성
VxWorks SDK를 설치하고, 설치 프로그램 및 VxWorks 이미지 빌드에 필요한 WindRiver 라이선스를 확보하여 환경을 준비하십시오. {https://gallery.windriver.com/portal/products}에서 적절한 설치 프로그램을 찾아보십시오.
특정 디바이스용 Qt를 빌드하려면 컴파일 호스트에 Qt 6이 설치되어 있어야 하며, 툴체인 및 sysroot가 필요합니다. 자세한 내용은 ‘Qt 크로스 컴파일’을 참조하십시오. 또한 일부 디바이스의 경우 EGL 및 OpenGL 2.0 지원을 위해 벤더별 조정 코드가 필요합니다.
VxWorks 이미지 요구 사항
VxWorks용 Qt가 정상적으로 컴파일되고 작동하려면 특정 VxWorks 이미지 번들 및 구성 요소가 기본 소프트웨어에 포함되어야 합니다. 이 목록은 프로젝트의 하드웨어, 소프트웨어 및 시스템 요구 사항에 따라 달라지므로 결코 완전한 것은 아닙니다. 그러나 다음 표에는 특정 기능(터치스크린 지원 포함)이 작동하기 위해 필수적인 항목들이 포함되어 있습니다. 또한 이러한 요구 사항은 VxWorks 버전에 따라 변경될 수 있다는 점에 유의하십시오.
fsl_imx6 및 itl_generic BSP용 VSB 구성 예시
Qt가 정상적으로 작동하려면 VSB에 다음 기능을 추가해야 합니다. 자세한 내용은 WindRiver VxWorks 문서를 참조하십시오.
| 기능 | 비고 |
|---|---|
DSI_DSI_KERNEL | 해당 없음 |
IPNET_COREIP | 해당 없음 |
IPNET_DHCPC | 해당 없음 |
SDMMC_DEVICE | 해당 없음 |
SDMMC_HOST | 해당 사항 없음 |
SDMMC_SDHC | 해당 사항 없음 |
SDMMC_STORAGE | 해당 사항 없음 |
SERVICE_UN | 해당 사항 없음 |
SOCKET | 해당 사항 없음 |
USB_EHCI | 해당 사항 없음 |
USB_KEYBOARD | 해당 사항 없음 |
USB_MOUSE | 해당 사항 없음 |
USB_STORAGE | 해당 사항 없음 |
USB_TOUCHSCREEN | 해당 사항 없음 |
EVDEV | 해당 사항 없음 |
EVDEV_LIB | 해당 사항 없음 |
EVDEV_TI_TSC2004_TS | 해당 사항 없음 |
EVDEV_EETI_EXC7200_TS | 해당 없음 |
AUDIO | 해당 사항 없음 |
GPUDEV_FSLVIVGPU | fsl_imx6 전용 |
HASH | 해당 없음 |
OPENSSL | 해당 없음 |
RANDOM_ENTROPY_INJECT | 해당 없음 |
IPNET_SSH | 해당 없음 |
USER_MANAGEMENT | 해당 없음 |
ICU | 해당 없음 |
DRM | itl_generic specific |
ITLI915 | itl_generic specific |
LIBDRM | itl_generic 전용 |
MESA | itl_generic 및 nxp_imx8 전용 |
다음 구성 변수들은 암시적으로 추가되므로 이를 제거해야 합니다:
| 변수 | 참고 |
|---|---|
_WRS_CONFIG_EVDEV_OPTIMIZED_MODE | 해당 없음 |
_WRS_CONFIG_EVDEV_DISPLAY_POINT_TRANSLATE | 해당 없음 |
_WRS_CONFIG_MESA_MANGLE | itl_generic specific |
구성 파일에 다음 변수들을 추가해야 합니다:
| 변수 | 값 | 비고 |
|---|---|---|
_WRS_CONFIG_RTP_SSP | y | 해당 없음 |
_WRS_CONFIG_RTP_STACK_PROTECTOR | y | 해당 없음 |
_WRS_CONFIG_MESA_GPUDEV_INTEL_GEN90 | y | itl_generic 전용 |
_WRS_CONFIG_EVDEV_COMPATIBLE_MODE | y | Qt가 터치스크린에서 제대로 작동하기 위해 필요합니다. |
fsl_imx6 및 itl_generic BSP용 VIP 구성 예시
자세한 내용은 WindRiver VxWorks 문서를 참조하십시오.
| 번들 | 참고 사항 |
|---|---|
BUNDLE_POSIX | 이 번들은 Qt에서 요구하는 POSIX 관련 기능과의 호환성을 위해 필요합니다. |
BUNDLE_RTP_DEPLOY | 해당 사항 없음 |
BUNDLE_RTP_DEVELOP | 해당 없음 |
BUNDLE_STANDALONE_SHELL | 해당 사항 없음 |
| 구성 요소 | 참고 |
|---|---|
INCLUDE_TMP_DIR INCLUDE_RAM_DISK_FORMAT_HRFS | QTemporaryFile 를 사용하려면 이 두 구성 요소를 포함해야 합니다. 또한 TMP_DIR_SIZE 를 적절한 값으로 설정하는 것도 고려해야 합니다. |
DRV_AUDIO_FSL_SSI | 해당 사항 없음 |
DRV_AUDIO_FSL_SGTL5000 | 해당 사항 없음 |
DRV_FSL_SDHC_CTRL | 해당 사항 없음 |
DRV_IMX_SDHC_CTRL | 해당 사항 없음 |
INCLUDE_EHCI_INIT | 해당 사항 없음 |
INCLUDE_FSL_IMX6Q_SABRELITE | 해당 사항 없음 |
DRV_MMCSTORAGE_CARD | 해당 사항 없음 |
DRV_SDSTORAGE_CARD | 해당 사항 없음 |
INCLUDE_AUDIO_LIB_CORE | 해당 사항 없음 |
INCLUDE_AUDIO_LIB_WAV | 해당 사항 없음 |
INCLUDE_CUSTOM_ENTROPY_ADD | 해당 사항 없음 |
INCLUDE_DEBUG_AGENT_START | 해당 사항 없음 |
INCLUDE_DEFAULT_TIMEZONE | 해당 사항 없음 |
INCLUDE_DISK_UTIL | 해당 사항 없음 |
INCLUDE_DOSFS | 해당 사항 없음 |
INCLUDE_DSAPARAM_CMD | 해당 사항 없음 |
INCLUDE_END | 해당 사항 없음 |
INCLUDE_EVDEV_LIB_CORE | 해당 사항 없음 |
INCLUDE_EVDEV_LIB_KBD | 해당 사항 없음 |
INCLUDE_EVDEV_LIB_KBD_MAP_US | 해당 사항 없음 |
INCLUDE_EVDEV_LIB_PTR | 해당 없음 |
INCLUDE_EVDEV_LIB_TS | 해당 사항 없음 |
INCLUDE_GENDSA_CMD | 해당 사항 없음 |
INCLUDE_GENRSA_CMD | 해당 사항 없음 |
INCLUDE_GETADDRINFO | 해당 없음 |
INCLUDE_GETNAMEINFO | 해당 사항 없음 |
INCLUDE_HRFS | 해당 사항 없음 |
INCLUDE_HRFS_ACCESS_TIMESTAMP | 해당 사항 없음 |
INCLUDE_HRFS_FORMAT | 해당 사항 없음 |
INCLUDE_HRFS_HISPEED_WRITE_MODE | 해당 사항 없음 |
INCLUDE_IFCONFIG | 해당 사항 없음 |
INCLUDE_IO_REALPATH | 이 구성 요소는 다음을 위해 필요한 realpath 함수의 사용을 활성화하는 데 필요합니다. QFileInfo |
INCLUDE_IPATTACH | 해당 사항 없음 |
INCLUDE_IPCOM_SYSLOGD_CMD | 해당 사항 없음 |
INCLUDE_IPCOM_SYSVAR_CMD | 해당 사항 없음 |
INCLUDE_IPCOM_USE_RAM_DISK | 해당 사항 없음 |
INCLUDE_IPCOM_USE_TIME_CMD | 해당 사항 없음 |
INCLUDE_IPDHCPC | 해당 사항 없음 |
INCLUDE_IPDNSC | 해당 사항 없음 |
INCLUDE_IPD_CMD | 해당 사항 없음 |
INCLUDE_IPFTPC | 해당 사항 없음 |
INCLUDE_IPFTP_CMD | 해당 사항 없음 |
INCLUDE_IPIFCONFIG_CMD | 해당 사항 없음 |
INCLUDE_IPNETSTAT_CMD | 해당 사항 없음 |
INCLUDE_IPNSLOOKUP_CMD | 해당 사항 없음 |
INCLUDE_IPPING_CMD | 해당 사항 없음 |
INCLUDE_IPROUTE_CMD | 해당 없음 |
INCLUDE_IPTRACE_ROUTE_CMD | 해당 사항 없음 |
INCLUDE_IPWRAP_GETHOSTBYADDR | 해당 사항 없음 |
INCLUDE_IPWRAP_GETHOSTBYNAME | 해당 사항 없음 |
INCLUDE_IPWRAP_GETNAMEINFO | 해당 사항 없음 |
INCLUDE_IPWRAP_IFNAME | 해당 사항 없음 |
INCLUDE_IPWRAP_ROUTECMD | 해당 사항 없음 |
INCLUDE_MMAP | 해당 사항 없음 |
INCLUDE_PING | 해당 사항 없음 |
INCLUDE_PIPES | 해당 사항 없음 |
INCLUDE_POSIX_MAPPED_FILES | 해당 사항 없음 |
INCLUDE_POSIX_PIPES | 해당 사항 없음 |
INCLUDE_POSIX_PTHREAD_SCHEDULER | 해당 사항 없음 |
INCLUDE_POSIX_SHM | 해당 사항 없음 |
INCLUDE_RAM_DISK | 해당 사항 없음 |
INCLUDE_RAM_DISK_FORMAT_HRFS | 해당 사항 없음 |
INCLUDE_RANDOM_NUM_GEN | 해당 사항 없음 |
INCLUDE_ROMFS | 해당 사항 없음 |
INCLUDE_ROUTECMD | 해당 사항 없음 |
INCLUDE_SC_PIPE | 해당 사항 없음 |
INCLUDE_SC_POSIX_PIPE | 해당 사항 없음 |
INCLUDE_SD_BUS | 해당 사항 없음 |
INCLUDE_SECURITY | 해당 사항 없음 |
INCLUDE_SEC_KEY_STORE_CMD | 해당 사항 없음 |
INCLUDE_SHELL | 해당 사항 없음 |
INCLUDE_SSH | 해당 사항 없음 |
INCLUDE_STANDALONE_SYM_TBL | 해당 사항 없음 |
INCLUDE_STARTUP_SCRIPT | 해당 사항 없음 |
INCLUDE_TMP_DIR | 해당 사항 없음 |
INCLUDE_UN_COMP | 해당 사항 없음 |
INCLUDE_USB_GEN2_KEYBOARD | 해당 사항 없음 |
INCLUDE_USB_GEN2_MOUSE | 해당 사항 없음 |
INCLUDE_USB_GEN2_STORAGE_INIT | 해당 사항 없음 |
INCLUDE_USB_TOUCH_SCREEN | 해당 사항 없음 |
INCLUDE_USB_TOUCH_SCREEN_INIT | 해당 사항 없음 |
INCLUDE_USER_DATABASE | 해당 사항 없음 |
INCLUDE_USER_IDENTIFICATION | 해당 사항 없음 |
INCLUDE_VRFS | 해당 사항 없음 |
INCLUDE_VXBUS_SHOW | 해당 사항 없음 |
DRV_TOUCH_SCREEN_TI_TSC2004 | 해당 사항 없음 |
DRV_TOUCH_SCREEN_EETI_EXC7200 | 해당 사항 없음 |
INCLUDE_FBDEV_FSLIPU_0 | fsl_imx6 전용 |
INCLUDE_FBDEV_SPLASH | 해당 없음 |
INCLUDE_GPUDEV_FSLVIV_API | fsl_imx6 전용 |
INCLUDE_GPUDEV_FSLVIV_API_INIT | fsl_imx6 전용 |
INCLUDE_GPUDEV_ITLGMC_2 | itl_generic 전용 |
INCLUDE_I915 | itl_generic 전용 |
INCLUDE_MESA_FBDEV | itl_generic 전용 |
INCLUDE_MESA_GPUDEV_DRI | itl_generic 전용 |
INCLUDE_MESA_GPUDEV_DRI_I965 | itl_generic 전용 |
다음 구성 요소들은 암시적으로 추가되므로 이를 제거해야 합니다:
| 레이어 | 참고 |
|---|---|
INCLUDE_FTP | 해당 없음 |
INCLUDE_SHELL_SECURITY | 해당 없음 |
VIP 매개변수
VxWorks에서 Qt가 정상적으로 실행되려면 다음 매개변수를 추가해야 합니다:
| 매개변수 | 예시 값 | 비고 |
|---|---|---|
SEC_VAULT_KEY_ENCRYPTING_PW | '"vxTarget"' | 해당 없음 |
UDB_STORAGE_PATH | '"/ram/vxUserDB.txt"' | 해당 없음 |
UDB_HASH_KEY | '"123456789"' | 해당 사항 없음 |
UDB_HASH_KEY_LEN | 9 | 예시 값, 앞의 내용 참조 |
FSLVIV_RTP_COMMAND_BUFFER_QUEUE | 32 | 'arm' 아키텍처의 경우 |
SYS_CLK_RATE | 100 | 해당 사항 없음 |
RTP_PTHREAD_STACK_SIZE_DEFAULT | 262144 | qtquick3d 예제가 작동하려면 필수입니다. PTHREAD_STACK_SIZE_DEFAULT 환경 변수로 재정의할 수 있습니다. |
TMP_DIR_SIZE | 614400 | Qt Test를 통과하기 위한 최소값 |
NUM_FILES | 300 | 해당 사항 없음 |
RTP_FD_NUM_MAX | 300 | 해당 없음 |
HRFS_DEFAULT_MAX_FILES | 300 | 해당 없음 |
ITLGMC_FBDEV_RESOLUTION_2 | '"1024x768-32"' | HDMI를 통해 연결된 Xenarc 706TSA 터치스크린의 예시 값입니다. |
RTP_MEM_FILL | True | 기본값은 True 이며, Qt가 정상적으로 작동하려면 이 값을 True 로 유지해야 합니다. |
VxWorks용 Qt 6 빌드
호스트 빌드
Qt를 크로스 컴파일하려면 호스트 빌드된 Qt가 준비되어 있어야 합니다. 이는 빌드 과정에서 moc, rcc, qmlcachegen, qsb 와 같은 특정 도구들이 호스트 빌드에서 호출되기 때문입니다. 다음과 같은 옵션이 있습니다:
- 호스트용Qt 소스 빌드,
- Qt Online Installer 를 사용하여 호스트 빌드를 설치하기.
그러나 VxWorks용으로 컴파일할 때도 동일한 도구가 필요하므로, 호스트에서 데스크톱 타깃용 Qt를 빌드할 수 있도록 하는 것이 좋습니다.
Configure 스크립트 실행
호스트용 Qt 6을 구성, 빌드 및 설치하는 명령어는 다음과 같습니다:
./configure \
-cmake-generator "Ninja" \
-extprefix <path/to/Qt6/host/installation/dir> \
-submodules qtbase,qtdeclarative,qtquick3d,qtshadertools \
-nomake tests \
-nomake examples \
-- \
-B <host/build/directory>
cd <host/build/directory>
cmake --build . --parallel
cmake --install .이 명령어들은 호스트용 Qt 6을 <path_to_Qt 6_host_installation_dir> 에 설치합니다.
타깃용 Qt 6 빌드
빌드 환경 설정
configure를 실행하고 Qt 6을 빌드하기 전에, 명령 프롬프트에서 VxWorks Development Shell을 실행해야 합니다.
- Linux:
cd <VxWorks installation directory> ./wrenv.sh -p vxworks export WIND_CC_SYSROOT=<path to VxWorks VSB directory> - Windows:
cd <VxWorks installation directory> wrenv -p vxworks export WIND_CC_SYSROOT=<path to VxWorks VSB directory>
사용자 정의 CMake 툴체인 파일 준비
BSP의 그래픽 라이브러리를 포함하려면 먼저 CMake 툴체인 파일을 생성해야 합니다. BD-SL-i.MX6 디바이스용 CMake 툴체인 파일 예시:
# Copyright (C) 2024 The Qt Company Ltd.
if(QT_VXWORKS_TOOLCHAIN_FILE)
set(_original_toolchain_file "${QT_VXWORKS_TOOLCHAIN_FILE}")
elseif(DEFINED ENV{QT_VXWORKS_TOOLCHAIN_FILE})
set(_original_toolchain_file "$ENV{QT_VXWORKS_TOOLCHAIN_FILE}")
else()
message(FATAL_ERROR "QT_VXWORKS_TOOLCHAIN_FILE is not set.")
endif()
if(NOT EXISTS "${_original_toolchain_file}")
message(FATAL_ERORR "${_original_toolchain_file} doesn't exists.")
endif()
include("${_original_toolchain_file}")
unset(_original_toolchain_file)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES QT_VXWORKS_TOOLCHAIN_FILE)
set(_common_lib_path "${CMAKE_SYSROOT}/usr/lib/common")
set(EGL_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to EGL include directory" FORCE)
set(EGL_LIBRARY ${_common_lib_path}/libgfxFslVivEGL.so CACHE PATH "Path to EGL lib" FORCE)
set(GLESv2_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to GLES include directory" FORCE)
set(GLESv2_LIBRARY ${_common_lib_path}/libgfxFslVivGLESv2.so CACHE PATH "Path to GLES lib" FORCE)
set(VxWorksPlatformGraphics_DEFINES "-D_FSLVIV")
set(VxWorksPlatformGraphics_LIBRARIES_PACK
"${_common_lib_path}/libgfxFslVivEGL.so"
"${_common_lib_path}/libgfxFslVivGLESv2.so"
"${_common_lib_path}/libgfxFslVivGAL.so"
"${_common_lib_path}/libgfxFslVivGLSLC.so"
"${_common_lib_path}/libgfxFslVivVDK.so"
"${_common_lib_path}/libxml.so"
)
set(VxWorksPlatformGraphics_REQUIRED_LIBRARIES
${VxWorksPlatformGraphics_LIBRARIES_PACK}
${EGL_LIBRARY}
${GLESv2_LIBRARY}
)
unset(_common_lib_path)Intel NUC6i3SYH의 예시:
# Copyright (C) 2024 The Qt Company Ltd.
if(QT_VXWORKS_TOOLCHAIN_FILE)
set(_original_toolchain_file "${QT_VXWORKS_TOOLCHAIN_FILE}")
elseif(DEFINED ENV{QT_VXWORKS_TOOLCHAIN_FILE})
set(_original_toolchain_file "$ENV{QT_VXWORKS_TOOLCHAIN_FILE}")
else()
message(FATAL_ERROR "QT_VXWORKS_TOOLCHAIN_FILE is not set.")
endif()
if(NOT EXISTS "${_original_toolchain_file}")
message(FATAL_ERORR "${_original_toolchain_file} doesn't exists.")
endif()
include("${_original_toolchain_file}")
unset(_original_toolchain_file)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES QT_VXWORKS_TOOLCHAIN_FILE)
set(_common_lib_path "${CMAKE_SYSROOT}/usr/lib/common")
set(EGL_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to EGL include directory" FORCE)
set(EGL_LIBRARY ${_common_lib_path}/libgfxMesaEGL.so CACHE PATH "Path to EGL lib" FORCE)
set(GLESv2_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to GLES include directory" FORCE)
set(GLESv2_LIBRARY ${_common_lib_path}/libgfxMesaGL.so CACHE PATH "Path to GLES lib" FORCE)
set(VxWorksPlatformGraphics_DEFINES "-D__vxworks -D__VXWORKS")
set(VxWorksPlatformGraphics_LIBRARIES_PACK
"${_common_lib_path}/libgfxMesaEGL.so"
"${_common_lib_path}/libgfxMesaGL.so"
"${_common_lib_path}/libgfxMesaSw.so"
"${_common_lib_path}/libgfxMesa.so"
"${_common_lib_path}/libgfxMesaDriI965.so"
"${_common_lib_path}/libgfxLibDRM.so"
"${_common_lib_path}/libxml.so"
)
set(VxWorksPlatformGraphics_REQUIRED_LIBRARIES
${VxWorksPlatformGraphics_LIBRARIES_PACK}
${EGL_LIBRARY}
${GLESv2_LIBRARY}
)
unset(_common_lib_path)대상 플랫폼용 Qt 6 구성 실행
다음은 BD-SL-i.MX6에 대한 빌드 구성 예시입니다. 대부분의 VxWorks 보드에서 configure 명령어는 이와 매우 유사합니다. 기본적으로 Qt 6은 공유 라이브러리를 사용하도록 구성되어 있습니다. Qt 6을 정적 링크 방식으로 빌드하려면 configure에 ` -static ` 옵션을 추가하십시오.
{WIND_CC_SYSROOT} 환경 변수가 VxWorks VSB 루트 디렉터리로 설정되어 있는지 확인하십시오.
./configure \
-cmake-generator "Ninja" \
-icu \
-eglfs \
-qpa eglfs \
-submodules "qtbase,qtdeclarative,qtmultimedia,qtquick3d,qtgraphs,qtimageformats,qtsvg,qtshadertools,qtvirtualkeyboard" \
-- \
-B <target/build/directory> \
-DQT_VXWORKS_TOOLCHAIN_FILE=<path/to/VSB/mk/toolchain.cmake> \
-DFEATURE_vulkan=OFF \
-DQT_QMAKE_TARGET_MKSPEC=vxworks-clang \
-DQT_HOST_PATH=<path/to/Qt6/host/installation/dir> \
-DCMAKE_STAGING_PREFIX:PATH=<path/to/Qt6/target/installation/dir> \
-DCMAKE_TOOLCHAIN_FILE=<path/to/cmake/for/graphics/file/created/above> \섀도우 빌드를 사용하여 Qt 6을 빌드하는 것이 권장됩니다. 자세한 내용은 Qt 구성 옵션을 참조하십시오.
경고: VxWorks가 ` RTP_MEM_FILL `을 `false`로 설정되어 있는경우 , Qt configure에 ` -DCMAKE_CXX_FLAGS="-DQT_RTP_MEM_FILL=1" ` 인수를 추가로 지정해야 합니다.
구성이 완료된 후, 다음 명령을 사용하여 VxWorks용 Qt 6을 빌드하고 설치하십시오.
cd <host build directory>
cmake --build . --parallel
cmake --install .VxWorks 장치용 플랫폼 플러그인
VxWorks용 Qt는 네이티브 창 대체를 위한 EGLFS 플랫폼 플러그인을 지원합니다. 구성 방법에 대한 자세한 내용은 EGLFS를 참조하십시오.
Qt 애플리케이션 빌드
Qt 애플리케이션을 빌드하려면 QT_VXWORKS_TOOLCHAIN_FILE을 환경 변수나 정의(define)로 설정해야 합니다.
Qt 시계 데모를 빌드하는 예시:
export WIND_CC_SYSROOT=<path/to/VxWorks/VSB/directory>
export QT_VXWORKS_TOOLCHAIN_FILE=<path/to/the/BSP/toolchain.cmake>
<path/to/Qt6/target/installation/dir>/bin/qt-cmake -G Ninja -S ~/Qt/Examples/Qt-6.10.0/demos/clocks -B <path/to/build/directory>
cd <path/to/build/directory>
cmake --build . --parallel환경 변수 설정
| 변수 | 설명 |
|---|---|
| QT_QPA_FONTDIR | 글꼴이 있는 경로. |
| QT_QPA_EGLFS_FB | 프레임버퍼 장치의 경로. |
| LD_LIBRARY_PATH | 동적 라이브러리의 경로입니다. |
| ICU_DATA | ICU 데이터의 경로. |
| QT_QPA_EGLFS_INTEGRATION | Eglfs 통합, eglfs_viv 또는 eglfs_kms. |
| QT_QPA_EGLFS_KMS_CONFIG | kms.conf 의 경로. |
참고: QML 디스크 캐시는 작동하지 않습니다. 시작 속도가 느려지는 것을 방지하려면 다음 변수를 사용하여 비활성화하십시오: QML_DISABLE_DISK_CACHE.
예를 들어, 시작 스크립트에서 다음과 같이 환경 변수를 설정하십시오:
putgenv("QT_QPA_FONTDIR=/bd0a/fonts")
putgenv("QT_QPA_EGLFS_FB=/dev/fb0")
putgenv("LD_LIBRARY_PATH=/bd0a/lib/gfx;/bd0a/lib/llvm;/bd0a/lib/icu")
putgenv("ICU_DATA=/bd0a/icu/icudt73l.dat")
putgenv("QT_QPA_EGLFS_INTEGRATION=eglfs_kms")
putgenv("QT_QPA_EGLFS_FB=/dev/fb0")
putgenv("QT_QPA_EGLFS_KMS_CONFIG=/bd0a/kms.conf")
putgenv("QML_DISABLE_DISK_CACHE=1")예를 들어, Intel KabyLake 장치용 ` kms.conf ` 파일은 다음과 같을 수 있습니다:
{
"device": "/dev/dri/card0",
"hwcursor": false,
"pbuffers": true,
"outputs": [
{
"name": "DP",
"mode": "1920x1080"
}
]
}Qt 애플리케이션 실행
다음 예제는 VxWorks의 rtpSp 명령을 사용하여 애플리케이션을 시작하는 방법을 보여줍니다:
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000)Qt 애플리케이션 디버깅
Qt 애플리케이션을 디버그하려면 VxWorks VSB에 다음 내용을 추가해야 합니다:
vxprj vsb config -s -add "_WRS_CONFIG_TCF_GDB_RSP=y"VxWorks VIP 구성에 다음을 추가하십시오:
"INCLUDE_DEBUG_AGENT"
"INCLUDE_DEBUG_AGENT_START"
"INCLUDE_STANDALONE_SYM_TBL"명령줄에서
- SSH 또는 USB 직렬 연결을 통해 디바이스에서 디버깅할 애플리케이션을 시작하십시오:
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000) - PC에서 VxWorks 디버거를 시작하십시오:
vxgdb <binary to debug> - 디버거에서 실행 중인 프로세스 목록을 확인하십시오:
monitor ps - 이미 실행 중인 애플리케이션에 디버거를 연결합니다:
"attach <id from monitor>" - 디버깅을 위해 GDB 명령어를 사용하십시오.
출처: Qt Creator
Qt Creator 에서 디버깅하려면 Qt Creator 를 참조하십시오 : VxWorks 장치에서 C++ 애플리케이션 디버깅.
Workbench에서
- CMake 실시간 프로세스 프로젝트를 생성하십시오.

- 디버깅이 구성된 VSB를 설정하십시오.
- CMakeLists.txt에서 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")을 제거하십시오.
- 'CMake 시작하기'를 따라 CMakeLists.txt에 Qt CMake 관련 코드를 추가합니다.
project()앞부분에unset(CMAKE_TOOLCHAIN_FILE CACHE)를 추가하고, Qt6 툴체인 파일을 가리키는CMAKE_TOOLCHAIN_FILE와 VSB 툴체인 파일을 가리키는QT_CHAINLOAD_TOOLCHAIN_FILE를 추가합니다. 예시:unset(CMAKE_TOOLCHAIN_FILE CACHE) set(CMAKE_TOOLCHAIN_FILE "/home/qtuser/VxWorks/qt/target_gdb/lib/cmake/Qt6/qt.toolchain.cmake") set(QT_CHAINLOAD_TOOLCHAIN_FILE "/home/qtuser/VxWorks/fsl_imx6_2_0_6_2_VSB_gdb/mk/toolchain.cmake")- 애플리케이션 프로젝트(Project)를 빌드합니다.
- 새 연결을 생성합니다.

- 디버깅을 위해 RTP 프로세스를 시작합니다.

- '고급 옵션'을 클릭합니다.

- 스택 크기를 0x100000으로 설정하십시오.

VxWorks용 Qt 입력 플러그인
VxWorks는 libevdev 을 자체적으로 구현한 것을 사용하며, 이 구현은 Linux의 API와 매우 유사하지만 기능 면에서는 차이가 있습니다. 이 때문에 Qt는 VxWorks용 별도의 입력 플러그인을 구현하여 마우스, 키보드 및 터치스크린을 처리하며, 이 플러그인은 {inputs-linux-device.html}{Linux evdev}를 기반으로 하지만 아래에서 설명하는 차이점이 있습니다.
VxMouse
VxMouse 는 EvdevMouse와 동일한 구성 방식을 사용하지만, 환경 변수( QT_QPA_VXEVDEV_MOUSE_PARAMETERS)가 다릅니다. 또한, VxMouse 는 nocompress, dejitter 및 grab 매개변수를 무시합니다.
VxKeyboard
VxKeyboard 는 다른 환경 변수( QT_QPA_VXEVDEV_KEYBOARD_PARAMETERS)를 사용하는 점을 제외하면 EvdevKeyboard와 동일한 구성 방식을 사용합니다.
VxTouch
VxTouch 는 EvdevTouch와 동일한 구성 방식을 사용하지만, 다음 환경 변수가 다릅니다:
QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERSQT_QPA_VXEVDEV_DEBUG
또한, VxTouch는 두 가지 새로운 매개변수를 추가합니다:
| 매개변수 | 설명 |
|---|---|
rangex=MIN_X,MAX_X | X축의 터치 지점 최소값과 최대값을 재정의합니다 |
rangey=MIN_Y,MAX_Y | Y축 터치 지점의 최소 및 최대 값을 재정의합니다 |
제한 사항
비디오 메모리
고정된 용량의 전용 비디오 메모리를 가진 시스템의 경우, ` Qt Quick ` 또는 ` QOpenGLWidget`과 같은 클래스를 기반으로 하는 Qt 애플리케이션을 실행하기 전에 각별한 주의가 필요할 수 있습니다. 특히 고해상도(예: 풀 HD) 화면에서 표시될 때, 기본 설정만으로는 이러한 애플리케이션에 충분하지 않을 수 있습니다. 이 경우 애플리케이션이 예상치 못한 방식으로 오작동할 수 있습니다. 따라서 사용 가능한 GPU 메모리가 최소 128 MB 이상 확보되어 있는지 확인하는 것이 좋습니다. GPU용으로 고정된 양의 메모리가 할당되지 않은 시스템의 경우 이는 문제가 되지 않습니다.
© 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.