1.移植前准备:
QT源码下载:https://download.qt.io/archive/qt/ 下载文件:qt-everywhere-src-5.10.1.tar.xz
解压指令: tar -xvJf qt-everywhere-src-5.10.1.tar.xz J是替代指令 --xz
Ubuntu 已安装交叉编译工具:arm-linux-gnueabihf-g++
tslib 触摸屏开源包安装。TI AM335 EVM官方移植里好像没有用这个库,米尔移植文档里需要,根据需要自行选择。
2.QT编译:
修改对应平台配置文件,mkspecs目录下,是针对各个平台配置文件。编译和开发时需要使用。
#修改qmake的配置文件(如果是hf的就复制一下
cp -r qtbase/mkspecs/linux-arm-gnueabi-g++/ qtbase/mkspecs/linux-arm-gnueabihf-g++/)
vim 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
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
#*Flags from gcc-base.conf
QMAKE_CFLAGS += -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard
QMAKE_CXXFLAGS += -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabihf-gcc
QMAKE_CXX = arm-linux-gnueabihf-g++
QMAKE_LINK = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_NM = arm-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-linux-gnueabihf-strip
load(qt_config)
回到/qtbase目录,查询 configure 的参数。
./configure --help编写自动configure脚本:config.sh 如下:
#!/bin/sh
./configure \
-v \
-prefix /usr/arm-qt5.10 \
-platform linux-x86_64-g++ \
-sysroot /home/ping58/ti/ti-processor-sdk-linux-am335x-evm-04.02.00.09/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi \
-release \
-opensource \
-make libs \
-xplatform linux-arm-gnueabihf-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-no-opengl \
-skip qt3d \
-skip qtcanvas3d \
-skip qtpurchasing \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-iconv \
exit
配置gcc路径,清空环境变量。
export QMAKESPEC= export PATH=<path to recent GCC toolchain>/bin:<qt_target_install_folder>/qtbase/bin:$PATH
参考文章:
http://processors.wiki.ti.com/index.php/Building_Qt
https://blog.youkuaiyun.com/singleroot/article/details/54344873