date
Sep 15, 2020
slug
2020-09-15-hi3521-QT-porting
status
Published
tags
QT
海思
summary
本文总结了在海思3521平台上移植QT5.9.8版本的完整流程,移植完成后可以在3521平台上进行QT的应用开发。
type
Post
category
音视频
AI summary
QT源码的下载及交叉编译工具的准备
- QT源码的下载地址:https://download.qt.io/archive/qt/5.9/5.9.8/single/qt-everywhere-opensource-src-5.9.8.tar.xz;
- 交叉编译工具:
- 交叉编译工具使用的是海思3521 SDK带的arm-hisiv500-linux交叉编译工具链,这个交叉编译工具链的sysyroot位置为:x86-arm/arm-hisiv500-linux/target,这一点在QT的configure中需要用到;
修改QT的mkspecs
针对我们要进行的海思3521平台的QT编译,在QT源码根目录中,进入qtbase/mkspecs子目录中,从linux-arm-gnueabi-g++目录上拷贝重命名一个hisi3521-linux-gnueabi-g++目录,并修改其中的qmake.conf文件如下:
- 对于QT的交叉编译而言,针对自己交叉编译的平台及其工具链修改mkspecs是交叉编译过程的第一步,后续对QT进行configure的时候需要通过xplatform来传递自己的平台类型。
交叉编译配置脚本
在QT目录下创建一个编译配置脚本buildsetup.sh如下:
以上脚本主要做了四件事情:
- 设置必要的环境变量;
- 把QT交叉编译的configure过程封装在qtmakeconfig中;
- 把QT交叉编译的完整编译过程封装在qtmakeall中;
- 把QT交叉编译的安装过程封装在qtmakeinstall中;
交叉编译流程及其问题的解决
在以上编译配置脚本的帮助下,对于QT的交叉编译就非常简单了:
- 编译后生成的库、插件等目录在QT根目录下的Qt_5.9.8,把这些目录拷贝到板子的/usr/local/Qt_5.9.8子目录下并设置对应的环境变量即可使用。
1.编译qmake的时候出现“You cannot configure qt separately within a top-level build.”的错误
完整错误提示如下:
解决办法:
- 参考http://www.qtcn.org/bbs/apps.php?q=diary&a=detail&did=3026&uid=121778给出的办法,在QT源码的top level目录下创建两个文件:touch .qmake.stash .qymake.super,然后重新进行编译即可。