注意:是否支持其他芯片尚不了解,xml文件中内容无法确定是否具有兼容性。
环境:Vmware虚拟机,Ubuntu20.04 ,虚拟机内存与核心数尽可能大否则可能编译不过(个人:11G+4核)
目录
一、编译环境配置
首先安装依赖环境:
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm
1.安装repo
请参考:git-repo | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
2.配置manifest
文件名:default.xml
<?xml version="1.0" encoding="UTF-8" ?>
<manifest>
<!-- open source git -->
<remote name="openembedded" fetch="git://github.com/openembedded/" />
<remote name="github" fetch="https://github.com/" />
<remote name="yocto" fetch="git://git.yoctoproject.org" />
<!-- open source code -->
<project name="openembedded-core" remote="openembedded"
path="bstos/openembedded-core"
revision="952bfcc3f4b9ee5ba584da0f991f95e80654355a" />
<project name="bitbake" remote="openembedded"
path="bstos/openembedded-core/bitbake"
revision="18d4a31fdcec1f0e5d2199d6142f0ce833fca1a7" />
<project name="meta-openembedded" remote="openembedded"
path="bstos/meta-openembedded"
revision="8d5dcd6522e9d15e68637b6d7dda0401f9bb91d0" />
<project name="meta-qt5/meta-qt5" remote="github" path="bstos/metaqt5" revision="warrior" />
</manifest>
3.创建仓库,将default.xml文件放入仓库中
创建一个git仓库,将default.xml放入仓库中,记下仓库地址
4.初始化仓库
repo init -u <步骤3的清单代码库地址> -m <.xml文件,默认default.xml>
5.代码同步
#由于网络原因可能失败,可能多次同步
repo sync
二、bitbake编译环境安装
1. 进入bstos目录下,配置环境
echo 'PACKAGECONFIG_DEFAULT += " gles2 examples"'> meta-qt5/recipes-qt/qt5/qtbase_%.bbappend
echo 'SRCREV = "1089546e8c47b59b42356d1c75651d082ce300dc"' > meta-qt5/recipes-qt/qt5/qtwayland_%.bbappend
ll meta-qt5/recipes-qt/qt5/*.bba*
2.初始化编译环境
#初始化环境
. ./openembedded-core/oe-init-build-env
#添加qt5 layer
bitbake-layers add-layer ../meta-qt5/
#增加wayland⽀持, 去掉X11⽀持
echo 'DISTRO_FEATURES_remove = " x11" '>> conf/local.conf
echo 'DISTRO_FEATURES = " wayland opengl vulkan pam" ' >> conf/local.conf
echo 'MACHINE = "qemuarm64" ' >> conf/local.conf
#增加src cache配置
echo 'BB_SRCREV_POLICY = "cache"' >> conf/local.conf
3.构建组件包
#编译qtbase
bitbake qtbase
#编译qtwayland
bitbake qtwayland
编译时间,随缘吧。
4.构建QT5交叉编译工具
#构建qt交叉编译工具
bitbake meta-toolchain-qt5
编译时间同样随缘吧。
图中警告由于中途编译失败,重新清理编译后通过。
三、配置交叉编译工具环境
1.执行QT5编译环境脚本
进入bstos中的相应路径并执行脚本文件:
执行/bstos/build/tmp-glibc/deploy/sdk/oecor-x86_64-aarch64-toolchain-nodistro.0.sh
执行后回车,默认路径,或者个人指定。
2.使能路径下的编译工具:
3. 交叉编译环境搭建完成
#查看qmake版本
qmake -v
编译过程中踩过的坑
由于编译过程特别长,这里不做复现,只是说一下编译过程中可能碰到的错误。一般报错,可以先看图中红框中是哪个模块出的问题,然后可以去相应路径下看log文件。
1. 上图qemu-native_3.1.0模块错误。原因:log中某些参数不匹配,具体修改请参考如下网址:
QEMU 3.1.0安装手记 - SegmentFault 思否
2.qtquickcontrols2模块与qtwebkit模块错误。具体原因不清楚,有可能是版本问题,也有可能是内存空间开的不够大。
碰见编不过的情况,通过如下操作可解决多数问题。
版本问题解决办法尝试:
编译之前可以清一清
bitbake -c clean -v (模块名字,格式如qtbase,qtquickcontrols2)
单独编译qtbase
bitbake -c compile -f -v (模块名字,格式如qtbase,qtquickcontrols2)
内存等问题解决办法尝试:
# 数据段长度无限制
ulimit -d unlimited
#最大内存大小无限制ulimit -m unlimited
#堆栈大小无限制ulimit -s unlimited
#core文件大小无限制
ulimit -c unlimited