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

乐侨珂

7年用户 956经验值
擅长:控制/MCU
私信 关注
[问答]

如何将Qt5.5.1程序移植入RK3399Pro开发板呢

如何将Qt5.5.1程序移植入RK3399Pro开发板呢?请大神指教

回帖(1)

刘易

2022-2-14 15:31:23
准备

1> QT5.5.1源码包(如果你是其他QT版本请下载其他版本的源码包)
不知道为什么,QT官网的源码包目前没有QT5.5.1
2> 安装交叉编译链
搞清楚开发板支持的交叉编译链
这里我使用的 是aarch64-linux-gnu,安装比较简单
直接在终端输入:
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu
即可安装

安装完成检验编译工具是否可用: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/bashsudo /myqt/qt_xt_demo   #注意:这里的路径需要改成自己的 给这个脚本文件加入权限
chmod u+x run.sh
之后,我再用Xshell上传一个你想要作为图标的图片,不要太大
例如,我上传了一个名为 1.png的图片再开发板里的myqt目录下
之后我们再写一个时间的的桌面配置文件:在开发板桌面目录下,创建文件 mytest.desktop,添加内容为
[Desktop Entry]Type=ApplicationExec=/myqt/run.shName=你想要这个软件的命名 GenericName=你想要这个图标的命名Icon=图标路径Terminal=falseCategories=Development; 同样给这文件赋权限
chmod u+x mytest.desktop
之后,双击桌面图片,就可以打开软件了!
举报

更多回帖

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