海思AI芯片(Hi3559/Hi3516)开发(二):开发环境搭建——交叉编译和安装QT5

文章目录

  • 概述
  • 下载和安装QtCreator
  • 下载和安装Qt5
    • 下载QT的源代码
    • 解压缩
    • 修改qmake配置信息
    • 创建configure配置参数
    • 编译
  • QtCreator的设置
  • 创建测试工程
    • Qt库文件
  • 后续工作
  • 参考文档

概述

出于个人习惯,我喜欢使用QT来开发C++语言的应用程序,其IDE环境虽不是最优秀的,但是它的Qt程序库还是用起来很顺手,比STL好用的多。
接下来,将介绍在Ubuntu环境下交叉编译和安装Qt5的过程。

下载和安装QtCreator

QtCreator是一个集成开发环境,类似于巨软的Visual Studio,当然比它简单和简洁许多。
具体下载和安装过程参见以下链接,基本上不会出现什么问题,这里就不再赘述。
https://blog.csdn.net/u013934107/article/details/80712418

下载和安装Qt5

下载QT的源代码

这里使用最新的Qt版本5.14.2,下载地址为:
https://download.qt.io/archive/qt/5.14/5.14.2/single/qt-everywhere-src-5.14.2.tar.xz

解压缩

创建/home/username/arm-build/目录(注:这里的username是Ubuntu登录的用户名,需要依据自己的用户名更改,下同)

mkdir /home/username/arm-build

把下载的文件放在/home/username/arm-build/目录下,进行解压缩,操作步骤如下:

tar –vxf qt-everywhere-src-5.14.2.tar.xz
cd qt-everywhere-src-5.14.2

修改qmake配置信息

配置文件在以下目录中:(注意,这里有很多类型的配置文件,对应不同的系统和处理器)

qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

使用文本编辑器打开qmake.conf文件,修改后的内容为:

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

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_OPA_DEFAULT_PATFORM = linux

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.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_NM                = aarch64-himix100-linux-nm -P
QMAKE_STRIP             = aarch64-himix100-linux-strip
load(qt_config)

修改完成后保存退出。

创建configure配置参数

qt-everywhere-src-5.14.2目录中创建autoConfig.sh文件,填写以下内容:

#!/bin/sh
./configure \
		-prefix /opt/Qt-5.14.2-arm/ \
		-release \
		-opensource \
		-make libs \
		-xplatform linux-arm-gnueabi-g++ \
		-optimized-qmake \
		-pch \
		-qt-libjpeg \
		-qt-zlib \
		-no-opengl \
		-no-sse2 \
		-no-openssl \
		-no-cups \
		-no-glib \
		-no-iconv \
		-no-xcb \
		-no-accessibility \
		-no-dbus \
		-skip qt3d \
		-skip qtcanvas3d \
		-skip qtpurchasing \
		-skip qtactiveqt \
		-skip qtandroidextras \
		-skip qtcharts \
		-skip qtconnectivity \
		-skip qtdatavis3d \
		-skip qtdeclarative \
		-skip qtgamepad \
		-skip qtvirtualkeyboard \
		-nomake examples \
		-nomake tools \
		-nomake tests
exit

保存后退出。
其中:

  • -prefixmake install命令执行时,安装的目录;
  • -xplatform对应的是前面qmake.conf文件的目录;
  • -make libs表示编译成动态链接库,需要手动把so库文件复制到开发板上;
  • 删除了很多不需要的库,也没有编译示例程序、工具和测试程序,这会加快编译速度。

编译

qt-everywhere-src-5.14.2目录中执行以下命令,自动生成Makefile文件:

chmod +x autoConfig.sh
./autoConfig.sh

执行成功后,进行编译:

make –j4

编译的时间大概10多分钟,与计算机配置有关。
编译完成后,执行安装命令

sudo make install

由于在autoConfig.sh文件中已经指定了安装路径,所以将自动安装到/opt/Qt-5.14.2-arm目录下。

QtCreator的设置

  1. 启动QtCreator,打开“工具——>选项——>Kits”构建套件设置页面。
  2. 首先其换到“Qt Version”,添加qmake,路径为:
/opt/Qt-5.14.2-arm/bin/qmake

海思AI芯片(Hi3559/Hi3516)开发(二):开发环境搭建——交叉编译和安装QT5_第1张图片

  1. 切换到编译器,添加C++和C编译器,其中C++编译器为:
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++

海思AI芯片(Hi3559/Hi3516)开发(二):开发环境搭建——交叉编译和安装QT5_第2张图片

  1. C编译器为:
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc

海思AI芯片(Hi3559/Hi3516)开发(二):开发环境搭建——交叉编译和安装QT5_第3张图片

  1. 切换到Debugers,添加海思的调试器:
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gdb

海思AI芯片(Hi3559/Hi3516)开发(二):开发环境搭建——交叉编译和安装QT5_第4张图片

  1. 最后,添加构建套件,选择刚才设置的Qt Version、编译器和调试器。
    海思AI芯片(Hi3559/Hi3516)开发(二):开发环境搭建——交叉编译和安装QT5_第5张图片

注:图中设备类型和设备均为桌面类型的设备,这个还没有更改,在后续的调试功能设置中再进行说明。

至此,QtCreator的基本设置完成。

创建测试工程

为了测试Qt库是否编译正常,现在可以创建一个Hello World工程。
在创建工程时选择“Qt Console Application”,并选择刚才添加的构建套件,编译生成Release版本的程序文件。
代码如下:

#include 

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    printf("hello hisi linux.\r\n");
    return a.exec();
}

把编译成功的文件通过nfs,复制到开发板上。

Qt库文件

除了可执行文件外,还需要把调用的Qt库文件复制到开发板上,如果在没有安装Qt库文件前直接运行编译的程序,会出现无法找到libQt5Core.so.5的提示。
opt/Qt-5.14.2-arm/lib目录中找到libQt5Core.so.5.14.2文件,注意一定要找到文件本身,而不是软连接文件(可以在控制终端中使用ll命令查看当前目录下的文件)。

libQt5Core.so.5.14.2通过nfs复制到开发板上的/usr/local/lib目录下,并创建软连接,命令如下:

cp /mnt/nfs/libQt5Core.so.5.14.2 /usr/local/lib
ln –s libQt5Core.so.5.14.2 libQt5Core.so.5

此时,上述的程序就能正常运行了。

后续工作

折腾这么多,运气好的话,已经可以勉强开发海思芯片上的程序了。但开发起来很不方便,不能自动部署程序,不能加断点调试程序等等,这些内容下一篇继续折腾。

参考文档

移植QT5.7到嵌入式ARM
https://blog.csdn.net/sunxiaopengsun/article/details/79473462

移植Qt5.5到arm开发板(全世界的问题我一个人碰完了)
https://blog.csdn.net/qq_41399894/article/details/86475472

你可能感兴趣的:(海思AI芯片)