搜索

121

主题

128

帖子

665

积分

网站编辑

Rank: 8Rank: 8

积分
665
发表于 2021-6-17 12:29:55 9879 浏览 0 回复

iTOP-6818开发板QtE5.7系统编译

本帖最后由 翠花儿 于 2021-6-17 13:01 编辑

我们已经将编译好的QtE5.7文件系统放在了“iTOP6818开发板资料汇总(不含光盘内容)\04_iTOP-6818开发板QtE4.7_QtE5.7系统源码以及镜像\06_QtE5.7系统升级目录\20180511”目录下(日期可能有差异)。本小节主要包括以下内容:
                1 在 Ubuntu16.04 系统下搭建编译环境;
                2 在 Ubuntu16.04 系统下实现 uboot 和内核源码编译;
                3 在 Ubuntu16.04 系统下实现 QtE5.7 的编译;
                4 在 Ubuntu16.04 系统下实现 QtE5.7 镜像的打包编译。
迅为开发板可以支持 QtE5.7 系统,Qt5.7和Android使用的uboot和kernel用同一套源码编译。将 uboot 和内核在同一 Ubuntu 环境下编译,有助于提高开发效率。请注意,在 Ubuntu16.04 下是无法编译 Android 系统的,必须要使用 Android 编译章节对应的 Ubuntu 系统。
该章节用到的文件可以在网盘的“iTOP6818开发板资料汇总(不含光盘内容)\04_iTOP-6818开发板QtE和Qtopia系统源码以及镜像\05_QtE5.7镜像和源码以及编译器”文件中找到。
1 使用搭建好的环境
搭建好的ubuntu16编译环境在网盘“iTOP6818开发板资料汇总(不含光盘内容)\02_iTOP-6818开发板编译系统所需要的工具包等\02-Ubuntu系统安装包\06-搭建好开发环境的Ubuntu16.04虚拟机镜像”目录下。如果使用搭建好的编译环境,在简单的修改环境变量之后,就可以完成本章的编译。
2 编译uboot和kernel
Qt5.7uboot和kernel的配置和Android,QtE4.7通用,可参考“Android 5.1源码编译”或“13.3 编译uboot和kernel
内核需要配置缺省文件,进入解压出来的源码目录 android,然后进入 kernel 目录,使用命令“cp config_for_iTOP6818_linux .config”配置缺省文件。如下图所示。
进入“lollipop-5.1.1_r6”目录,使用“./build_android.sh qt”命令编译 qt 系统,编译完成后,如下图所示。
在 result 目录下生成镜像文件,U-boot-iTOP-6818.bin,Boot.img,system.img。
3 编译Qt5.7库
该章节用到的文件可以在网盘的“iTOP6818开发板资料汇总(不含光盘内容)\04_iTOP-6818开发板QtE4.7_QtE5.7系统源码以及镜像\05_QtE5.7镜像和源码以及编译器”文件中找到。
3.1 编译器版本
编译 QtE5.7 用到的编译器是“arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2”将编译器拷贝到“/usr/local/arm”目录下,并解压。
使用命令“cd”(一定要使用 root 账户),接着使用“vim .bashrc”命令,打开环境变量配置文件。修改环境变量配置文件最底行(取消注释),如下图所示。
接着还需要更新一下环境变量,如下图所示,使用命令“source .bashrc”。
最后做一下环境变量测试。重启下控制台后,在 Ubuntu 控制台中输入“arm-none-linux-gnueabi-gcc -v”,然后回车,会出现如下图所示内容。
3.2 编译触摸
首先安装工具,执行
sudo apt-get install autoconf
sudo apt-get install libtool  
解压源码 tslib-1.4.tar.gz,进入解压后的目录,然后执行如下命令。
./autogen.sh
./configure CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ --host=arm-none-linux-gnueabi --prefix=/opt/tslib1.4 ac_cv_func_malloc_0_nonnull=yes
make
make install
生成的文件安装到了ubuntu的/opt/目录下,执行“vim /opt/tslib1.4/etc/ts.conf ”,修改第二行如下:
保存退出。
3.3 编译QtE5.7源码
Qt5.7源码在“iTOP6818开发板资料汇总(不含光盘内容)\04_iTOP-6818开发板QtE4.7_QtE5.7系统源码以及镜像\05_QtE5.7镜像和源码以及编译器\iTOP-4412-QtE-移植QtE5.7系统\iTOP-开发板-QtE-移植QtE5.7系统qt-everywhere-opensource-src-5.7.0.tar.gz”,使用“tar -vxf qt-everywhere-opensource-src-5.7.0”命令解压 QtE5.7 源码,并进入解压生成的“qt-everywhere-opensource-src-5.7.0”目录。在“qt-everywhere-opensource-src-5.7.0”目录下,使用“ 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 = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC                = arm-none-linux-gnueabi-gcc
QMAKE_CXX               = arm-none-linux-gnueabi-g++
QMAKE_LINK              = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY          = arm-none-linux-gnueabi-objcopy
QMAKE_NM               = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-none-linux-gnueabi-strip
load(qt_config)
保存,退出。使用“vi autoconfigure.sh”命令,新建“autoconfigure.sh”脚本。脚本内容如下所示。
#!/bin/sh
./configure \
-v \
-prefix /opt/qt5.7.0 \
-release \
-opensource \
-make libs \
-xplatform linux-arm-gnueabi-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 \
-nomake examples \
-nomake tools \
-skip qtvirtualkeyboard \
-I/opt/tslib1.4/include \
-L/opt/tslib1.4/lib
exit
保存脚本,退出。使用命令“chmod 777 autoconfigure.sh”修改脚本权限,然后使用命令“./autoconfigure.sh”执行脚本,会有版本认证,如下图。
输入“yes”即可。接着使用编译命令“make”,之后使用安装命令“make install”。完成后,可以在“/opt”目录下可以查看到生成的“qt5.7.0”文件,如下图所示。
交叉编译Qt5.应用程序和自己制作文件系统打包过程中,会用到该文件。
4使用制作好的QtE5.7文件系统
制作好的Qt5.7文件系统在网盘的“iTOP6818开发板资料汇总(不含光盘内容)\04_iTOP-6818开发板QtE4.7_QtE5.7系统源码以及镜像\06_QtE5.7系统升级目录\20180511\iTOP-6818-QtE5.7_20180514.tgz”压缩包内。
将压缩包拷贝到ubuntu虚拟机,执行“tar -vxf iTOP-6818-Qt5.7_20180514.tgz”解压,得到的system文件夹内就是开发板的Qt5.7文件系统,可以在此基础上修改文件系统
回到上一级目录(qt_system目录),执行“make_ext4fs -s -l 314572800 -a root -L linux system.img system”即可生成镜像,如下图:
完成后生成可烧写的system.img镜像,
5 自己制作QtE5.7镜像
生成可以下载的 system.img 文件需要工具“mkimage”。
        用户使用已经搭建好的环境时,该工具已经给大家设置好,大家直接去看 7.2.4.2 小节即可。使用自己搭建的环境时,用户要严格按照如下步骤进行操作,若用户自己使用命令安装该工具,可能会因为版本问题,在打包或烧写时出现各种错误。
5.1 安装打包工具
工具在用户网盘“\iTOP6818 开发板资料汇总(不含光盘内容)\02_iTOP-6818 开发板编译系统所需要的工具包等\03_tools”文件夹下的压缩包“linux_tools.tgz”中。
        拷贝压缩包到 Ubuntu 系统的“/”目录下,注意目录是“/”。进入“/”目录,然后使用“tar -vxf linux_tools.tgz ”命令将压缩包解压。解压后,在“/usr/local/bin/”目录下生成了两个文件。如下图所示。
5.2 生成system.img镜像
首先执行apt-get install uboot-mkimage,安装mkimage
将刚才编译生成的“qt5.7.0”文件和“tslib1.4”触摸文件,拷贝到“/home/topeet/6818/android/qt_system/system/opt”目录下。(其中 android 目录是 android 源码解压出来的目录),并删除之前存在的“qt-4.7.1”和“Qtopia”目录。如下图所示。
将字库文件夹“fonts”拷贝到“opt/qt5.7.0/lib/”目录下(与下文“QT_QPA_FONTDIR”指定的路径一致)。(以“/home/topeet/6818/android/qt_system/system”目录为当前目录)将“libstdc.tar.gz”拷贝到“./lib”解压,并输入命令:
ln -s libstdc++.so.6.0.19 libstdc++.so.6
(使用上述链接命令时,如果显示文件已经存在,则继续向下执行即可),
将交叉编译器里arm-2014.05/arm-none-linux-gnueabi/libc/lib/路径下的库文件拷贝到开发板文件系统的/lib/路径下,库文件如下:
输入“cp * /home/topeet/6818-system/qt_system/system/lib/ -P”拷贝(路径根据实际情况修改):
修改环境变量“vim etc/profile”,如下所示
# Ash profile
# vim: syntax=sh
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[$USER@$HOSTNAME]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
export TSLIB_ROOT=/opt/tslib1.4
export QT_ROOT=/opt/qt5.7.0
export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_TSEVENTTYPE=input
export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf
export TSLIB_PLUGINDIR=/opt/tslib1.4/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=tslib:/dev/input/event2
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib:$TSLIB_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
export QT_QPA_GENERIC_PLUGINS=tslib
其中TSLIB_TSDEVICE要设置为实际的触摸节点。
保存,退出。修改开机启动脚本“vi etc/init.d/rcS”,注释掉“/bin/qt4 &”,并加上“/bin/qt5.7 &”。
将迅为提供的“qt5.7”文件拷贝到“bin”目录下,并修改 qt5.7 的权限为 777。
在“/home/topeet/6818/android/qt_system”目录下,使用:
make_ext4fs -s -l 314572800 -a root -L linux system.img system
生成“system.img”镜像文件。
至此,QtE5.7 的编译就全部完成了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

 
快速回复 返回顶部 返回列表