基于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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2017-03-25 授人以鱼不如授人以渔,和女儿学一起学成语