添加BBCLASSEXTEND后构建libProject-native时do_fetch步骤失败求助
问题场景
- C代码存放于libProject目录,可正常编译为ARM架构版本
- 在libProject.bb中添加
BBCLASSEXTEND = "native",期望同时构建x86_64-linux原生版本 - 执行
bitbake libProject可正常构建ARM版本,但执行bitbake libProject-native时,do_fetch步骤失败,报错如下:
Log data follows:
| DEBUG: Executing shell function do_fetch
| tar: libProject-native: Cannot stat: No such file or directory
| tar: Exiting with failure status due to previous errors
| WARNING: exit code 2 from a shell command.
| ERROR: Function failed: do_fetch (log file is located at /neptune/build/tmp/work/x86_64-linux/libProject-native/1.0-r0/temp/log.do_fetch.10986)
原因分析
这个错误的核心是构建native版本时,fetch逻辑尝试查找名为libProject-native的源码归档/目录,但实际源码目录是libProject,没有对应native变体的专属源码路径,导致tar命令找不到目标文件。
解决方案
修正SRC_URI定义:如果源码是本地目录,确保SRC_URI指向正确的源码目录,避免依赖包名变量导致路径错误。示例:
SRC_URI = "file://libProject/"显式设置S变量:强制指定源码目录路径,确保native版本也指向正确的源码位置。可在libProject.bb中添加:
S = "${WORKDIR}/libProject"若源码放在recipe所在目录的子文件夹,也可以用:
S = "${THISDIR}/libProject"检查native专属配置:排查是否存在针对native版本的SRC_URI覆盖(比如
SRC_URI_append-native),这类配置可能错误修改了fetch路径。远程源码场景检查:如果使用git等远程源码仓库,确认SRC_URI没有在native版本下被修改为错误的仓库、分支或路径。
内容的提问来源于stack exchange,提问作者Veeresh

