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
更多回帖