概述
Yocto开发讲解系列总纲
- Yocto开发专栏前言
- Yocto开发专栏总目录
- 快速上手
- Yocto理论篇
- Metadata Layer
- BitBake工具
- Toolchain或交叉编译器
- Linux内核和驱动模块
- 文件系统相关
- devtool开发工具
- Toaster使用
- ARM相关的BSP
- bb文件编写知识
- conf配置
- 实际平台举例
- 技巧篇汇总
- 实战篇汇总
- Yocto编译问题汇总
Yocto开发专栏前言
欢迎读者盆友光临fulinux
的《Yocto开发讲解系列》专栏!
本小编有10年软件开发经历和丰富的Yocto
开发经验,我最早接触Yocto是在做Freescale
的imx6
平台的时候,那个时候也是瞎折腾,压根就搞不清楚Yocto里的软件代码怎么改,怎么添加自己的软件项目,没有深入去研究。也仅仅是“挪用”yocto编译出来的一些库和程序、文件系统或者Toolchain
SDK来满足自己的项目需求,甚至那个时候觉得还是自己的项目构建系统比较简单好用。虽然有心想研究Yocto,但是太大、太难、太复杂了,想入门都找不到门在哪,也仅仅是浅尝辄止~。但是,四年前由于实际开发要求,我又一次开始接触Yocto,感受到了他的强大和价值,决心好好系统的研究它。这期间付出了大量的时间和精力,真是让人头秃过程呐!不过现在来看Yocto真的的是太棒了,也不是那么难,对于我们做软件开发的盆友们而言简直就是福音,省去了我们交叉编译每个软件项目的时间,又容易将我们的成果固化下来,使我们的项目更加的规范和标准化(国外有很多Yocto开发人员哦)。对于开发者而言,仅仅两条终端命令即可编译出我们需要的所有镜像文件。从此,不必再纠结交叉编译的问题,公司也不必担心某个程序员离职导致项目开发无法继承的问题,即使一个N年之后没有接触的项目,仍然可以快速上手、编译和刷机运行。
我写本系列的文章也是在实际需求的驱动下,在边开发的过程中边记录和讲解,尽可能使自己处于一张白纸的基础出发和大家一起从Yocto入门到深入研究,每一篇博文尽可能带着问题出发,落实到具体的实例,结合理论和注释讲解,并将自己折腾的过程记录下来。
我想很多朋友都在思考本专栏是否能解决我的问题,是否适配我的硬件平台,我的回答是肯定的。而且为了不局限于某个特定的硬件平台和环境,本专栏从Yocto自带的官方x86-64 qemu
虚拟机平台上开发和示例演示,qemu
虚拟机的好处是不需要借助除了电脑之外的其他硬件环境,只要一台电脑就可以开始我们的Yocto学习和开发。
本专栏我会涉及到的一些技术和知识点,包括C/C++语言、shell、python、Qt5/QML和网络等知识,技能包括vim、git、makefile、cmake、autotools、Android、gcc/gdb和toolchain SDK等方面的技能。当然,我会在文中也会尽可能照顾到小白盆友,尽可能讲解我这么做的理由和对代码的注释。当然对于小白盆友能掌握掌握一门C语言和Linux基础操作也可以开始我们的yocto之旅。
技术和知识点都是在漫长的过程中积累起来的,重要的我觉得是一些精神品质方面的东西:较真、能折腾和不屈不挠的品质,归纳演绎、对比和逆向的思维方式。我在写本文的过程中遇到很多的坎和高山,我私下都是花了很久的时间折腾,有时候近乎绝望都要放弃了,但是还是坚持了下来了,就是希望给读者盆友呈现的是一个完整优美的演绎过程,而不是将就得过且过。有很多时候我们不怕问题本身,就是怕不知道问题是什么,无法描述,导致无法求助于网络或者他人。我希望大家在使用Yocto的过程中遇到问题时,需要善于找示例,有时候千言万语都不及一个好例子,并从中发现要点。解决问题的方向可以是多方面的,这个反向攻不破可以尝试从其他方向入手,进而对比找出问题出在哪里。读者盆友在阅读本专栏的博文的过程中遇到任何的问题和疑惑,都可以在讨论区提出来,我都会尽可能的回复和帮助解决,而不是当个高冷的博主。
我后续还会对本专栏进行系统的归类、校对和查错,尽可能丰富博文,让每一篇文档都做到理论和实践相结合,做到有的放矢、深入浅出。从问题和实际需求出发,分析问题,解决问题、并做相应的归纳和总结。
Yocto开发专栏总目录
本篇博文主要是为了方便新老读者朋友了解和查阅本专栏,将该系列进行科学分类和提取关键词,尽可能为每篇博文写个概述和要解决什么问题。
快速上手
下面几篇是用来带着大家快速上手的,熟悉下yocto。教大家如何搭建环境、安装必备的软件包,下载Yocto源码,download目录修改、开始编译,并演示运行qemu虚拟机,以及不带显示器如何登陆qemu虚拟机:
Yocto系列讲解[入门篇] 1 - 开始qemux86-64虚拟机的构建
Yocto系列讲解[入门篇] 2 - qemux86-64虚拟机运行演示
- 关键词:yocto qemu bitbake 入门
Yocto理论篇
让大家对Yocto有个简单的认识,介绍一些概念、目录、工具和变量等:
yocto系列讲解[理论篇]68 -Yocto版本信息查询稳定版本和EOL版本
yocto系列讲解[理论篇]6 - 什么是yocto理论篇
yocto系列讲解[理论篇]21 -yocto项目的概念(1)
yocto系列讲解[理论篇]22 -yocto项目的概念(2)
yocto系列讲解[理论篇]69 - Yocto-3.4新版本honister语法修改方法
Yocto系列讲解[理论篇]76 - 某些小技巧简单札记
- 关键词:bitbake recipe class 用户配置 Distro BSP Software Layer 版本 honister
Metadata Layer
介绍meta layer的一些知识和示例:
yocto系列讲解[理论篇]56 - poky下目录结构
yocto系列讲解[理论篇]57 - 如何快速搜索和查找
yocto系列讲解[理论篇]3 - 添加已有硬件层实例
yocto系列讲解[理论篇]4 - 创建自己的meta layer
yocto系列讲解[理论篇]5 - 在meta-mylayer中添加helloworld recipe
- 关键词:
poky
bitbake
meta
layer
model
create
mylayer
BitBake工具
介绍bitbake、构建全过程、使用到的变量和任务,实战演示等:
yocto系列讲解[理论篇]23 - BitBake全过程(1)
yocto系列讲解[理论篇]24 - BitBake全过程(2)
yocto系列讲解[理论篇]25 - BitBake全过程(3)
yocto系列讲解[理论篇]26 - BitBake全过程(4)
yocto系列讲解[理论篇]27 - BitBake全过程(5)
- 关键词:
source、SRC_URI、DL_DIR、SRCREV、image和SDK、PACKAGE_、DEPLOY_、do_fetch、do_unpack、PN/PV/PR/S/WORKDIR、do_patch、FILESPATH、do_prepare_recipe_sysroot、do_configure、EXTRA_OECONF、EXTRA_OECMAKE、EXTRA_OEMAKE、CFLAGS/CXXFLAGS、do_compile、do_install、do_package、do_packagedata、PKGD、PKGD*、STAGE_DIR_HOST、STAGING_DIR_NATIVE、STAGING_DIR_TARGET、FILES等变量
Toolchain或交叉编译器
介绍如何生成Toolchain SDK,安装,和实战演示:
yocto系列讲解[实战篇]28 - 应用开发的SDK或toolchain或gcc
yocto系列讲解[实战篇]66 - 设备的文件系统中安装gcc
Yocto系列讲解[技巧篇]90 - toolchain交叉编译器SDK中安装的软件
- 关键词:toolchain SDK gcc arm-linux-gcc 交叉编译器
Linux内核和驱动模块
介绍Yocto中的Linux kernle和driver module驱动模块:
yocto系列讲解[实战篇]29 - 源码树外添加Linux驱动模块(hello驱动实例)
yocto系列讲解[实战篇]31 - Linux kernel相关的任务
yocto系列讲解[实战篇]32 - qemu Linux kernle默认的配置
yocto系列讲解[实战篇]33 - 如何修改linux内核源码和添加补丁文件
yocto系列讲解[实战篇]74 - 用Kbuild构建外部Linux驱动模块组
- 关键词:Linux kernel driver hello module bb mylayer recipe modprobe rmmod defconf menuconfig device tree dts dtb devtool layer
文件系统相关
介绍文件系统相关的内容:
yocto系列讲解[实战篇]30 - 创建只读根文件系统
yocto系列讲解[实战篇]35 - 添加一个新的10M大小的镜像文件
yocto系列讲解[实战篇]58 - 程序开机自启动
yocto系列讲解[实战篇]67 - 在etc/passwd和etc/group文件中添加用户和组等信息
- 关键词:rootfs only-read 只读 分区大小 image
devtool开发工具
介绍devtool工具,举了一个helloyocto和git项目的的例子,来演示如何添加和修改软件项目,以及如何集成。
yocto系列讲解[实战篇]7 - 开发工具devtool实操(helloyocto)
yocto系列讲解[实战篇]8 - 开发工具devtool实操(添加git项目learnyocto)
yocto系列讲解[实战篇]9 - 将软件包打包到qemux86-64机器的文件系统中和devtool finish命令
yocto系列讲解[实战篇]10 - 在线部署软件到机器上
yocto系列讲解[实战篇]11 - 删除在线部署到机器上的软件
yocto系列讲解[实战篇]12 - 如何修改开源项目的代码呢?
yocto系列讲解[实战篇]13 - 修改workspace目录路径(create-workspace)
yocto系列讲解[实战篇]14 - devtool edit-recipe命令(编辑bb文件命令)
yocto系列讲解[实战篇]15 - devtool update-recipe命令
yocto系列讲解[实战篇]16 - devtool upgrade命令
yocto系列讲解[实战篇]17 - devtool latest-version命令
- 关键词:devtool add modify helloyocto learnyocto workspace qemu finish bb edit-recipe update-recipe upgrade version vim 开源项目 删除 打包
Toaster使用
介绍Toaster,讲解Yocto如何借助Toaster网页在线直观使用。
yocto系列讲解[技巧篇]18 - Toaster使用技巧(1)
yocto系列讲解[技巧篇]19 - Toaster使用技巧(2)
yocto系列讲解[技巧篇]20 - Toaster使用技巧(3)
- 关键词:toaster 网页 在线 调试
ARM相关的BSP
结合一个ARM的beaglebone虚拟机,讲述相关的kernel u-boot等BSP知识和配置
yocto系列讲解[入门篇]36 - 编译arm虚拟机qemuarm
yocto系列讲解[入门篇]37 - 编译可以在beaglebone开发板上运行的镜像
yocto系列讲解[入门篇]38 - beaglebone-yocto.conf配置分析之PREFERRED_PROVIDER变量
yocto系列讲解[入门篇]39 - beaglebone-yocto.conf配置分析之MACHINE_EXTRA_RRECOMMENDS变量
yocto系列讲解[入门篇]40 - beaglebone-yocto.conf配置分析之u-boot
yocto系列讲解[入门篇]41 - beaglebone-yocto.conf配置分析之kernel
- 关键词:arm machine qemu local.conf build 编译 work beaglebone PREFERRED PROVIDER virtual/kernel meta-yocto-bsp 目录 device tree dtb MACHINE_EXTRA_RRECOMMENDS u-boot UBOOT* SERIAL_CONSOLES ?= ??= := DEFAULTTUNE tune KERNEL_IMAGETYPE KERNEL_DEVICETREE KERNEL_EXTRA_ARGS MACHINE_FEATURES IMAGE_BOOT_FILES
bb文件编写知识
介绍bb、bbappend、bbclass、inc文件相关知识和实践
yocto系列讲解[实战篇]42 - bb文件中的几个关键词require DEPENDS inherit
yocto系列讲解[实战篇]34 - 旧版的yocto或者devtool使用不了时如何修改开源项目源码
yocto系列讲解[实战篇]43 - bb文件中函数实操演示(1)
yocto系列讲解[实战篇]44 - bb文件中函数实操演示(2)
yocto系列讲解[实战篇]45 - bb文件中函数实操演示(3)继承自己的class
yocto系列讲解[实战篇]46 - 如何添加自己的函数作为recipe的任务
yocto系列讲解[实战篇]47 - bb文件中如何获取源码或指定本地目录
yocto系列讲解[变量篇]63 - SRC_URI和SRC_DIR的区别
yocto系列讲解[技巧篇]64 - bb文件中字符串拆分和拼接简单示例
- 关键词:bb append bbclass inc inherit require DEPENDS vim 修改 shell python 函数 function do_* 继承 class 类函数 recipe 任务 addtask deltask nostamp noexec EXTRNALSRC git download wget fetch FILESEXTRAPATHS
SRC_URI
SRC_DIR
字符串处理
split
conf配置
介绍meta*/conf/machine目录中的一些配置内容讲解
yocto系列讲解[理论篇]48 - meta目录中conf里的配置项小札
- 关键词:DISTRO VARIANT PACKAGE_DEBUG_SPLIT_STYLE SERIAL_CONSOLE ARM_INSTRUCTION_SET FULL_OPTIMIZATION ENABLE_BINARY_LOCALE_GENERATION USE_LDCONFIG PREFERRED_VERSION USE_DEVFS DEPLOY_DIR_IMAGE PACKAGE_ARCH ARCH
实际平台举例
结合自己的高通平台msm8909来讲述如何完成boot、system和aboot等镜像从无到有的制作
yocto系列讲解[实战篇]51 - 实战举例之制作boot.img
yocto系列讲解[实战篇]52 - 实战举例之制作system/rootfs文件系统
yocto系列讲解[实战篇]53 - 实战举例之制作bootloader
yocto系列讲解[实战篇]65 - system根文件系统大小问题
- 关键词:kernel qcom qualcomm apq8009 msm8909 msm boot.img mkbootimg libmincrypty native defconfig dts zImage-dtb zImage ext4 system rootfs 文件系统 virtual/kernel virtual/bootloader multiple definition Error code 302e bb.utils.contains python python3 HOSTTOOLS aboot lk
技巧篇汇总
yocto系列讲解[技巧篇]72 - BBCLASSEXTEND变量的作用
yocto系列讲解[技巧篇]75 - 创建自己的manifest并使用repo工具
Yocto系列讲解[技巧篇]77 - 用Package Groups的方式控制安装软件包组
yocto系列讲解[技巧篇]78 - 如何消除meta layer之间的依赖关系问题
Yocto系列讲解[技巧篇]81 - 如何打patch修复打补丁出错的recipe
Yocto系列讲解[技巧篇]82 - 静态库编译问题
实战篇汇总
Yocto系列讲解[实战篇]49 - 编译问题汇总及解决方案
Yocto系列讲解[实战篇]54 - 添加Qt5和生成带Qt5的SDK
Yocto系列讲解[实战篇]55 - 编译Qt程序和添加Qt的recipe(bb文件)
Yocto系列讲解[实战篇]58 - 程序开机自启动(sysvinit/init)
Yocto系列讲解[实战篇]59 - 程序开机自启动(systemd)
Yocto系列讲解[实战篇]60 - 定义自己的临时配置模板的目录
Yocto系列讲解[实战篇]70 - meta-iotedge移植笔记
Yocto系列讲解[实战篇]71 - busybox配置相关内容
Yocto系列讲解[实战篇]73 - 编译dtbo和制作dtbo.img镜像包
Yocto系列讲解[实战篇]74 - 用Kbuild构建外部Linux驱动模块组
Yocto系列讲解[实战篇]79 - 如何优雅的创建一个API接口项目
Yocto系列讲解[实战篇]80 - 如何优雅的引用API接口项目
Yocto系列讲解[实战篇]84 - systemd中mount文件的一点知识
Yocto系列讲解[实战篇]85 - 制作ubi镜像和自动挂载ubifs文件系统
- 关键词:Qt5 systemd sysvinit init conf templateconf conf.sample iotedge 微软 busybox BBFILE_COLLECTIONS
Yocto编译问题汇总
Yocto系列讲解[编译篇]83 - 解决编译gstreamer1.0问题
- to be continue ~
给我点个赞加个关注呗!万分感谢!
最后
以上就是无语招牌为你收集整理的Yocto开发讲解系列 - 总目录Yocto开发专栏前言Yocto开发专栏总目录的全部内容,希望文章能够帮你解决Yocto开发讲解系列 - 总目录Yocto开发专栏前言Yocto开发专栏总目录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复