环境介绍:
- Host:ubuntu 18.04
- 交叉编译器: linux-arm-gnueabihf-gcc
- TargetBorad :A33
- QT版本:Qt5.9.6
1.下载qt源码并解压
wget https://download.qt.io/archive/qt/5.9/5.9.6/single/qt-everywhere-opensource-src-5.9.6.tar.xz
tar -xJvf qt-everywhere-opensource-src-5.9.6.tar.xz
2.下载交叉工具链并解压,申明工具链路径
wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabihf/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz
sudo tar -xJvf gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt
export PATH=$PATH:/opt/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf/bin
arm-linux-gnueabihf-gcc -v
mkspecs添加linux-arm-gnueabihf
cd qt-everywhere-opensource-src-5.9.6/qtbase/mkspecs/
cp linux-arm-gnueabi-g++ linux-arm-gnueabihf-g++ -rfd
cd linux-arm-gnueabihf-g++
vi qmake.conf
QT_QPA_DEFAULT_PLATFORM = linuxfb
若需更改交叉工具链名称,需要在qmake.conf更改,这里是将arm-linux-gnueabi更改为arm-linux-gnueabihf
3.建立编译目录,编写编译脚本autorun.sh
mkdir buildQt596
cd buildQt596
vi autorun.sh
#! /bin/bash
../qt-everywhere-opensource-src-5.9.6/configure \
-prefix /opt/Embedded-Qt5.9.6 \
-confirm-license \
-opensource \
-shared \
-strip \
-release \
-c++std c++11 \
-make libs \
-xplatform linux-arm-gnueabihf-g++ \
-optimized-qmake \
-pch \
-linuxfb \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-sql-sqlite \
-evdev \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-separate-debug-info \
-make examples -nomake tools -nomake tests -no-iconv \
-recheck-all
4.编译,安装
./autorun.sh
make -j16
make install
编译完成后目录如下:
bin examples lib plugins doc include mkspecs qml translations
目标主机只需要lib qml plugins, profile申明QT环境变量
QT_ROOT=/opt/Embedded-Qt5.9.6
export QML2_IMPORT_PATH=$QT_ROOT/qml
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmsize=0x0:offset=0x0
#export QT_VIRTUALKEYBOARD_PINYIN_DICTIONARY=$QT_ROOT/qtvirtualkeyboard/pinyin/dict_pinyin.dat
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/imageformats:$LD_LIBRARY_PATH