X-LINUX-QT How To




This article aims to explain How to use the the latest X-LINUX-QT Developer Package for the STM32 microprocessor series.

1. Prerequisites

Refer to the detailed prerequisites here.

2. Building QT application using CMake

2.1. Update the SDK environment for CMake

Follow below steps if you need to add the missing OE_CMAKE_TOOLCHAIN_FILE variable to your SDK configuration

  • Open terminal and load the environment setup
 source /opt/st/stm32mp2/5.0.3-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06/environment-setup-cortexa35-ostl-linux
  • Export the OE_CMAKE_TOOLCHAIN_FILE variable
 export OE_CMAKE_TOOLCHAIN_FILE="$OECORE_NATIVE_SYSROOT/usr/lib/cmake/Qt6/qt.toolchain.cmake"
2.2. Download the Demo example source code
 mkdir -p /opt/st/demos/Qt
 cd /opt/st/demos/Qt
 git clone https://github.com/KDABLabs/KDBoatDemo.git -b qt6
2.3. Build the Demo example
 cd KDBoatDemo
 cmake -S . -B config_default
-- Toolchain file defaulted to '/opt/st/stm32mp2/4.2.4-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26_x-linux-qt_v2.0.0/sysroots/x86_64-ostl_sdk-linux/usr/lib/cmake/Qt6/qt.toolchain.cmake'
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/st/stm32mp2/4.2.4-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26_x-linux-qt_v2.0.0/sysroots/x86_64-ostl_sdk-linux/usr/bin/aarch64-ostl-linux/aarch64-ostl-linux-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/st/stm32mp2/4.2.4-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26_x-linux-qt_v2.0.0/sysroots/x86_64-ostl_sdk-linux/usr/bin/aarch64-ostl-linux/aarch64-ostl-linux-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Performing Test HAVE_STDATOMIC
-- Performing Test HAVE_STDATOMIC - Success
-- Found WrapAtomic: TRUE  
-- Performing Test HAVE_EGL
-- Performing Test HAVE_EGL - Success
-- Found EGL: /opt/st/stm32mp2/4.2.4-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26_x-linux-qt_v2.0.0/sysroots/cortexa35-ostl-linux/usr/include (found version "1.5") 
-- Performing Test HAVE_GLESv2
-- Performing Test HAVE_GLESv2 - Success
-- Found GLESv2: /opt/st/stm32mp2/4.2.4-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26_x-linux-qt_v2.0.0/sysroots/cortexa35-ostl-linux/usr/include  
-- Found XKB: /opt/st/stm32mp2/4.2.4-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26_x-linux-qt_v2.0.0/sysroots/cortexa35-ostl-linux/usr/lib/libxkbcommon.so (found suitable version "1.5.0", minimum required is "0.5.0") 
-- Could NOT find WrapVulkanHeaders (missing: Vulkan_INCLUDE_DIR) 
-- Could NOT find WrapVulkanHeaders (missing: Vulkan_INCLUDE_DIR) 
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/st/demos/Qt/KDBoatDemo/config_default
 cmake --build config_default --target all
[  7%] Running qmlimportscanner for KDABBoatDemo
[  7%] Built target KDABBoatDemo_qmlimportscan
[ 15%] Automatic MOC for target KDABBoatDemo
[ 15%] Built target KDABBoatDemo_autogen
[ 23%] Automatic RCC for imagesMaps2.qrc
[ 30%] Automatic RCC for data.qrc
[ 38%] Automatic RCC for images.qrc
[ 46%] Automatic RCC for imagesMaps.qrc
[ 53%] Building CXX object CMakeFiles/KDABBoatDemo.dir/KDABBoatDemo_autogen/mocs_compilation.cpp.o
[ 61%] Building CXX object CMakeFiles/KDABBoatDemo.dir/main.cpp.o
[ 69%] Building CXX object CMakeFiles/KDABBoatDemo.dir/KDABBoatDemo_autogen/EWIEGA46WW/qrc_imagesMaps.cpp.o
[ 76%] Building CXX object CMakeFiles/KDABBoatDemo.dir/KDABBoatDemo_autogen/EWIEGA46WW/qrc_imagesMaps2.cpp.o
[ 84%] Building CXX object CMakeFiles/KDABBoatDemo.dir/KDABBoatDemo_autogen/EWIEGA46WW/qrc_images.cpp.o
[ 92%] Building CXX object CMakeFiles/KDABBoatDemo.dir/KDABBoatDemo_autogen/EWIEGA46WW/qrc_data.cpp.o
[100%] Linking CXX executable KDABBoatDemo
[100%] Built target KDABBoatDemo
2.4. Deploy the Demo example to your running board
  • Copy the Example's binary into your connected board
 cd /opt/st/demos/Qt
 scp config_default/KDABBoatDemo root@192.168.7.1:/home/root/.
2.5. Run the Demo example on your board
  • Connect to your running board
 ssh root@192.168.7.1
  • Run the Demo's example (windowed mode)
 ./KDABBoatDemo
  • Check the running Demo example on your board's display
Running KDAB Boat Demo on target (Windowed Mode)
  • Run the Demo's example (Full screen mode)
 ./KDABBoatDemo --fullscreen
  • Check the running Demo example on your board's display
Running KDAB Boat Demo on target (Full screen Mode)


3. Building QT application using STM32CubeIDE

3.1. Update the SDK environment for CMake

Please follow below steps if you need to add the missing OE_CMAKE_TOOLCHAIN_FILE variable to your SDK configuration

  • Open terminal and load the environment setup
 source /opt/st/stm32mp2/5.0.3-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06/environment-setup-cortexa35-ostl-linux
  • Add the missing OE_CMAKE_TOOLCHAIN_FILE variable to the qt6 environment file
 echo "export OE_CMAKE_TOOLCHAIN_FILE=\"\$OECORE_NATIVE_SYSROOT/usr/lib/cmake/Qt6/qt.toolchain.cmake\"" >> $OECORE_NATIVE_SYSROOT/environment-setup.d/qt6.sh
3.2. Install the STM32CubeIDE
  • Please follow instructions from here to know how to install and use the STM32CubeIDE.
3.3. Select the updated OpenSTLinux SDK by the X-LINUX-QT Developer Package
  • Please follow instructions from here to know how to install the STM32MPU OpenSTLinux Developper Package for the STM32CubeIDE.
  • Please select the updated STM32MPU OpenSTLinux Developper Package by the X-LINUX-QT Developer Package.
3.4. Download the Demo example source code
 mkdir -p /opt/st/demos/Qt
 cd /opt/st/demos/Qt
 git clone https://github.com/KDABLabs/KDBoatDemo.git -b qt6
3.5. Build the Demo example
  • Import the Project from STM32CubeIDE
  • Start a new STM32 CMake Project
STM32CubeIDE New CMake Project 01.png


  • Select Project with existing CMake sources
STM32CubeIDE New CMake Project 02.png


  • Fill the Project name and source directory
  • Project name = KDBoatDemo
  • Source directory = /opt/st/demos/Qt/KDBoatDemo
STM32CubeIDE New CMake Project 03.png


  • Configure default toolchain
  • Select OpenSTLinux SDK for the Toolchain field
  • Select your installed OpenSTLinux SDK (openstlinux-6.1-yocto-mickledore-mpu-v24.06.26) for the Version field
STM32CubeIDE New CMake Project 04.png


  • Build the Project
  • Select the project from the list and press the Build button
STM32CubeIDE Build CMake Project 01.png
  • Wait until the build is finished and make sure it is done successfully
STM32CubeIDE Build CMake Project 02.png
3.6. Deploy the Demo example to your running board
  • Copy the Example's binary into your connected board
 cd /opt/st/demos/Qt
 scp config_default/KDABBoatDemo root@192.168.7.1:/home/root/.
3.7. Run the Demo example on your board
  • Connect to your running board
 ssh root@192.168.7.1
  • Run the Demo's example (windowed mode)
 ./KDABBoatDemo
  • Check the running Demo example on your board's display
Running KDAB Boat Demo on target (Windowed Mode)
  • Run the Demo's example (Full screen mode)
 ./KDABBoatDemo --fullscreen
  • Check the running Demo example on your board's display
Running KDAB Boat Demo on target (Full screen Mode)


4. Building Qt applications using Qt Creator

The Qt™ Creator[1] tool is used to build, debug and run applications demos on target.

4.1. Install the Qt Creator
  • The Qt™ Creator can be downloaded and installed following this link
  • The Qt™ online installer can be dowloaded cliking on this link
  • Installing the X-LINUX-QT Developer Package configures also the new STM32MPU Kit for the already installed Qt™ Creator IDE.
4.2. Select the new Kit installed by the X-LINUX-QT Developer Package

Once the Qt™ Creator is launched and the Welcome to Qt™ Creator is displayed:

  • Go to the Examples from the list on the left ,
  • Then select the new Qt6 unknown package from the dropdown list.

The supported examples are then displayed.

Qt™ Creator Welcome Screen - Qt unknown package Examples
4.3. Select the project example
  • You may search for a specific example in the Search bar in front of the selected Kit
  • Select the example you are looking for (just a simple click on it)
Qt™ Creator Welcome Screen - Select the example
  • Close the Help window if not needed
Qt™ Creator Welcome Screen - The example's Help window
4.4. Configure the project example
  • Make sure the new added Kit by X-LINUX-QT Developer Package is selected
  • Press the Configure Project button
Qt™ Creator - Configure Project
  • Make sure all configuration steps are successfully done (Green Bars)
Qt™ Creator - Project Configuration Status
4.5. Configure the STM32 MPU Kit
  • Select the Configure Project button from the vertical bar on the left
  • Select the new Kit added by the X-LINUX-QT Developer Package
  • Select Run Settings
  • On the right panel, scroll down till the Environment section
  • Press the Details button
  • Add the below environment variables
XDG_RUNTIME_DIR=/run/user/1000
QT_QPA_PLATFORM=wayland
QT_VULKAN_LIB=/usr/lib/libvulkan.so.1
Qt™ Creator - Configure Run Settings
4.6. Build and run the project
  • Make sure your board is connected to your host machine via the USB DRD TypeC connector.
  • Follow instructions from the Hardware setup section and check how to get your board connected to your host machine.
  • Once in the Run Setting panel, you shouldn't have the below notice at the bottom of the screen.
Qt™ Creator - Run Project
  • Press the Run button from the vertical bar on the left
  • That will build, deploy and run the selected example on the connected board.
Qt™ Creator - Run Project
  • If everything went well, then the example will be running on the connected board.
The Quick Items example running on the target



5. References