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 投票
喜欢就给个好评吧!
赞(0) 打赏
未经允许不得转载:爱易默博客 » ARM版QT交叉编译——嵌入式平台QT开发环境搭建
订阅评论
提醒
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
免责声明:本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除,若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理! Disclaimer: Most of the download resources on this site are collected on the Internet, and are only used for learning and communication. The copyright belongs to the original author. Please consciously delete within 24 hours after downloading. If you use it for commercial purposes, please purchase the original version. If the content posted on this site violates your rights, please contact us to delete it, and we will deal with it in time!

联系我们 Contact us

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

支付宝扫一扫打赏

微信扫一扫打赏

0
希望看到您的想法,请您发表评论x