详细Qt5.9.5移植攻略

目标芯片:V3S

下载qtcreator
wget https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qtcreator/
下载qt5.9
https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.9/5.9.1/single/

官网下载源码包
下载qt-everywhere-opensource-src-5.9.5.tar.xz,这里选择下载的是xz格式的源码包,而不是将源码和qtcreator打包好的run文件。因为试过run文件,一方面文件太大,另一方面安装得到的源码包和xz格式的有一些不同,比如找不到qt base,影响到后续的配置,所以最好选择xz格式。

解压
xz -d qt-everywhere-opensource-src-5.9.5.tar.xz
tar xvf qt-everywhere-opensource-src-5.9.5.tar
配置交叉编译器的路径
(如果使用的是Ubuntu12.04,需要将gcc升级到4.8以上)
因为Qt5.9.5支持C++11,所以编译器版本需要高于4.8以上,我采用了4.8.3版本编译器。
修改~/.bashrc 文件,在系统环境变量PATH中添加交叉编译器的路径。(路径以实际路径为准)
export PATH=/home/ubuntu1404/work/arm-2014.05/bin:$PATH
查看交叉编译器的路径是否已经添加到系统环境变量PATH中。
可以查看交叉编译器的版本号:
arm-none-linux-gnueabi-gcc-v
如果能够正常显示出交叉编译器的版本号,恭喜你,第一步已经成功了!
详细Qt5.9.5移植攻略_第1张图片
Qt5.9.5的交叉编译
指定目标平台的架构和交叉编译器的类型
Qt5中针对不同的目标平台都有相应的配置文件夹,只需修改对应目标平台文件夹中的配置文件qmake.conf。
cd qt-everywhere-opensource-src-5.9.5
vi 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_QPA_DEFAULT_PLATFORM = linuxfb                 #指定Qt显示驱动方式
QMAKE_CFLAGS_RELEASE   += -O2 -march=armv7-a      #指定处理器架构
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a 



#tslib
QMAKE_INCDIR =/usr/tslib4arm/include
QMAKE_LIBDIR =/usr/tslib4arm/lib
QMAKE_LFLAGS =-WI,-rpath,/usr/tslib4arm/lib


include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -lts

# modifications to linux.conf
QMAKE_AR                = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar cqs 
QMAKE_OBJCOPY           = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM                = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip
load(qt_config)

这里修改了两个地方,一是定义了arm的架构,其中:QT_QPA_PLATFORM是指定QPA平台的插件,这里选择的是linuxfb,参数-O是编译器提供的优化选项,如-O、-O1、-O2、-O3等,代表不同的优化级别,参数-march后面指定的是目标处理器的架构(可能指定不同的架构会调用不同的指令集,猜的~);另外一个改动的地方就是将下面g++.conf和linux.conf中的参数值中加上了fsl,如arm-none-linux-gnueabi-gcc,这是我选择的交叉编译器,可以根据自身的情况修改。

如果要加入tslib:
qmake.conf中添加如下内容(让交叉编译工具链能找到tslib的库和头文件):

#tslib
QMAKE_INCDIR =/usr/tslib4arm/include
QMAKE_LIBDIR =/usr/tslib4arm/lib
QMAKE_LFLAGS =-WI,-rpath,/usr/tslib4arm/lib

根据需求配置Qt
配置Qt可以通过源码包中configure脚本来完成,运行configure脚本后会得到makefile文件,然后通过make和make install命令完成编译和安装。这里我编写了一个脚本来实现配置的步骤。
详细Qt5.9.5移植攻略_第2张图片

#!/bin/sh
./configure \
    -v \
-prefix /opt/qt-arm-5.9.5-a20 \
-release \
-opensource \
-no-accessibility \
-make libs \
-xplatform linux-arm-gnueabihf-g++ \
-linuxfb    \
-optimized-qmake \
-pch \
-qt-libjpeg \
-qt-libpng \
-sql-sqlite \
-qt-zlib \
-tslib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-recheck-all \
-no-separate-debug-info \
-I/opt/tslib/include -L/opt/tslib/lib

编译和安装
终于可以编译了,执行make&&make install命令,然后开始漫长的编译过程,整个过程持续大概2个小时。

详细Qt5.9.5移植攻略_第3张图片

配置开发板环境并运行程序

修改/etc/QtEnv文件,设置开发板的环境变量,文件末尾添加的内容如下:

export LD_LIBRARY_PATH=/opt/Qt5.9.5_arm_install/lib

export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt5.9.5_arm_install/plugins

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0

export QT_QPA_FONTDIR=/opt/Qt5.9.5_arm_install/lib/fonts

  1. 编译输入法程序

将QtSoftKeyboard2018-03-03.zip拷贝到目录下解压

添加qmake到环境变量

export QTEDIR=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install:$QTEDIR

export PATH=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install/bin:$PATH

export LD_LIBRARY_PATH=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install/lib: LD_LIBRARY_PATH

生成Makefile和编译

#qmake

#make

报错
在这里插入图片描述
将/home/ubuntu1404/work/arm-2014.05/arm-none-linux-gnueabi/libc/lib/下的所有文件拷贝

到开发板的/lib/目录下

Qt界面不显示中文

将FZYTK.TTF文件拷贝到/opt/Qt5.9.5_arm_install/lib/fonts下没有fonts需创建

警告
在这里插入图片描述

解决方法

移植libiconv-1.14

./configure -prefix=$PWD/install -host=arm-none-linux-gnueabi

Make &&make install

将安装目录下lib目录下的preloadable_libiconv.so拷贝到开发板/system/lib目录下

添加环境变量export LD_PRELOAD=/system/lib/preloadable_libiconv.so

至此,Qt移植就已经大功告成了!

你以为我们提供教程就这些?当然不是了,Qt Creator的安装配置运行过程继续了解下!

安装Qt creator

。。。省略

你可能感兴趣的:(❏【QT移植】)