浅析 QT远程部署及debug方案

文章目录

一、前言

  • 使用 qt 进行嵌入式程序开发时,常规方法需要生成,然后在板端进行运行。当需要 debug 时操作较为复杂。这里分享一种方案:首先使用 scp将 可执行文件部署到远程端,然后进行远程执行。使用 gdb-multiarch 进行远端debug。

二、远端部署环境要求

  • PC端(ubuntu)需安装:openssh、 scp 、sshpass(用于自动输入 ssh密码)
  • 嵌入式设备:安装openssh 、scp(用于文件传输)

三、远端部署及执行流程

1、QT 创建远程设备

  • qt 选项中创建远程设备,并在kits 中设置设备


2、.pro 中添加配置

  • 在 qt 的 .pro 文件中添加远程设备执行路径,例如要放在远端 /remotePath 下:
c 复制代码
qnx: target.path = /$${TARGET}/bin
else: unix:!android: target.path = /remotePath
!isEmpty(target.path): INSTALLS += target

3、远程部署

  • 在 run 中,禁用默认的 sftp文件传输,添加 自定义处理步骤 (即更改本地运行的指令,由于远端没有 sftp服务,改用 scp 进行远程部署)

  • 命令设置为 sshpass,假设远端主机名为 root,密码为 remotePassword,ip 为 remoteHostIp,要将本地文件 hostBinPath 拷贝到 remoteHostPath,则参数设置为:

shell 复制代码
-p remotePassword scp hostBinPath remoteHostName@remoteHostIp:remoteHostPath
  • 该指令使用 sshpass 给 scp 自动输入密码

4、远程执行

  • 远程执行档 即为 .pro 中添加的内容,需要确保和远程部署时设置的文件名相同

  • 到此,远程部署执行功能已实现。

四、远程 Debug

  • 在上面流程基础上,目标机需要额外安装 gdb,pc端额外安装 gdb-multiarch, kits debug 选择 gdb-multiarch。在选择 gdb 版本时,需要根据交叉编译器的版本选择兼容的 gdb。例如
    gcc6.3,生成可执行文件的 dwarf 版本为4, 而 gdb7.10 支持 4版本。

五、QT 版本不提供 ssh密码登录方案

  • 在创建远程设备时,部分 qt版本不提供 ssh密码登录功能,此时需要使用密钥登录。将 客户端(pc)的 私钥提供给 服务器(板端)来实现免密码登录。

步骤

1、获取pc 密钥对

  • 在 pc 执行:ssh-keygen ,一路默认回车即可 生成到 home/userName/.ssh/ ,其中 id_rsa 为私钥

2、将公钥复制到板端

  • 执行 ssh-copy-id root@remoteIp,将在板端生成 .ssh/authorized_keys, 此时 pc端 ssh 连接板端就不需要密码了

3、终端登录

  • 执行 ssh root@remoteIp,确认服务器的公钥后即可登录

4、qt 连接远端设备

  • 添加远程设备的ssh 中选择default,文件选择 pc的私钥文件 id_rsa,即可测试通过

接远端设备

  • 添加远程设备的ssh 中选择default,文件选择 pc的私钥文件 id_rsa,即可测试通过
相关推荐
susplus3 小时前
【IMX6ULL Linux系统移植】SD卡分区 | uboot详解
linux·arm·u-boot
Yiran_G5 小时前
LoRa模块休眠后如何快速恢复通信?低功耗终端唤醒与数据交互实践
嵌入式硬件·物联网
Python图像识别5 小时前
30-【2027毕设】YOLO11管道缺陷检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
道尔柯南5 小时前
【QT】从零认识 Qt:跨平台 C++ GUI 开发入门
开发语言·c++·qt
MayZork6 小时前
std::filesystem 文件操作详解
开发语言·c++·qt
kaixin_learn_qt_ing6 小时前
[银河麒麟]因为没有安装串口相关驱动,导致无法检测到对应的串口,后来安装后,我的qt的相关接口就可以识别到了
qt
数字新视界1 天前
U位资产管理系统发布全面数字化监控解决方案
嵌入式硬件·物联网·系统架构·机房管理·动力与环境监控系统
Cx330❀1 天前
Qt 多线程深度解析:从底层原理到 UI 线程与同步实战
开发语言·qt·ui·搜索引擎·性能优化·图形渲染
西西弗Sisyphus1 天前
Qt6 实现 会动的界面像物理世界一样
c++·qt
MayZork1 天前
Qt 开发集成CMake + vcpkg
开发语言·c++·qt