ARM版QT交叉编译——嵌入式平台QT开发环境搭建

ARM版QT交叉编译

一. 安装交叉编译器

小C这里所用的为华为海思系列 arm-hisiv500-linux aarch64-himix100-linux Hi3519AV100芯片。

  1. 解压交叉编译器压缩包
  2. 执行后缀名为install的安装脚本,比如 aarch64-himix100-linux.install,不同系列的交叉编译器都会被安装在 /opt/hisi-linux/x86-arm 这个默认目录下,根据系列名区分。
[root@test ]# ll /opt/hisi-linux/x86-arm/
total 8
drwxr-xr-x. 12 520 520 4096 Aug 22 13:55 aarch64-himix100-linux
drwxr-xr-x. 10 520 520 4096 Aug 22 13:44 arm-hisiv500-linux
  1. 配置环境变量,海思系列芯片自动安装好交叉编译器后已配置好环境变量,无需自己手动配置。如果未配置,则需更改 /etc/profile 文件,在最后增加环境变量,比如:
export PATH="/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin:$PATH"

然后,执行如下命令使其生效:

source /etc/profile

二. 下载QT

  1. 去官网下载自己所需版本的QT源码: http://download.qt.io/archive/qt/
    小C所用QT版本为4.8.7 http://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz
  2. 解压
tar -zxvf qt-everywhere-opensource-src-4.8.7.tar.gz
  1. 进入目录
cd qt-everywhere-opensource-src-4.8.7

三. 配置QT

  1. 配置 qmake.conf 配置文件,首先拷贝一份模板配置文件用于自定义:
cp -r ./mkspecs/qws/linux-arm-g++ ./mkspecs/qws/linux-himix100-g++

编辑配置文件:

gedit ./mkspecs/qws/linux-himix100-g++/qmake.conf

arm-linux 替换成对应的编译器即可,比如 aarch64-himix100-linux,最后,整个文件看起来像下面这样:

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

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

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

# modifications to linux.conf
QMAKE_AR                = aarch64-himix100-linux-ar cqs
QMAKE_OBJCOPY           = aarch64-himix100-linux-objcopy
QMAKE_STRIP             = aarch64-himix100-linux-strip

load(qt_config)
  1. 配置 configure
    1). arm-hisiv500-linuxHi3519AV100 等32位交叉编译器配置:
./configure -opensource -confirm-license -embedded arm -nomake examples -nomake demos -nomake docs -xplatform qws/linux-hisiv500-g++ -prefix /usr/local/Trolltech/QtEmbedded-4.8.7-arm_x32

其中,qws/linux-hisiv500-g++ 需要根据不同编译器做对应修改。
安装目录 /usr/local/Trolltech/QtEmbedded-4.8.7-arm_x32 也可根据需要自行定义,默认安装目录在 /usr/local/Trolltech/,名称根据Qt版本和编译器架构自动命名。

  1. 配置 configure
    2). aarch64-himix100-linux 64位交叉编译器配置:
./configure -opensource -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow -no-avx -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -little-endian -qt-freetype -no-opengl -no-glib -nomake demos -nomake examples -nomake docs -xplatform qws/linux-himix100-g++ -prefix /usr/local/Trolltech/QtEmbedded-4.8.7-arm_x64

同样的,qws/linux-himix100-g++ 需要根据不同编译器做对应修改。
安装目录 /usr/local/Trolltech/QtEmbedded-4.8.7-arm_x64 也可根据需要自行定义,默认安装目录在 /usr/local/Trolltech/,名称根据Qt版本和编译器架构自动命名。

四. 64位编译器额外配置:

  1. 编辑 q_atomic_swp.h 头文件,解决编译时候报的汇编swap错误。
gedit ./src/corelib/arch/qatomic_armv5.h

q_atomic_swp 函数修改为:

inline char q_atomic_swp(volatile char *ptr, char newval)
{
    register char ret;

    /*asm volatile("swpb %0,%2,[%3]"
    : "=&r"(ret), "=m" (*ptr)
    : "r"(newval), "r"(ptr)
    : "cc", "memory");*/

    ret=*ptr;

    *ptr=newval;

    return ret;
}
  1. 修改 itemviews.cpp 396 行,解决编译错误: error: invalid conversion frome 'int' to
vi src/plugins/accessible/widgets/itemviews.cpp +396

修改后为:

view()->selectionModel()->select(index, QItemSelectionModel::SelectionFlags( QItemSelectionModel::Columns & QItemSelectionModel::Deselect ));

五. 编译安装

  1. 编译
gmake -j8
  1. 安装
gmake install

六. 配置 Qt Creator

在工具栏 Tools->Options->Build & Run 选项卡里配置,这里不做过多解释,配置完成后如图所示:

参考:

https://doc.qt.io/archives/qt-4.8/qt-embedded-crosscompiling.html
https://blog.csdn.net/yfkyfk521/article/details/89446969

2 1 vote
喜欢就给个好评吧!
赞(0) 打赏
未经允许不得转载:爱易默博客 » ARM版QT交叉编译——嵌入式平台QT开发环境搭建
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments
免责声明:本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除,若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

0
Would love your thoughts, please comment.x
()
x