总体思路
基于WSL2(Ubuntu 22.04 LTS)+原子Alpha开发板进行Qt开发实验,基于Win11通过vscode remote到WSL2,再基于WSL2通过Qt 交叉编译,并通过ssh+rsync远程到开发板,构建起开发工具链。
Step1 基于Win11通过Vscode Remote 得到WSL2虚拟机
参考此博客,已经非常详细了:WSL2 Ubuntu安装Qt(包括QtCreator) 但是遇到了WSL2启动qt得到的Xming窗口无法放大的问题,有待解决。作为此博客的补充:
- WSL2才能在win11环境cmd中查询到Xming所需的server IP,WSL不行
- 卸载WSL再安装WSL2时有些报错需要解决:
WslRegisterDistribution failed with error: 0x800701bc
,需要使用该工具 内核更新工具更新内核WslRegisterDistribution failed with error 0x80370102
,需要开启内核虚拟化选项 参考此连接
Step2 基于WSL2,通过ssh+rsync远程到开发板
开发板使用出厂环境:
QMake version 3.1
Using Qt version 5.12.9 in /usr/lib
root@ATK-IMX6U:~# cat /etc/version
2.4
参考文档【正点原子】I.MX6U 出厂系统 Qt 交叉编译环境搭建 V1.6中的2.3~2.5章节配置Kits。此外,如本文Step1所述,本文所使用的WSL2虚拟机和所采用的QtCreator工具均为最新版本,开发板亦有过其他配置,与文档不一致,因此额外过遇到如下问题:
- usb wifi不稳定:
- 解决方式:删除原有的usb wifi配置脚本,删除bashrc中的初始化过程,通过
ifconfig usb0 down
、fconfig eth0 up
命令将usb wifi 切换为网线连接
- 解决方式:删除原有的usb wifi配置脚本,删除bashrc中的初始化过程,通过
- qtcreator无法连接开发板,报
Unable to negotiate with **** port 22: no matching host key type found. Their offer: ssh-rsa
- 定位发现,WSL2的shell也无法通过命令
ssh root@10.173.168.3
登录开发板,报相同的错,由此可知是开发板的ssh版本过低,加密技术已被WSL2侧禁用。因此,采用此处传送门 的方式,强制WSL2侧支持ssh-rsa加密方式,重启WSL2 shell和qtcreator,得以解决。
- 定位发现,WSL2的shell也无法通过命令
- 开发板空间不足,导致qtcreator远程run报目标设备可用空间不足
- 通过开发板卡槽mount sd卡到文件系统解决存储问题。修改
/etc/fstab
文件如下(不知道codepage
怎么写可以先手动挂载mount /dev/mmcblk0p1 /home/root/sd
后,通过mount
命令查看;此外,fmask
和dmask
字段决定文件夹权限):
/dev/mmcblk0p1 /home/root/sd vfat rw,nosuid,fmask=0000,dmask=0000,codepage=437 0 0
- 通过.pro文件指定目标可执行文件路径
target.path += /home/root
、INSTALLS += target
- 在project修改磁盘空间检查目录到挂载路径
- 通过开发板卡槽mount sd卡到文件系统解决存储问题。修改