0

0

怎么使用 Yocto 构建文件系统?

爱谁谁

爱谁谁

发布时间:2025-07-17 10:22:31

|

1013人浏览过

|

来源于php中文网

原创

  1. 简介

yocto项目采用一种更加强大和定制的途径来构建适合嵌入式产品的linux系统。yocto不仅仅是一个制作文件系统的工具,同时提供了一整套基于linux的开发和维护工作流程,使得底层嵌入式开发者和上层应用开发者可以在统一的框架下进行开发,解决了传统开发方式下零散和无管理的开发问题。

Yocto是一个开源的“umbrella”项目,意味着它包含了许多子项目。Yocto将所有这些项目整合在一起,并提供了一个参考构建项目Poky,用于指导开发人员如何应用这些项目来构建嵌入式Linux系统。它包括Bitbake、OpenEmbedded-Core、板级支持包以及各种软件包的配置文件。可以构建出满足不同需求的系统,例如带有Qt5.14图形库的100ask-image-qt系统,全功能命令行系统100ask-image-core,以及基于ST官方weston系统及100ask-image-weston的系统。

100ASK_STM32MP157提供了符合Yocto的配置文件,帮助开发者构建可烧写到100ASK_STM32MP157_PRO板上的Linux系统镜像。Yocto还提供了丰富的开发文档资源,供开发者学习并定制自己的系统。由于篇幅有限,本文无法完整介绍Yocto的使用,请用户自行上网搜索。

本节适合需要对文件系统进行深度定制的开发者,希望从Yocto构建出符合100ASK_STM32MP157系列开发板的文件系统,同时满足其定制需求。初次体验使用或无特殊需要的开发者可以直接使用MYD-YA157C提供的文件系统。为了加速Yocto构建,100ASK_STM32MP157已经将相关软件打包好,开发者可以直接解压使用,减少重复下载的时间。注意:构建Yocto时不需要加载工具链环境变量,请创建新shell或打开新的终端窗口。

注意:以2.5Ghz主频的4核处理器、DDR4 8GB内存和200GB磁盘空间为例,编译100ask-image-core可能需要至少5个小时,而编译带有QT或weston界面的系统镜像可能需要10个小时以上。Yocto的最小支持配置建议在2GB内存、2核2.5Ghz处理器和100GB磁盘空间上进行。

注意:执行一键配置环境脚本以安装部分依赖包,否则在编译时会报错。

  1. 配置编译

为了运行以下命令,请确保已正确配置编译环境:

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell$ DISTRO=openstlinux-eglfs MACHINE=100ask source layers/meta-100ask-st/scripts/envsetup.sh

怎么使用 Yocto 构建文件系统?

由于Yocto所需的软件包大部分保存在国外网站,国内下载速度较慢,因此需要单独拷贝资料光盘中的“07_Bsp_sdk (BSP包)/YoctoDunfell_Downloads.tar.gz”到“/home/book/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask”目录下,然后执行“tar -xvf YoctoDunfell_Downloads.tar.gz”等待解压完成,会生成一个downloads文件夹,内含所有Yocto下载所需的软件包。

继续执行编译命令:

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake 100ask-image-core

怎么使用 Yocto 构建文件系统?

编译完成后,生成的目录镜像位于“book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask/tmp-glibc/deploy/images/100ask”目录内。

  1. 扩展命令

3.1 单独编译某个包

例如,单独编译内核,需要先清除之前的编译缓存再进行编译:

手机在线人工冲值
手机在线人工冲值

说明:我不知道这个系统还能用到什么地方!他的运作方式是这样的,客户在其他地方比如掏宝购买了 你得卡,然后在你的网站进行冲值,你得有人登陆并看着后台,如果有人冲值,就会刷出记录,手工冲值完毕后,你得点击 [冲值完毕],客户的页面 就会返回 冲值信息!安装:上传所有文件,倒入(sql.txt)mysql数据库,使用myphpadminphplib 777phplib/sys.php 777phplib

下载
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake virtual/kernel -c cleansstate
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake virtual/kernel

编译某个包需要执行如下命令,其中pkg为包名,通常以.bb为后缀,加上-v参数可以输出编译详细信息:

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake <pkg> -v

3.2 编译 SDK

编译完系统后,可以执行如下命令生成SDK包,用于后续针对系统的应用开发:

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake meta-toolchain

编译完成后生成的压缩包通常位于“DISTRO/tmp-glibc/deploy/sdk”目录内。

3.3 其它命令

使用多线程编译,需要修改DISTRO里面的conf/local.conf配置文件,新增以下两个参数:

BB_NUMBER_THREADS ?= "8"
PARALLEL_MAKE ?= "-j 8"
  1. 深入学习 Yocto

目前国内针对Yocto的教程较为稀缺,可以参考Yocto官方提供的英文教程进行学习,资料网址为https://www.yoctoproject.org/docs/。可以优先阅读学习如下图红框所示的两份在线资料。

怎么使用 Yocto 构建文件系统?

有几本基于Yocto项目开发的书籍推荐阅读:

怎么使用 Yocto 构建文件系统?

国内有一位作者将左图中的《Embedded Linux Projects Using Yocto Project Cookbook》翻译成了中文版,国内可以在各大图书网站直接购买阅读。

怎么使用 Yocto 构建文件系统?

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
视频后缀名都有哪些
视频后缀名都有哪些

视频后缀名都有avi、mpg、mpeg、rm、rmvb、flv、wmv、mov、mkv、ASF、M1V、M2V、MPE、QT、VOB、RA、RMJ、RMS、RAM、等等。更多关于视频后缀名的相关知识,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

3860

2023.10.31

C++ Qt图形开发
C++ Qt图形开发

本专题专注于 C++ Qt框架在图形界面开发中的应用,系统讲解窗口设计、信号与槽机制、界面布局、事件处理、数据库连接与跨平台打包等核心技能,通过多个桌面应用项目实战,帮助学员快速掌握 Qt 框架并独立完成跨平台GUI软件的开发。

76

2025.08.15

C++ 图形界面开发基础(Qt方向)
C++ 图形界面开发基础(Qt方向)

本专题系统讲解 使用 C++ 与 Qt 进行图形界面(GUI)开发的核心技能,内容涵盖 Qt 项目结构、窗口组件、信号与槽机制、事件处理、布局管理、资源管理,以及跨平台编译与打包流程。通过多个小型桌面应用实战案例,帮助学习者掌握从界面设计到功能实现的完整 GUI 开发能力。

107

2025.12.05

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

763

2023.08.10

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

376

2025.12.24

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

27

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

28

2026.01.21

C# 多线程与异步编程
C# 多线程与异步编程

本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

103

2026.02.06

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 6.7万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.3万人学习

NumPy 教程
NumPy 教程

共44课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号