LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

基于QEMU模拟器搭建Builtroot下的QT开发环境

关键词:buildroot、qt、qemu等等。

1 Builtroot下载编译运行

下载Buildroot:

git clone -b 2022.08 https://gitee.com/arnoldlu/buildroot.git

 编译:

make qemu_arm_vexpress_defconfig
make -j8

运行命令行:

qemu-system-arm -M vexpress-a9 -smp 2 -m 1024M -kernel output/images/zImage -append "root=/dev/mmcblk0 console=ttyAMA0 loglevel=8" -dtb output/images/vexpress-v2p-ca9.dtb -sd output/images/rootfs.ext2 -nographic

参考《通过buildroot+qemu搭建ARM-Linux虚拟开发环境》。

2 Buildroot下QT配置

Buildroot默认的工具链不满足QT需求,所以需要配置工具链。

配置Toolchian支持QT5:

配置QT5模块:

配置mesa3d:

配置qt5cinex、libglvnd:

Target packages->Graphic libraries and applications (graphic/text)->qt5cinex

Target packages->Graphic libraries and applications (graphic/text)->libglvnd

使用ext4并配置文件系统大小:

针对qemu_arm_vexpress_defconfig的修改如下:

diff --git a/configs/qemu_arm_vexpress_defconfig b/configs/qemu_arm_vexpress_defconfig
index 2c813456f4..70e2992074 100644
--- a/configs/qemu_arm_vexpress_defconfig
+++ b/configs/qemu_arm_vexpress_defconfig
@@ -1,35 +1,45 @@
-# Architecture
 BR2_arm=y
 BR2_cortex_a9=y
 BR2_ARM_ENABLE_NEON=y
 BR2_ARM_ENABLE_VFP=y
-BR2_ARM_FPU_VFPV3D16=y
-
-# System
-BR2_SYSTEM_DHCP="eth0"
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y
 BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
-
-# Filesystem
-BR2_TARGET_ROOTFS_EXT2=y
-# BR2_TARGET_ROOTFS_TAR is not set
-
-# Image
+BR2_SYSTEM_DHCP="eth0"
 BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh"
 BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)"
-# Qemu >= 5.1 requires an SD card size to be a power of 2, e.g. 64 MiB.
-BR2_TARGET_ROOTFS_EXT2_SIZE="64M"
-
-# Linux headers same as kernel
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y
-
-# Kernel
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.18"
 BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
-
-# host-qemu for gitlab testing
+BR2_PACKAGE_QT5CINEX=y
+BR2_PACKAGE_LIBGLVND=y
+BR2_PACKAGE_MESA3D=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL=y
+BR2_PACKAGE_MESA3D_OSMESA_GALLIUM=y
+BR2_PACKAGE_MESA3D_OPENGL_ES=y
+BR2_PACKAGE_QT5=y
+BR2_PACKAGE_QT5BASE_EXAMPLES=y
+BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
+BR2_PACKAGE_QT5BASE_LINUXFB=y
+BR2_PACKAGE_QT5BASE_FONTCONFIG=y
+BR2_PACKAGE_QT5BASE_HARFBUZZ=y
+BR2_PACKAGE_QT5BASE_GIF=y
+BR2_PACKAGE_QT5BASE_JPEG=y
+BR2_PACKAGE_QT5BASE_SYSLOG=y
+BR2_PACKAGE_QT5BASE_DBUS=y
+BR2_PACKAGE_QT5BASE_ICU=y
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
+# BR2_TARGET_ROOTFS_TAR is not set
 BR2_PACKAGE_HOST_QEMU=y
 BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y

3 QT测试

运行QEMU:

qemu-system-arm -M vexpress-a9 -smp 2 -m 1024M -kernel output/images/zImage -append "root=/dev/mmcblk0 console=ttyAMA0 loglevel=8" -dtb output/images/vexpress-v2p-ca9.dtb -drive file=output/images/rootfs.ext4,if=sd,format=raw -serial mon:stdio

启动后原命令行显示输入界面,弹出QEMU窗口显示QT内容:

输入账号名root,进入/usr/lib/qt/examples/gui/analogclock/,执行./analogclock --platform linuxfb

退出QEMU界面,需要按下组合键Ctrl+Alt+G。

参考文档:

Qt Reference Pages | Qt 5.15》-官方关于QT 5.15的参考资料。

Qt for Embedded Linux | Qt 5.15》-QT在嵌入式Linux上实现参考,包括:EGLFS、LinuxFB、DirectFB、Wayland。

posted on 2023-03-25 23:59  ArnoldLu  阅读(623)  评论(0编辑  收藏  举报

导航