itop-3568 开发板文件系统构建学习笔记(3)最小系统移植 QT 库

《【北京迅为】itop-3568 开发板文件系统构建手册v1.0.pdf》学习笔记

下载 QT 源码

QT 源码下载地址:https://download.qt.io/archive/qt/

我所下载的版本是 5.15.2:

在这里插入图片描述

编译 QT 库

解压源码

将 QT 源码压缩包复制到虚拟机开发环境中,使用 tar -vxf qt-everywhere-src-5.15.2.tar.xz 进行解压:

在这里插入图片描述

确认交叉编译器

确认当前环境变量中已经添加交叉编译器路径,

在这里插入图片描述

修改 qmake.conf

进入 qt 源码根文件目录,修改 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 文件,将 arm-linux-gnueabi 替换成我当前开发环境中使用的交叉编译器名称(如果用 vim 替换,可以参考下图),

在这里插入图片描述

该文件需要修改的地方包括下面两个区域,根据自己实际情况更改,

在这里插入图片描述

配置编译选项

编译项配置通过根目录下的 configure 配置,执行 ./configure --help 可以查看可配置项,

在这里插入图片描述

由于需要配置的项目太多,所以我们可以将需要的配置项写成一个脚本,创建 autoconfigure.sh,将下面的内容添加到该脚本内,

#!/bin/sh
./configure \
-v \
-prefix /opt/qt5.15.2 \
-confirm-license \
-opensource \
-release \
-xplatform linux-aarch64-gnu-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 \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/opt/tslib1.4/include \
-L/opt/tslib1.4/lib \
-recheck-all
exit

脚本中的 tslib 库可以暂时不加(我还没编译 tslib),保存该脚本后,使用 chmod 777 autoconfigure.sh 修改脚本权限,然后执行脚本,

在这里插入图片描述

配置完成,

在这里插入图片描述

编译源码

输入 make 进行编译,我没有使用多线程编译,花了 1.5 小时完成编译,

在这里插入图片描述
安装(生成QT库)

使用 make install 进行安装,由于前面的配置将 QT 库的安装路径放到了 /opt,是系统目录,所以要 root 权限,

在这里插入图片描述

下面是我使用 sudo make install 的结果,依然没成功,

在这里插入图片描述
原来是我配置的全局交叉编译器只在当前用户生效(~/.bashrc),所以使用 sudo aarch64-linux-gnu-xxx 会提示找不到命令,

在这里插入图片描述

解决办法是先使用 sudo -s(该命令可以使用 root 权限的同时,保留 ~/.bashrc 里的环境变量),然后直接 make install,

在这里插入图片描述

安装完成,

在这里插入图片描述

此时安装目录下有以下几个文件夹,

在这里插入图片描述

将 QT 库移植到文件系统

拷贝 QT 库

根文件系统是上一篇笔记中制作的,将刚才编译好的 QT 库复制到根文件系统的 /opt/ 目录下(没有该目录的话需要新建),

在这里插入图片描述

拷贝字库

字库文件需要我们手动复制,我们可以直接将 Windows 系统下的字库文件拷贝到最小系统中,

在这里插入图片描述

我将字库目录放到了根文件系统的 /lib 目录,

在这里插入图片描述

配置 QT 环境变量

下面的 QT 环境变量参考原文档,由于我还没移植 tslib,所以只添加了 QT 的基本环境变量,不包括触摸屏相关配置,

在这里插入图片描述

#QT 基本配置
export QT_ROOT=/opt/qt5.15.2
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts

将 rootfs 打包成镜像

移植完 QT 后,根文件系统已经由 64M 变为 719M,然后按照下面的步骤制作 rootfs.ext4,

在这里插入图片描述

将 rootfs.ext4 挂载到 rootfs/,然后将根文件系统的所有文件拷贝到 rootfs/,取消挂载后,将 roofs.ext4 复制成 rootfs.img,

在这里插入图片描述

最后,通过相关工具将 rootfs.img 烧录到开发板上。

测试 QT 库

这里我用 QT 的一个官方 demo 做测试,在虚拟机的 Qt Creator 软件上编译出一个可执行程序,然后拷贝到开发板上,

运行该程序,没有报缺库的错误,所以我们移植的 QT 库是没问题的,

在这里插入图片描述

程序虽然运行了,但却看不到字体,

在这里插入图片描述

原来是环境变量的配置出了问题,我并没有把字库文件放到 QT 库目录,而是放到了系统库目录,所以需要修改 QT_QPA_FONTDIR 环境变量值,

在这里插入图片描述

重启或者执行 source /etc/profile 后,再次运行 charactermap 例程,此时已经能够正常显示字体。

在这里插入图片描述

参考资源链接:[北京迅为iTOP-3568开发板源码编译手册(1.7版)详细教程](https://wenku.csdn.net/doc/kfj3486b5e?utm_source=wenku_answer2doc_content) 针对你的问题,我强烈推荐使用《北京迅为iTOP-3568开发板源码编译手册(1.7版)详细教程》,这是专门为了指导开发者在iTOP-3568开发板上进行操作系统源码编译而编写的。通过这份资料,你可以获得系统编译的全过程指导,以下是编译并更新Linux系统的步骤: 1. 获取源码:首先,你需要从官方渠道或者通过手册中提供的资源获取Linux源码包。确保下载的版本与iTOP-3568开发板兼容,并且是最新版。 2. 准备编译环境:根据手册,设置好编译环境,包括安装必要的依赖工具和,如make、gcc、binutils等。 3. 配置SDK包:按照手册中的说明配置SDK包,确保它与iTOP-3568开发板的硬件架构相匹配。这一步是关键,因为它会影响系统的性能和兼容性。 4. 编译源码:启动编译过程,根据手册中的指导,使用正确的命令来编译uboot、Linux内核和文件系统。确保遵循手册中的配置建议,如设置合适的屏幕分辨率和硬件配置。 5. 打包更新文件:编译完成后,你会得到一个包含新系统镜像的update.img文件。手册会教你如何将这个文件传输到开发板上进行更新。 6. 测试新系统:更新后,重启开发板并测试新系统。确保所有功能都正常工作,特别是屏幕显示和硬件接口。 整个过程需要注意手册中提及的各种配置细节,这些细节可能会影响编译过程和最终结果。《北京迅为iTOP-3568开发板源码编译手册(1.7版)详细教程》不仅提供了基础概念的解释,还涵盖了具体操作的每个步骤,是你进行iTOP-3568开发板Linux系统编译的宝贵资源。如果你希望在编译和更新Linux系统之后进行更深入的学习,手册的附录部分也包含了视频链接和其他学习资源,能够帮助你进一步掌握开发板的使用和定制化。 参考资源链接:[北京迅为iTOP-3568开发板源码编译手册(1.7版)详细教程](https://wenku.csdn.net/doc/kfj3486b5e?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小辉_Super

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

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

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

打赏作者

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

抵扣说明:

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

余额充值