Qt5.5.1程序完美移植入RK3399Pro开发板(附全资源下载)

1 篇文章 0 订阅

由于2021年6月 广州疫情严重 的端午节3天假期所有酒店禁止堂食,刚好把原来写好的QT测温程序移植到开发板,希望广州快快好起来,饮个靓靓的杯

 

虚拟机平台:Ubuntu 16.04 LTS(x64)

目标平台:RK3399Pro

Qt版本:Qt5.5.1

编译工具链:aarch64-linux-gnu-g++/gcc

目录

准备:

交叉编译Qt库

交叉编译QT程序

使用Xshell传输数据到开发板

设置桌面快捷方式实现双击打开QT程序


准备

1> QT5.5.1源码包(如果你是其他QT版本请下载其他版本的源码包

不知道为什么,QT官网的源码包目前没有QT5.5.1

特此附QT5.5.1源码包下载资源:

tar.gz格式:https://download.csdn.net/download/qq_39129717/19710980

tar.xz格式:https://download.csdn.net/download/qq_39129717/19711107

建议下载tar.xz格式,我下载tar.gz在编译的时候报错,暂时没有找到原因

其他QT源码包的下载链接:https://download.qt.io/archive/qt/

2> 安装交叉编译链

搞清楚开发板支持的交叉编译链

这里我使用的 是aarch64-linux-gnu,安装比较简单

直接在终端输入:

sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu

即可安装

aarch64-linux-gnu也可以使用源码包安装,方法参考:https://blog.csdn.net/nchu_zhangyiqing/article/details/109692285

其他编译工具链安装:https://blog.csdn.net/baidu_37973494/article/details/82949963

安装完成检验编译工具是否可用:aarch64-linux-gnu-g++  -v  注意虚拟机在安装完成后可能需要重启一下

如果返回信息为:

说明安装成功

交叉编译Qt库

.tar.gz格式的解压命令为:

tar -xzvf  qt-everywhere-opensource-src-5.5.1.tar.gz

.tar.xz格式的解压命令为:

tar -xvf  qt-everywhere-opensource-src-5.5.1.tar.xz

解压完成后会在你保存安装包路径下生成源码包文件夹:

然后编辑qmake.conf文件,这一步比较关键:

由于5.5.1源码包里面没有我们使用的aarch64-linux-gnu文件夹,所以需要改其他的支持的编译工具配置文件,或者是新创建一个(理论上是可以的,但是没有实验)

 

在     你自己的路径/qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/  

有很多配置文件:

找到  文件夹linux-arm-gnueabi-g++/   进入打开qmake.conf

或者直接

sudo gedit   自己的路径/qt-everywhere-opensource-src-5.9.4/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

文件内容如下:

首先修改文件内容,加入代码:

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts

如果你的编译工具是arm-linux-guneabi-g++/gcc,以下修改步骤可以不进行

修改编译工具为aarch64-linux-gnu-g++(或者你自己使用的编译工具)

修改后的代码为:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = aarch64-linux-gnu-gcc
QMAKE_CXX               = aarch64-linux-gnu-g++
QMAKE_LINK              = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++

# modifications to linux.conf
QMAKE_AR                = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
QMAKE_NM                = aarch64-linux-gnu-nm -P
QMAKE_STRIP             = aarch64-linux-gnu-strip
load(qt_config)

保存后,然后在 /qt-everywhere-opensource-src-5.5.1文件夹下创建一个脚本文件,

sudo gedit auto.sh

并添加以下内容:

#!/bin/sh
./configure \
-prefix /opt/qt5.5.1-arm \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-separate-debug-info \

注意:

-prefix  /opt/qt5.5.1-arm    这里是编译后的安装目录,编译完成后会在对应目录上创建qt5.5.1-arm文件夹,此路径和文件名/opt/qt5.5.1-arm可以自定义

-xplatform linux-arm-gnueabi-g++ \   为交叉编译相关选择,因为我们在上一步修改了linux-arm-gnueabi-g++的qmake.conf文件,因此要指定为linux-arm-gnueabi-g++,如果你配置的是其他文件夹下的qmake.conf文件,要指定其他的文件夹/

修改该auto.sh文件权限并执行

sudo chmod u+x auto.sh

./auto.sh

执行成功后会显示

之后输入

sudo make

会执行一个比较长的时间,如果你的电脑比较强大,可以使用sudo make -j8 

-j后面的数字表示同时执行的线程数,不建议这样,这样报错的信息不好定位

make报错解决:

我在make过程中遇到:

解决方法:

修改/qt-everywhere-opensource-src-5.5.1/qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h

将#define  WEBP_USE_NEON  注释掉

完成之后,再输入

sudo make install

make install 报错解决:

有可能你在make的时候没有出问题,在make install的时候出现了关于VP8DspInit函数的报错,其解决方法同上面一样,注释#define  WEBP_USE_NEON,之后重新 make install

执行成功后,可以看见auto.sh 中   -prefix 指定的目录下出现了我们指定的安装目录/opt/qt5.5.1-arm,表示安装成功。

交叉编译QT程序

使用命令行完成编译,迅速快捷。

在你QT程序的目录下新建一个build文件夹,并进入。

mkdir build

cd build

在build目录终端下,设置Qmake的环境变量。

export PATH=/opt/qt5.5.1-arm/bin:$PATH

这个qt5.5.1-arm就是刚刚我们make install 生成的编译目录

接着执行

qmake ..  

注意,要忘记qmake后面的 ..

之后执行

make

make编译完成后会在build目录下生成一个可执行qt_xt_demo

这就是我们要在开发板运行的可执行文件了

使用Xshell传输数据到开发板

将qt_xt_demo先从虚拟机中移动到windows端,使用Xshell工具利用串口连接到Rk开发板,其波特率一般为115200。

首先打开Xshall,选择新建

如果你要使用串口进行通信,协议选择SERIAL。

选择左侧菜单栏的  串口 选项,之后选择正确的端口号一般是COM3 或者 COM4

连入开发板之后,使用账号和密码进行登录。

在Xshell中,使用sudo rz -e 选择文件进行传输。

将编译的可执行文件传输到开发板指定的文件夹下

给它赋权限:sudo  chmod 777 qt_xt_demo

设置桌面快捷方式实现双击打开QT程序

在开发板环境中,你需要执行 sudo  qt_xt_demo才能运行程序,显示你的界面,一个完整的产品肯定不能这样执行,我们需要在桌面设置一个类似链接的东西,通过双击他来执行一个脚本,实现程序运行,打开。

首先我们写一个非常简单的脚本,创建文件run.sh,加入内容

#!/bin/bash

sudo /myqt/qt_xt_demo   #注意:这里的路径需要改成自己的

给这个脚本文件加入权限

chmod u+x run.sh

之后,我再用Xshell上传一个你想要作为图标的图片,不要太大

例如,我上传了一个名为 1.png的图片再开发板里的myqt目录下

之后我们再写一个时间的的桌面配置文件:在开发板桌面目录下,创建文件 mytest.desktop,添加内容为

[Desktop Entry]
Type=Application
Exec=/myqt/run.sh
Name=你想要这个软件的命名 
GenericName=你想要这个图标的命名
Icon=图标路径
Terminal=false
Categories=Development;

同样给这文件赋权限

chmod u+x mytest.desktop

之后,双击桌面图片,就可以打开软件了!

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值