为什么我们需要在SRC_URI
中提供文件路径,即使我们在FILESEXTRAPATHS_prepend
变量中包含文件路径。像:
SUMMARY = "Simple Hello application"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI = "file://Hello_1.c \
file://Hello_2.c \
"
do_compile() {
oe_runmake
}
do_install() {
install -d ${D}${bindir}
install -m 0755 Hello ${D}${bindir}
}
在files文件夹中,我有两个文件hello1.c
和hello2.c
。当我删除SRC_URI
时,它会输出以下错误,
ERROR: Hello-1.0-r0 do_compile: oe_runmake failed
但如果我删除
FILESEXTRAPATHS_prepend
它工作正常。
变量FILESEXTRAPATHS_prepend
的目的是什么?
为什么我删除SRC_URI
时出现错误,即使我在FILESEXTRAPATHS_prepend
中包含我的文件路径?
答案 0 :(得分:4)
简单的方法让我们假设meta-layer/recipes-core/example
1.在上面的路径中创建hello
和hello.bb
2. hello is a directory having your source and other data
和hello.bb is recipe
。
现在
SRC_URI :SRC_URI
变量始终仅检查hello dir
中的数据。
FILESEXTRAPATHS_prepend:=" $ {THISDIR}:" :如果您在食谱中添加此行,则SRC_URI
变量会检查present directory
中的数据存在hello.bb
文件的位置。
在你的情况下
FILESEXTRAPATHS_prepend:=" $ {THISDIR} /
files
:"
SRC_URI
变量检查files
目录中hello.bb
所在的数据。
Note
:大多数时候人们会在.BBappend文件中使用这个FILESEXTRAPATHS变量来将补丁和其他文件应用到配方中。
对于每个.bb文件,
SRC_URI
变量用于指定从哪个文件获取源 - 来自 在线存储库或本地存储库,FILESEXTRAPATHS
指定查找这些文件的位置,具体取决于您的来源 路径。
答案 1 :(得分:0)
BitBake使用
SRC_URI
变量指向源文件 不管他们的位置如何。每个食谱必须都有SRC_URI
指向源的变量。
SRC_URI = file://
获取文件,这些文件通常是附带的文件 使用元数据,来自本地计算机。路径是相对于 FILESPATH变量。因此,构建系统按顺序搜索 以下目录,假定为子目录 配方文件(.bb)或追加文件的目录 (.bbappend)驻留:
FILESPATH
:OpenEmbedded构建的默认目录集 系统在搜索补丁和文件时使用。在构建期间 进程,BitBake搜索指定的FILESPATH中的每个目录 查找每个文件指定的文件和补丁时的顺序:// URI 在食谱中。FILESPATH变量的默认值在。中定义 在源目录中的元/类中找到的base.bbclass类:
FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \ "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
不要手动编辑
FILESPATH
变量;该 BitBake在处理配方时使用的默认目录 最初由FILESPATH变量定义。您可以扩展FILESPATH 使用FILESEXTRAPATHS变量。<强>&GT;最佳实践要求您通过使用来实现此目的 来自.bbappend文件中的FILESEXTRAPATHS
FILESEXTRAPATHS
:扩展 OpenEmbedded构建系统的搜索路径 在处理食谱时查找文件和补丁时使用 附加文件。 BitBake处理时使用的默认目录 配方最初由FILESPATH变量定义。如果您希望构建系统选择通过a指定的文件 来自附加文件的SRC_URI语句,您需要确保扩展 FILESPATH变量也可以使用FILESEXTRAPATHS变量 在你的追加文件中。
http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#var-FILESPATH
回到你的错误,因为每个食谱必须有一个SRC_URI;如果删除它将无法正常工作;
由于您的食谱不是.bbappend
,因此添加FILESEXTRAPATHS
是不恰当的,也不是必需的。