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

  • Post author:
  • Post category:其他




概述

出于个人习惯,我喜欢使用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

保存后退出。

其中:


  • -prefix



    make 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

qmake路径设置

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

C++编译器设置

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

C编译器设置

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

在这里插入图片描述

  1. 最后,添加构建套件,选择刚才设置的Qt Version、编译器和调试器。

    在这里插入图片描述


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

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



创建测试工程

为了测试Qt库是否编译正常,现在可以创建一个Hello World工程。

在创建工程时选择“Qt Console Application”,并选择刚才添加的构建套件,编译生成Release版本的程序文件。

代码如下:

#include <QCoreApplication>

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



版权声明:本文为take_it原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。