浅析 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,即可测试通过
相关推荐
fly的fly20 小时前
RT-Thread消息队列源码机制讲解
c语言·stm32·物联网
小野嵌入式20 小时前
3小时精通嵌入式串口通信!从零玩转ESP32+Modbus+OTA(1)
c语言·单片机·嵌入式硬件·mcu·物联网
枫叶丹41 天前
【Qt开发】Qt界面优化(五)-> Qt样式表(QSS) 子控件选择器
c语言·开发语言·数据库·c++·qt
小龙报1 天前
【51单片机】不止是调光!51 单片机 PWM 实战:呼吸灯 + 直流电机正反转 + 转速控制
数据结构·c++·stm32·单片机·嵌入式硬件·物联网·51单片机
送外卖的工程师1 天前
STM32 驱动五线四相步进电机(28BYJ-48+ULN2003)教程
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·proteus
物通博联网关1 天前
自动装珠机PLC数据采集物联网解决方案
物联网
xcLeigh1 天前
基于 IoT-benchmark 的时序数据库性能测试实战:从安装到结果分析
数据库·物联网·性能测试·时序数据库·iotdb
宁静致远20211 天前
Qt 利用TCP/IP socket通信 发送与接收结构体(简单通信协议解析)
网络·qt·tcp/ip
『往事』&白驹过隙;1 天前
Linux VFS虚拟文件系统杂谈
linux·c语言·arm开发·物联网·操作系统·iot