hi3531d编译QT5.15.10源码
1.安装交叉编译工具链
1.工具链一般随开发板提供,我的交叉编译工具链是aarch64-himix200-linux.tar.gz
2.解压 交叉编译工具链
tar -xvf aarch64-himix200-linux.tar.gz -C /opt/hisi-linux/x86-arm
3.在~/.bashrc 最后一行添加环境变量
export PATH=$PATH:/opt/hisi-linux/x86-arm/aarch64-himix200-linux/bin
4.使环境变量生效
source ~/.bashrc
5.输入aarch64-himix200-linux-gcc -v
看交叉编译工具链是否可用
2.下载tslib源码和QT5.15.10源码
tslib是一个触摸屏的库
tslib地址
也使用git clone拉下来 git clone https://github.com/kergoth/tslib
QT5.15.10地址
3.编译tslib
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=aarch64-himix200-linux \
--prefix=/opt/hisi-linux/x86-arm/aarch64-himix200-linux/qt/Qt_arm5.15.10/tslib \
CC=aarch64-himix200-linux-gcc \
--cache-file=arm-linux.cache
make
make install
注意:将 --host=aarch64-himix200-linux和 CC=aarch64-himix200-linux-gcc 改成自己的交叉编译工具。–prefix指定的安装路径也能改成自己的。
4.QT库交叉编译
1.修改qt库的qmake.conf配置文件,在qt源码解压后的qtbase/mkspesc文件夹下,我的是linux-aarch64-gnu-g++,如果是32位的arm开发板,一般是linux-arm-gnueabi-g++。
tar -xvf qt-everywhere-opensource-src-5.15.10.tar.xz
cd qt-everywhere-src-5.15.10/qtbase/mkspecs
cd linux-aarch64-gnu-g++ //可改成你自己对应平台
vi qmake.conf
:%s/aarch64-linux-gnu/aarch64-himix200-linux //将其中的交叉编译工具改成自己的
:wq
2.配置qt库
在源码目录下新建一个config.sh的脚本文件
文件内容:
/configure -prefix /opt/hisi-linux/x86-arm/aarch64-himix200-linux/qt/Qt_arm5.15.10 \
-release \
-confirm-license \
-opensource \
-skip qt3d \ #取消QT3D功能,嵌入式设备一般来说性能不够
-skip qtactiveqt \
-skip qtcanvas3d \
-skip qtcharts \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdeclarative \
-skip qtgamepad \
-skip qtandroidextras \
-skip qtdoc \
-skip qtwebchannel \ #取消web功能,也是性能问题
-skip qtwebengine \
-skip qtwebglplugin \
-skip qtwebview \
-xplatform linux-aarch64-gnu-g++ \ #指定上一步的修改arm平台
-make libs \
-optimize-size \
-pch \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-pkg-config \
-no-separate-debug-info \
-nomake tests \
-nomake examples \
-nomake tools \
-no-sql-sqlite \
-no-iconv \
-pch \
-shared \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-tslib \
-I /opt/hisi-linux/x86-arm/aarch64-himix200-linux/qt/Qt_arm5.15.10/tslib/include \
-L /opt/hisi-linux/x86-arm/aarch64-himix200-linux/qt/Qt_arm5.15.10/tslib/lib \
-recheck-all \
-bundled-xcb-xinput #只能在5.15版本开启
exit
运行bash config.sh
配置QT
编译make -j16
安装make install
成功后在 /opt/hisi-linux/x86-arm/aarch64-himix200-linux/qt/Qt_arm5.15.10
路径下能看编译好的qt库了bin include lib mkspecs
5.测试运行
1.将上面编译好的qt加入到环境变量
1.vi ~/.bashrc
在最后一行加上
export QT_DIR=/opt/hisi-linux/x86-arm/aarch64-himix200-linux/qt/Qt_arm5.15.10
export PATH=$QT_DIR/bin:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin:/opt/hisi-linux/x86-arm/aarch64-himix200-linux/bin:$PATH▫
export MANPATH=$QT_DIR/man:$MANPATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QT_DIR/lib
export QT_SELECT=qt-5.15.10
2.source ~/.bashrc
使环境变量生效
3.写一个demo.cpp文章来源:https://uudwc.com/A/LR00o
#include <QCoreApplication>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
std::cout << "hello from Qt! \n";
return a.exec();
}
4.生成qt工程 qmake -project
5.生成Makefile qmake
6.编译 make
生成demo可执行程序
将编译好的demo和Qt_arm5.15.10/lib上传到开发板,运行。正常情况下,输出如下:文章来源地址https://uudwc.com/A/LR00o
./demo
hello from Qt!