为何Bitbake未调用autogen.sh?如何配置使其调用该脚本?
为什么Bitbake没调用autogen.sh
Bitbake的autotools默认类(autotools.bbclass)是按上游发布的预构建源码包设计的——这类包已经提前生成好了configure脚本,所以流程里会直接跳过autogen.sh的执行。
如果你的源码是从Git这类版本控制系统拉取的,而非上游打包好的tarball,源码里只有configure.ac、Makefile.am这类模板文件,但Bitbake默认逻辑还是不会自动触发autogen.sh,因为它默认假设构建脚本已经存在。
配置Bitbake调用autogen.sh的方法
给configure任务加前置操作
在你的recipe文件(.bb或.bbappend)里添加这段代码,让Bitbake在执行configure前先跑autogen.sh:do_configure_prepend() { cd ${S} # 如果autogen.sh没有可执行权限,先添加权限 chmod +x autogen.sh ./autogen.sh }${S}是Bitbake内置的源码目录变量,能确保脚本在正确路径执行。适配特殊结构的项目
如果你的项目autotools文件不在源码根目录,或者结构比较特殊,可以让recipe继承autotools-brokensep.bbclass,这个类专门处理非标准的autotools项目,不过通常还是需要结合上面的前置操作来触发autogen.sh。验证源码完整性
如果你用Git作为源码源,要确保SRC_URI拉取了所有必要的文件(比如aclocal宏文件),避免autogen.sh执行时因为依赖缺失报错。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

