摘要
在x86_64虚拟机上交叉编译qt程序,将程序远程部署到arm64的机子上,然后远程调试
环境
Host
系统(虚拟机)
Qt
# 参考上面链接,交叉编译qt5.12.10源码编译得到的qmake,给qmake配置了gcc、g++
https://download.qt.io/archive/qt/5.12/5.12.10/qt-opensource-linux-x64-5.12.10.run
# qt5.12.10离线安装包下载地址
# qtcreator版本
(38条消息) Linux-gdb调试方式一(QT远程调试开发板应用)_linux中qt远程控制程序_Paper_Love的博客-CSDN博客
# 参考上面链接,在Host上远程部署,调试了Target上运行的程序
https://www.youtube.com/watch?v=_tk6qhnub9c
# 参考上面链接,命令行方式安装的gdbserver和gdb-multiarch,给qmake配置了gdb
# gdb-multiarch的版本
Target
系统
网络
Host和Target在同一局域网
配置
Gdb
# sudo apt-get install gdbserver
# sudo apt-get install gdb-multiarch
# 安装指令
GCC
G++
qmake
Device
Kit
远程debug
控制台程序
# 这个路径是Target上已存在的路径,调试或运行时,程序会被部署到这个文件夹中
# 下断点,点击F5,开始调试
# 输入Target上用户user的密码,点击OK
# 控制台程序就被部署到target上了
# F10,下一步,打印出了Target上的数据库驱动
窗口程序
# 创建窗口程序,选择交叉编译套件
# 拖个按钮出来,编辑点击事件处理函数
# 修改target.path
# 下断点,点击F5
# 输入Target上用户user的密码,点击OK
# 程序已经被部署到target上了
# 点击F5,继续执行,报错。OK,点击stop running program。
# 插叙另一个target的情况
Ubuntu交叉编译到树莓派上出现qt.qpa.xcb: could not connect to display 的问题解决 – 源码巴士 (code84.com)
# 在host上,添加变量DISPLAY=:0.0后,在host上运行或调试时能窗口程序直接显示在另一个target中
https://www.theanswerblog.com/post/qt-qpa-xcb-could-not-connect-to-display
如何在Linux系统上设置和管理用户和权限?_linux给用户赋予权限_搜索:蓝易云的博客-CSDN博客
# 在另一个target中不加sudo执行程序时不显示窗口——将当前用户加入root用户组,reboot,再执行程序就不用加sudo也能显示窗口了
# 插叙另一个target的情况
# 在target终端输入指令,回车
# 在host上点击Attach to running debug server
# 选择host上的可执行程序,填写gdbserver监听的地址,ok
# F5跳过这两个断电后,target上出先了窗口程序。
# 点击<sayHello>,断点被检测到。
# F5,qDebug()输出的信息在target控制台显示。
复制后的ubuntu20.04.06虚拟机的桥接模式忽然不能上网了
# 此时的网卡信息和配置入下图所示
# 也没对网络配置信息做什么修改,一觉醒来就不能上网了,这是另一个噩梦开始吗
Ubuntu更改虚拟机网段(改成桥接模式无法连接网络)_爱吃骨头的鱼儿的博客-CSDN博客
# 手动配置了网卡信息,重启网络,能上网了