如何配置Yocto bb文件获取本地Git仓库最新修改无需提交
解决Yocto本地内核修改无需提交即可生效的问题
针对你遇到的本地修改内核后必须提交才能让Yocto构建生效的问题,以下是两种直接可行的解决方案:
方法一:使用EXTERNALSRC绑定本地源码目录(推荐)
Yocto的EXTERNALSRC机制允许直接使用本地已有的源码目录,跳过克隆/拉取步骤,本地所有未提交的修改会直接被构建使用。
修改你的内核bb文件:
- 添加以下变量,指向你的本地内核目录:
EXTERNALSRC = "/home/dand/myFolder/firmware_linux" EXTERNALSRC_BUILD = "${EXTERNALSRC}"
- 注释掉原有的git相关配置:
# SRC_URI = "git:///home/dand/myFolder/firmware_linux;protocol=file;branch=cc-4.19" # SRCREV = "${AUTOREV}"
- 保持其他配置(如
KERNEL_DEFCONFIG、构建钩子等)不变。
注意事项
- 构建时Yocto会在本地内核目录生成
build-<机器架构>格式的构建目录,如需干净构建,可执行bitbake -c cleanall kernel。 - 首次使用前,建议清理旧的构建状态:
bitbake -c cleansstate kernel,避免残留的旧源码干扰。
方法二:直接使用file协议导入本地目录
如果不想使用EXTERNALSRC,也可以通过file协议让Yocto直接复制本地内核目录到构建工作区:
- 修改
SRC_URI为本地目录的file路径:
SRC_URI = "file:///home/dand/myFolder/firmware_linux/"
- 注释掉
SRCREV配置:
# SRCREV = "${AUTOREV}"
- 调整
S变量指向复制后的目录:
S = "${WORKDIR}/firmware_linux"
优缺点
- 优点:配置简单,无需理解EXTERNALSRC机制。
- 缺点:每次构建都会复制整个内核目录,若内核源码体积较大,会增加构建耗时。
内容的提问来源于stack exchange,提问作者zebra_rey
相关产品推荐
相关产品推荐

