出于个人习惯,我喜欢使用QT来开发C++语言的应用程序,其IDE环境虽不是最优秀的,但是它的Qt程序库还是用起来很顺手,比STL好用的多。
接下来,将介绍在Ubuntu环境下交叉编译和安装Qt5的过程。
QtCreator是一个集成开发环境,类似于巨软的Visual Studio,当然比它简单和简洁许多。
具体下载和安装过程参见以下链接,基本上不会出现什么问题,这里就不再赘述。
https://blog.csdn.net/u013934107/article/details/80712418
这里使用最新的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
配置文件在以下目录中:(注意,这里有很多类型的配置文件,对应不同的系统和处理器)
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)
修改完成后保存退出。
在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
目录下。
/opt/Qt-5.14.2-arm/bin/qmake
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gdb
注:图中设备类型和设备均为桌面类型的设备,这个还没有更改,在后续的调试功能设置中再进行说明。
至此,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库文件前直接运行编译的程序,会出现无法找到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