前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Yocto】devtool修改源代码「建议收藏」

【Yocto】devtool修改源代码「建议收藏」

作者头像
全栈程序员站长
发布于 2022-11-10 08:22:01
发布于 2022-11-10 08:22:01
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

说明

本文接在【Yocto】BitBake入门之镜像中的HelloWorld之后完成。

修改源代码

如果想要修改Poky项目中的源代码,可以依赖于devtool工具,这里以修改busybox为例。

首先创建workspace:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jw@X1C:~/code/poky/build$ devtool create-workspace
NOTE: Starting bitbake server...
jw@X1C:~/code/poky/build$ tree workspace/

workspace/
├── conf
│   └── layer.conf
└── README

1 directory, 2 files

使用devtool create-workspace除了创建上述的workspace,还会修改conf/bblayers.conf,它的作用是将workspace作为一个Layer添加到项目中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jw@X1C:~/code/poky/build$ cat conf/bblayers.conf 
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \ /home/jw/code/poky/meta \ /home/jw/code/poky/meta-poky \ /home/jw/code/poky/meta-yocto-bsp \ /home/jw/code/poky/meta-mylayer \ /home/jw/code/poky/build/workspace \ "

还可以通过bitbake-layers查看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jw@X1C:~/code/poky/build$ bitbake-layers show-layers
NOTE: Starting bitbake server...
layer                 path                                      priority
==========================================================================
meta                  /home/jw/code/poky/meta                   5
meta-poky             /home/jw/code/poky/meta-poky              5
meta-yocto-bsp        /home/jw/code/poky/meta-yocto-bsp         5
meta-mylayer          /home/jw/code/poky/meta-mylayer           6
workspace             /home/jw/code/poky/build/workspace        99

其次就是添加配方到workspace目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jw@X1C:~/code/poky/build$ devtool modify busybox
NOTE: Starting bitbake server...
NOTE: Reconnecting to bitbake server...
NOTE: Retrying server connection (#1)...
Loading cache: 100% |########################################################################################################################################################################| Time: 0:00:00
Loaded 1424 entries from dependency cache.
INFO: SRC_URI contains some conditional appends/prepends - will create branches to represent these
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "1.49.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "qemux86-64"
DISTRO               = "poky"
DISTRO_VERSION       = "3.2+snapshot-f13e17656248021debea6fe01564c40af27271d1"
TUNE_FEATURES        = "m64 core2"
TARGET_FPU           = ""
meta                 
meta-poky            
meta-yocto-bsp       
meta-mylayer         
workspace            = "master:f13e17656248021debea6fe01564c40af27271d1"

Initialising tasks: 100% |###################################################################################################################################################################| Time: 0:00:00
Sstate summary: Wanted 0 Found 0 Missed 0 Current 20 (0% match, 100% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 93 tasks of which 90 didn't need to be rerun and all succeeded.
INFO: Adding local source files to srctree...
INFO: Source tree extracted to /home/jw/code/poky/build/workspace/sources/busybox
WARNING: SRC_URI is conditionally overridden in this recipe, thus several devtool-override-* branches have been created, one for each override that makes changes to SRC_URI. It is recommended that you make changes to the devtool branch first, then checkout and rebase each devtool-override-* branch and update any unique patches there (duplicates on those branches will be ignored by devtool finish/update-recipe)
INFO: Using source tree as build directory since that would be the default for this recipe
INFO: Recipe busybox now set up to build from /home/jw/code/poky/build/workspace/sources/busybox

这样busybox的代码就被下载到build/workspace/sources/busybox目录下了,这个时候在构建项目,则使用的是workspace目录下的源码,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jw@X1C:~/code/poky/build$ bitbake core-image-minimal
Loading cache: 100% |########################################################################################################################################################################| Time: 0:00:00
Loaded 1424 entries from dependency cache.
Parsing recipes: 100% |######################################################################################################################################################################| Time: 0:00:00
Parsing of 810 .bb files complete (809 cached, 1 parsed). 1424 targets, 42 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Build Configuration:
BB_VERSION           = "1.49.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "qemux86-64"
DISTRO               = "poky"
DISTRO_VERSION       = "3.2+snapshot-f13e17656248021debea6fe01564c40af27271d1"
TUNE_FEATURES        = "m64 core2"
TARGET_FPU           = ""
meta                 
meta-poky            
meta-yocto-bsp       
meta-mylayer         
workspace            = "master:f13e17656248021debea6fe01564c40af27271d1"
Initialising tasks: 100% |###################################################################################################################################################################| Time: 0:00:01
Sstate summary: Wanted 5 Found 1 Missed 4 Current 1088 (20% match, 99% complete)
NOTE: Executing Tasks
NOTE: busybox: compiling from external source tree /home/jw/code/poky/build/workspace/sources/busybox
NOTE: Tasks Summary: Attempted 3113 tasks of which 3083 didn't need to be rerun and all succeeded.

下一个就是修改源码,比如修改coreutils/date.c,增加helloworld打印:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
puts("helloworld\n");

然后再构建项目,发现会报错:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jw@X1C:~/code/poky/build$ bitbake core-image-minimal
Loading cache: 100% |########################################################################################################################################################################| Time: 0:00:00
Loaded 1424 entries from dependency cache.
Parsing recipes: 100% |######################################################################################################################################################################| Time: 0:00:01
Parsing of 810 .bb files complete (809 cached, 1 parsed). 1424 targets, 42 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Build Configuration:
BB_VERSION           = "1.49.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "qemux86-64"
DISTRO               = "poky"
DISTRO_VERSION       = "3.2+snapshot-f13e17656248021debea6fe01564c40af27271d1"
TUNE_FEATURES        = "m64 core2"
TARGET_FPU           = ""
meta                 
meta-poky            
meta-yocto-bsp       
meta-mylayer         
workspace            = "master:f13e17656248021debea6fe01564c40af27271d1"
Initialising tasks: 100% |###################################################################################################################################################################| Time: 0:00:01
Sstate summary: Wanted 5 Found 1 Missed 4 Current 1088 (20% match, 99% complete)
NOTE: Executing Tasks
NOTE: busybox: compiling from external source tree /home/jw/code/poky/build/workspace/sources/busybox
ERROR: busybox-1.32.0-r0 do_package: Error executing a python function in exec_python_func() autogenerated:
The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
0001:
*** 0002:ptest_update_alternatives(d)
0003:
File: '/home/jw/code/poky/meta/classes/ptest.bbclass', lineno: 98, function: ptest_update_alternatives
0094:        for alt_name, alt_link, alt_target, _ in alternatives:
0095:            # Some alternatives are for man pages,
0096:            # check if the alternative is in PATH
0097:            if os.path.dirname(alt_link) in bin_paths:
*** 0098:                os.symlink(alt_target, os.path.join(ptest_bindir, alt_name))
0099:}
0100:
0101:do_configure_ptest_base[dirs] = "${B}"
0102:do_compile_ptest_base[dirs] = "${B}"
Exception: FileExistsError: [Errno 17] File exists: '/bin/busybox.suid' -> '/home/jw/code/poky/build/tmp/work/core2-64-poky-linux/busybox/1.32.0-r0/package/usr/lib/busybox/ptest/bin/login'
ERROR: Logfile of failure stored in: /home/jw/code/poky/build/tmp/work/core2-64-poky-linux/busybox/1.32.0-r0/temp/log.do_package.12918
ERROR: Task (/home/jw/code/poky/meta/recipes-core/busybox/busybox_1.32.0.bb:do_package) failed with exit code '1'
NOTE: Tasks Summary: Attempted 3096 tasks of which 3090 didn't need to be rerun and 1 failed.
Summary: 1 task failed:
/home/jw/code/poky/meta/recipes-core/busybox/busybox_1.32.0.bb:do_package
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

但是如果再次编译,又能够编译成功了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jw@X1C:~/code/poky/build$ bitbake core-image-minimal
Loading cache: 100% |########################################################################################################################################################################| Time: 0:00:00
Loaded 1424 entries from dependency cache.
Parsing recipes: 100% |######################################################################################################################################################################| Time: 0:00:00
Parsing of 810 .bb files complete (809 cached, 1 parsed). 1424 targets, 42 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Build Configuration:
BB_VERSION           = "1.49.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "qemux86-64"
DISTRO               = "poky"
DISTRO_VERSION       = "3.2+snapshot-f13e17656248021debea6fe01564c40af27271d1"
TUNE_FEATURES        = "m64 core2"
TARGET_FPU           = ""
meta                 
meta-poky            
meta-yocto-bsp       
meta-mylayer         
workspace            = "master:f13e17656248021debea6fe01564c40af27271d1"
Initialising tasks: 100% |###################################################################################################################################################################| Time: 0:00:01
Sstate summary: Wanted 5 Found 1 Missed 4 Current 1088 (20% match, 99% complete)
NOTE: Executing Tasks
NOTE: busybox: compiling from external source tree /home/jw/code/poky/build/workspace/sources/busybox
NOTE: Tasks Summary: Attempted 3113 tasks of which 3090 didn't need to be rerun and all succeeded.

运行镜像之后执行date命令,结果如下:

可以看到代码修改成功了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185673.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月5日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[ 物联网篇 ] 02 - Yocto Project (YP)快速入门
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z2066411585/article/details/89049111
程序手艺人
2019/04/18
4.8K0
[ 物联网篇 ] 02 - Yocto Project (YP)快速入门
[ 物联网篇 ] 03 - Yocto Project (YP)构建 Alexa SDK
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z2066411585/article/details/89159268
程序手艺人
2019/04/18
1.6K0
提高PetaLinux/Yocto的编译速度,暨整合Open Source U-Boot/Linux编译 -- PetaLinux 2021/2022版本
通过使用本地文件、Open Source U-Boot/Linux编译,既能适应部分开发人员的工作习惯,也能提高U-Boot/Linux的编译速度。
hankfu
2022/11/23
5.1K1
提高PetaLinux/Yocto的编译速度,暨整合Open Source U-Boot/Linux编译 -- PetaLinux 2021/2022版本
【分享】在PetaLinux里为模块创建补丁
PetaLinux(Yocto)里包含很多软件模块。大部分模块可以直接使用。如果有特殊需求,需要修改某些模块时,可以按下列办法先修改,测试成功后,再创建补丁,集成到PetaLinux(Yocto)工程里。
hankfu
2020/12/01
3K0
全志平台Tina系统yocto编译环境gstreamer编译不过问题
MACHINE=tulip-mozart source setup-environment
阿志小管家
2024/02/02
2790
使用命令“petalinux-devtool modify”获取BSP相关的代码。
作者: 付汉杰 hankf@xilinx.com hankf@amd.com 测试环境: Vivado/PetaLinux 2021.2, Linux 5.10.0 VCK190
hankfu
2022/05/09
6290
yocto | 基于Linux的定制系统跑Qt app(第一集)
下载 【快传】我给你发了 po...ar.gz, 快来看看 https://www.alipan.com/t/Tm1C6DiFGOgHPoysD1PM 点击链接即可保存。「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
Qt历险记
2024/08/24
3310
yocto | 基于Linux的定制系统跑Qt app(第一集)
【分享】检查build.log, 解决petalinux的编译错误“ERROR: Failed to create workspace directory”
修改PetaLinux工程的配置文件project-spec/meta-user/conf/petalinuxbsp.conf后,编译出现下列错误,报告“ERROR: Failed to create workspace directory”。
hankfu
2020/12/03
3.3K0
在AMD PetaLinux中添加命令pstree
命令pstree将相关进程以树状图显示,方便查看进程间的关系。由于调试需要,需要在Linux里使用命令pstree。但是PetaLinux产生的Linux映像,默认不带命令pstree。
hankfu
2023/10/16
4150
[ 物联网篇 ] 01 - NXP i.MX 8M Mini 环境的搭建
不管任何时候,接触任何新的平台或学习新的知识,首先就是看官网提供的文档,或搜索下是否有相关的资料。
程序手艺人
2019/04/17
3.5K0
[ 物联网篇 ] 01 - NXP i.MX 8M Mini 环境的搭建
8步轻松晋级AMD MPSoC Linux内核调试专家
AMD MPSoC Linux一般使用PetaLinux编译Linux系统,包括Linux内核、DTS、文件系统。
hankfu
2023/10/16
4410
STM32MP157D-DK1 Qt镜像构建
上篇介绍了STM32MP57-DK1开发板官方系统的烧录。那个系统包含Linux系统的基础功能,如果要进行Qt开发,还需要重新构建带有Qt功能的镜像
xxpcb
2023/12/26
3860
STM32MP157D-DK1 Qt镜像构建
外部目录信息
客户为AMD Xilinx SoC创建了PetaLinux工程。需要定制PetaLinux中的FSBL。
hankfu
2023/05/23
9150
怎么使用 Yocto 构建文件系统?
Yocto项目使用更强大和定制化的方法,来构建出适合嵌入式产品的Linux系统。Yocto不仅仅是一个制做文件系统工具,同时提供整套的基于Linux的开发和维护工作流程,使底层嵌入式开发者和上层应用开发者在统一的框架下开发,解决了传统开发方式下零散和无管理的开发形态。
韦东山
2022/05/05
2.3K0
怎么使用 Yocto 构建文件系统?
STM32MP157D-DK1 Qt程序交叉编译与运行测试
上篇文章介绍了STM32MP157D-DK1开发板Qt镜像的构建,通过在Ubuntu中重新编译带有Qt功能的系统来实现。
xxpcb
2024/01/03
2320
STM32MP157D-DK1 Qt程序交叉编译与运行测试
sstate目录改变,导致PetaLinux工程编译出现错误“dpkg-architecture: command not found”
最近编译PetaLinux工程时,出现错误“dpkg-architecture: command not found”。 经过检查,最近移动了本地sstate目录。PetaLinux工程中的sstate的本地目录,已经不存在。 恢复本地sstate目录的位置后,清除工程,再编译,错误消失。 奇怪的是,已经有5200多个package已经编译成功。配置graphviz时,才有问题。
hankfu
2022/09/30
7380
PetaLinux使用bitbake提前下载所有软件包
PetaLinux环境下,也可以使用Yocto/openembedded的bitbake。Xilinx ug1144有详细说明。 为了方便,我编写了以下脚本,导入bitbake需要的环境。将下列脚本保存为sh文件,使用source导入,之后就能使用bitbake。脚本的第一个输入参数是PetaLinux版本号,比如2019.2。如果source时没有提供版本号,而系统有环境变量XILINX_VERSION,脚本就使用XILINX_VERSION作为PetaLinux版本号。如果source时没有提供PetaLinux版本号,系统也没有定义XILINX_VERSION,则缺省使用2019.2作为PetaLinux版本号。
hankfu
2020/07/16
1.5K0
修改文件变化通知机制Inotify的限制
作者: 付汉杰 hankf@xilinx.com hankf@amd.com 测试环境: Vivado/PetaLinux 2021.2, Linux 5.10.0
hankfu
2022/05/09
1.5K0
[ 物联网篇 ] 14 - 联发科MTK8516 Yocto技巧
MTK8516 提供的SDK通过Yocto来进行构建, 由于Yocto入门门槛较高,刚开始也才过不少坑,这里记录下.
程序手艺人
2020/01/14
2.6K0
AMD PetaLinux 2022.1中部分语法改变,不支持IMAGE_CLASSES_remove、IMAGE_FSTYPES_DEBUGFS_remove、PREMIRRORS_prepend
最新的AMD PetaLinux 2022.1,不支持IMAGE_CLASSES_remove、IMAGE_FSTYPES_DEBUGFS_remove、PREMIRRORS_prepend。如果有上述关键词,会报告类似下面的错误。
hankfu
2022/08/23
4720
推荐阅读
相关推荐
[ 物联网篇 ] 02 - Yocto Project (YP)快速入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档