ZYNQ系列的移植Qt5.12.12

  1. 下载安装通用交叉编译器

本教程是基于I.MX6ull的教程进行移植的,对应使用的版本是petalinux2018.3。如果大家的使用的petalinux版本为18.3的话,是可以直接使用Petalinux自带的交叉编译器。当然也可以使用的linaro官方提供的交叉编译器的版本7.3.1版本。

1.1下载通用交叉编译器

首先要下载上一小节说的版本号linaro官方提供的交叉编译器的版本7.3.1,下载地址:https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/arm-linux-gnueabihf/

这里使用的7020是32位的,所以下载的32位的即可。

1.2安装通用交叉编译器

将下载好的通用交叉编译器压缩包拷贝到Ubuntu虚拟机,解压进行安装。

在Ubuntu目录下创建/usr/local/arm文件夹,为下面安装到/usr/local/arm这个文件夹做准备。

        sudo mkdir/usr/local/arm

解压交叉编译器压缩包至/usr/local/arm目录下,稍等片刻,解压完成如下。

sudo tar xf gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar.xz-C /usr/local/arm/

使用vi指令编辑/etc/profile这个文件。

sudo vi /etc/profile

打开/etc/profile以后,在末尾添加如下所示内容。

exportPATH=$PATH:/usr/local/arm/gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf/bin

添加完成如下图,保存退出,重启系统。

1.3验证通用交叉编译器

要使用此编译器,还要在Ubuntu上安装一些库。

sudo apt-get installlsb-core lib32stdc++6

在1.2小节修改环境变量重启系统后,在终端输入arm-linux-gnueabihf-gcc -v来查看安装的交叉编译器版本号。看到如下结果,表明成功!

arm-linux-gnueabihf-gcc -v
  1. 获取和编译tslib

要想Qt支持触摸还需要编译tslib,以生成触摸相关插件。Tslib一般在嵌入式系统时用的多,基本的触摸插件都是它。当然还有xinput这样的插件,那是用于桌面系统的。嵌入式Qt一般用的都是Tslib。

2.1验证通用交叉编译器

获取 tslib 的源码,git 地址为https://github.com/kergoth/tslib

将压缩包发送到 Ubuntu 中并解压,得到名为“tslib-1.21”的目录,此目录下就是 tslib 源码。注意github有可能被更新源码导致出现bug。请使用资料盘里的tslib-1.21源码。

拷贝至Ubuntu虚拟机目录下,将其解压,得到tslib-1.21文件夹。

tar xf tslib-1.21.tar.gz

进入tslib-1.21文件夹下。

cd tslib-1.21

2.2编译tslib

生成Makefile,还需要安装以下软件。

sudo apt-get update                          
sudo apt-get installautoconf automake libtool
./autogen.sh

执行autogen.sh生成Makefile,以编译源码。

执行下面的指令指定我们上面第一章安装交叉编译工具与tslib编译输出路径/home/用户名/tools/tslib-1.21/arm-tslib。复制时请注意,下面是一条指令不分行,建议分段复制。注意不要多写空格。指令会检查编译器等是否会工作,如下图。

./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/用户名/tools/tslib-1.21/install

直接执行make编译及makeinstall安装。

make
make install

编译出现警告不用理会以,安装完成后在当前目录下生成一个install目录。也是我们上面指令的编译输出目录路径。可以查看生成目录下有以下内容。

查看编译的tslib文件类型,使用file指令。编译出来的tslib应为ARM格式,不能为X86格式,如果是X86格式就不能用于ARM开发板上了。那么说明你上一章的ARM交叉编译器环境没生效。请删除重新编译!

file bin/ts_test_mt

3.1编译ARM平台Qt5.12.12源码

本章简介如何下载Qt源码。编译出相应的Qt库。在Windows平台下的库,后缀一般都是dll,Linux平台的库后缀都是so。我们能看到的这些库都叫动态库。运行Qt应用程序就需要链接到这些动态库上面。正是因为有这些库的存在,Qt应用程序才能正常运行。

3.1.1 下载Qt5.12.12源码

我们可以在Qt下载地址https://download.qt.io/找到https://download.qt.io/archive/qt/5.12/5.12.12/single/,进入下载页面如下:

在Windows上下载好上面qt-everywhere-src-5.12.12.tar.xz源码拷贝到Ubuntu虚拟机下,或者直接右键上面的下载项,复制下载地址链接,在Ubuntu下直接使用wget指令下载。

在Ubuntu使用wget指令下载qt-everywhere-src-5.12.12.tar.xz源码如下。如果觉得慢,就在Windows下复制下载链接地址使用迅雷下载再拷贝到Ubuntu虚拟机吧!

wget https://download.qt.io/archive/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz

解压下载好的qt-everywhere-src-5.12.12.tar.xz源码压缩包。解压时间较长,请耐心等待。

tar -xfqt-everywhere-src-5.12.12.tar.xz -C ~/tools/

在当前目录出现qt-everywhere-src-5.12.12目录夹,此文件夹就是我们解压后的目录。进入此目录。

cd qt-everywhere-src-5.12.12/

3.1.2 修改qmake.conf

编辑mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf,配置相关编译器及路径。

vi qtbase/mkspecs/linux-arm-gnueabi-g++/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
QMAKE_CFLAGS += -O2 -mcpu=cortex-a9
QMAKE_CXXFLAGS += -O2 -mcpu=cortex-a9

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

# 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)

3.1.3 配置编译选项

查看编译选项,输入./configure -help指令,查看可配置选项。

./configure -help

由于配置较长,按需要编译,这里写了一个脚本。大家可以根据下面的步骤去建立一个脚本然后复制一下的内容。

./configure -prefix $(pwd)/../arm-qt\

-opensource \

-confirm-license \

-release \

-strip \

-shared \

-xplatform linux-arm-gnueabi-g++ \

-optimized-qmake \

-c++std c++11 \

--rpath=no \

-pch \

-skip qt3d \

-skip qtactiveqt \

-skip qtandroidextras \

-skip qtcanvas3d \

-skip qtconnectivity \

-skip qtdatavis3d \

-skip qtdoc \

-skip qtgamepad \

-skip qtlocation \

-skip qtmacextras \

-skip qtnetworkauth \

-skip qtpurchasing \

-skip qtremoteobjects \

-skip qtscript \

-skip qtscxml \

-skip qtsensors \

-skip qtspeech \

-skip qtsvg \

-skip qttools \

-skip qttranslations \

-skip qtwayland \

-skip qtwebengine \

-skip qtwebview \

-skip qtwinextras \

-skip qtx11extras \

-skip qtxmlpatterns \

-make libs \

-make examples \

-nomake tools \

-nomake tests \

-gui \

-widgets \

-dbus-runtime \

--glib=no \

--iconv=no \

--pcre=qt \

--zlib=qt \

-no-openssl \

--freetype=qt \

--harfbuzz=qt \

-no-opengl \

-linuxfb \

--xcb=no \

-tslib \

--libpng=qt \

--libjpeg=qt \

--sqlite=qt \

-plugin-sql-sqlite \

-I$HOME/tools/tslib-1.21/install/include \

-L$HOME/tools/tslib-1.21/install/lib \

-recheck-all

赋予脚本可执行权限。

chmod +x autoconfigure.sh

直接执行autoconfigure.sh。配置需要一段时间,请耐心等待!

sudo apt-get install g++ // 配置前请先安装g++
./autoconfigure.sh

配置成功

3.1.4 开始编译Qt5.12.12源码

直接执行make开始编译。

time (make -j 16)        // -j 16 代表最多允许 16 条编译指令同时运行,参数16,一般为个人分配给虚拟机的核心数的2倍,前面加个time是测试编译时间。

编译完成后,执行安装指令后,查看安装后的内容。

make install
ls arm-qt

至此,ZYNQ系列的Qt移植就完成了。如果移植遇到问题,可以评论或者私信找我要移植原文件,或者交流,移植文件是两个月之前的,最近在做学习PL相关内容,PS暂时摆烂了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伊藤诚诚诚诚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值