Ubuntu下Yocto搭建QT环境+qt5交叉编译工具

注意:是否支持其他芯片尚不了解,xml文件中内容无法确定是否具有兼容性。

环境:Vmware虚拟机,Ubuntu20.04 ,虚拟机内存与核心数尽可能大否则可能编译不过(个人:11G+4核)

目录

一、编译环境配置 

首先安装依赖环境:

1.安装repo

2.配置manifest

3.创建仓库,将default.xml文件放入仓库中

4.初始化仓库

5.代码同步

二、bitbake编译环境安装

1. 进入bstos目录下,配置环境

2.初始化编译环境

3.构建组件包

 4.构建QT5交叉编译工具 

三、配置交叉编译工具环境

1.执行QT5编译环境脚本

2.使能路径下的编译工具:

3. 交叉编译环境搭建完成

编译过程中踩过的坑


一、编译环境配置 

首先安装依赖环境:

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

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值