浅析 QT远程部署及debug方案

文章目录

一、前言

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

二、远端部署环境要求

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

三、远端部署及执行流程

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,即可测试通过
相关推荐
Dlrb12116 小时前
ARM---I.MX6ULL时钟系统详解、时钟树、系统时钟配置等
单片机·嵌入式硬件·arm·imx6ull·pll·时钟树·cortex-a7
TDengine (老段)6 小时前
TDengine 免费版说明
java·大数据·数据库·物联网·时序数据库·tdengine
hongmai6668887 小时前
ESP32-C61-WROOM-1-N8R2:Wi-Fi 6与RISC-V融合的中坚力量
人工智能·单片机·嵌入式硬件·物联网·智能家居·risc-v
步步精BBJconn7 小时前
从GPU服务器到数据中心:AI服务器高压连接器的应用与发展趋势
大数据·运维·服务器·人工智能·科技·物联网
MetrixAeroCore18 小时前
自动售货机库存上报异常物联网卡DNS解析失败修复教程
物联网
ANSIOT18 小时前
安朔科技蓝牙无感开锁方案,靠近自动解锁
网络·科技·物联网
微硬创新19 小时前
耐达讯自动化 CC-Link IE 转 PROFINET网关在污水厂智能化升级实战
人工智能·物联网·网络协议·自动化·信息与通信
Quz1 天前
QML 信号与槽:直接绑定与跨文件通信
qt·编程语言·设计
GIS阵地1 天前
QgsSingleBandPseudoColorRenderer 完整详解(QGIS 3.40.13 C++)
开发语言·前端·c++·qt·qgis
YCOSA20251 天前
雨晨 Windows 11 IOT 企业版 LTSC 24H2 轻装 2合1 26100.8968
windows·物联网