Qemu仿真----(6)Buildroot支持QT环境
平台:ubuntu-22.04-desktop-amd64.
对象:在buildroot中增加对Qt的支持.
文件:buildroot.
通过buildroot编译了一个使用Qemu启动的Linux系统,并配置了Qt环境,可以运行图形界面。
1.安装编译环境
$ sudo apt install build-essential vim bc flex bison gawk texinfo libssl-dev libncurses5-dev ssh net-tools curl wget unzip git
2.buildroot
2.1 下载
可以在官网上下载:
也可以在官方Github下载:
[https://github.com/buildroot/buildroot]
2.2 配置
$ cd buildroot # 这里配置了x64虚拟机平台,主要是不用交叉编译,运行快,你也可以配置ARM、RISC-V等平台。 $ make qemu_x86_64_defconfig $ make menuconfig
在默认配置的基础上,做如下配置:
Toolchain ---> [*] Enable WCHAR support [*] Enable C++ support Target packages ---> Graphic libraries and applications (graphic/text) ---> [*] Qt5 ---> -*- qt5base [*] Compile and install examples (with code) [*] MySQL Plugin SQLite 3 support (Qt SQLite) ---> -*- gui module -*- widgets module [*] GIF support [*] JPEG support [*] PNG support [*] Enable Tslib support [*] qt5charts -*- qt5declarative -*- quick module [*] qt5quickcontrols [*] qt5quickcontrols2 -*- qt5svg [*] qt5virtualkeyboard Filesystem images ---> (1024M) exact size
2.3 编译
# 以下方式,任选其一: $ make -j8 # 或者,增加时间测试: $ time(make -j8) # 或者,保存log,自己记住编译开始的时间,结束会自动打印结束时间 $ make -j8 2>&1 | tee build_qemu.log; date
编译的时候,会自动从网上下载需要的包并编译,直到结束。
3. 修改启动项
编译结束之后,会生成一个dl目录和output目录,dl目录是下载的包存放处,output是编译文件和生成文件的存放处。
$ cd buildroot/output/images $ ls bzImage rootfs.ext2 start-qemu.sh
其中,start-qemu.sh的内容如下:
#!/bin/sh ( BINARIES_DIR="${0%/*}/" cd ${BINARIES_DIR} if [ "${1}" = "serial-only" ]; then EXTRA_ARGS='-nographic' else EXTRA_ARGS='-serial stdio' fi export PATH="/home/abc/buildroot/output/host/bin:${PATH}" exec qemu-system-x86_64 -M pc -kernel bzImage -drive file=rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda console=tty1 console=ttyS0" -net nic,model=virtio -net user ${EXTRA_ARGS} )
我们做如下修改(这样可以使用UI界面):
--- a/start-qemu.sh +++ b/start-qemu.sh @@ -10,5 +10,5 @@ else fi export PATH="/home/abc/buildroot/output/host/bin:${PATH}" -exec qemu-system-x86_64 -M pc -kernel bzImage -drive file=rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda console=tty1 console=ttyS0" -net nic,model=virtio -net user ${EXTRA_ARGS} +exec qemu-system-x86_64 -M pc -kernel bzImage -drive file=rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda console=tty1 console=ttyS0" -net nic,model=virtio -net user #${EXTRA_ARGS} )
也就是屏蔽最后一项参数:"${EXTRA_ARGS}"。
4.运行
$ ./start-qemu.sh VNC server running on 127.0.0.1:5900
这时,我们就可以使用VNC客户端连接这个IP地址了,因为VNC Viewer收费,我们用Ubuntu自带的Remmina,如果Ubuntu里找不到就安装一下:
$ sudo apt install remmina
打开Remmina,选择VNC协议,并输入IP和端口号,如下图:
回车就可以连接到刚刚启动的Qemu虚拟机了,进入虚拟机后,一开始还是命令行界面,我们执行如下命令:
$ cd /usr/lib/qt/examples/widgets/widgets/digitalclock/ $ ls digitalclock digitalclock.h main.cpp digitalclock.cpp digitalclock.pro
开启数字时钟:
$ ./digitalclock -platform linuxfb
效果如下:
我在开发板上测试也是OK的.