瑞芯微Rockchip开发者社区
直播中

熊本熊

8年用户 1399经验值
擅长:处理器/DSP
私信 关注
[经验]

Qt开发ssh root登陆失败部分简析

Qt开发

下载Firefly编译的QT工具链

Firefly 提取了 Buildroot 的交叉编译工具链,用户可以直接使用该工具链开发 Buildroot 上的 Qt 应用程序,而无需下载编译 SDK 代码。

在SDK中编译QT工具链

准备工作:

Ubuntu系统

RK3308 Linux SDK

Qt Creator

开发板:ROC-RK3308B-CC 或者 ROC-RK3308B-CC-PLUS

屏幕模组

RK3308 Linux SDK

SDK内置的QT版本:5.9.4

buildroot配置文件

使能QT相关选项

使能GDB相关选项

使能SSH相关选项

openssh包

配置登录的账户密码

配置rootfs为可读写ext2文件系统

请参照《Buildroot开发》中“Rootfs 切换为 ext2”部分。

编译SDK

请参照《固件编译》,其中kernel板级dts文件需要引用对应屏幕模组的dtsi。
编译成功后,会生成如下几个文件:

qmake
位置:buildroot/output/xxxx/host/bin/qmake

gcc
位置:buildroot/output/xxxx/host/bin/aarch64-rockchip-linux-gnu-gcc

g++
位置:buildroot/output/xxxx/host/bin/aarch64-rockchip-linux-gnu-g++

gdb
位置:buildroot/output/xxxx/host/bin/aarch64-rockchip-linux-gnu-gdb

注意
buildroot有修改,最好删除掉buildroot/output目录,再编译。

Qt Creator

下载

安装

配置

Qt版本

添加qmake
“Tools” –> “Options” –> “Kits” –> “Qt Versions”

GCC编译器

添加gcc
“Tools” –> “Options” –> “Kits” –> “Compilers”

G++编译器

添加g++
“Tools” –> “Options” –> “Kits” –> “Compilers”

调试器

ubuntu安装gdb-multiarch

位置:/usr/bin/gdb-multiarch

添加gdb

“Tools” –> “Options” –> “Kits” –> “Debuggers”

构建RK3308套件

添加RK3308套件
“Tools” –> “Options” –> “Kits” –> “Kits”

配置设备

添加RK3308设备
“Tools” –> “Options” –> “Devices” –> “Devices”

部署运行

“Projects” –> “Build & Run” –> “rk3308 64bit” –> “Run”

Files to deploy
修改 Remote Directory ,在项目所在目录的FireflyDemo.pro文件的target.path变量值。

结束demo应用程序
“Deployment” –> “Add Deploy Step” –> “Run custom remote command” –> “Command line:”
添加如下:

kill $(ps | grep -i "/data/FireflyDemo" | grep -v grep | awk '{print$1}') > /dev/null 2&>1 || echo "No exist Qt running"

Qt平台插件
“Run” –> “Command line arguments:”
添加如下:

-platform linuxfb

部署调试

“Debug” –> “Start Debugging” –> “Attach to Running Debug Server…”

说明
为了方便调试,开发板最好使用静态IP。

运行

“Build” –> “Run”

调试

开发板支持Qt远程调试,上面提到的“配置设备”的IP,以及用户密码,都是为了远程调试做准备。
“Debug” –> “Start Debugging” –> “Start debugging of startup project”

常见问题与解答

gdb 编译失败

可以添加如下文件:

buildroot/package/gdb/7.11.1/0007-fix-LONG_MIN-undefined-in-libiberty.patch

buildroot/package/gdb/7.11.1/0008-fix-to-use-fcntl-include-in-libiberty.patch

ssh root登录失败

确定rootfs是可读写的ext2文件系统

修改板卡里/etc/ssh/sshd_config文件

PermitRootLogin yes

命令行运行QT应用程序失败

使用Qt5后,不再需要-qws,而需要通过 -platform来指定要使用的QPA插件,如./data/HelloWorld -platform linuxfb;如果不指定,则用默认的QPA插件,默认的QPA插件通过QT_QPA_PLATFORM变量来指定,如export QT_QPA_PLATFORM=linuxfb。

原作者:Firefly Team

更多回帖

发帖
×
20
完善资料,
赚取积分