Yocto新手求助:如何在自定义BSP层添加现有配方(libevent/libsoc)
把libevent和libsoc添加到自定义Yocto BSP层的方法
嘿,作为Yocto新手能折腾自定义BSP层已经很厉害了!把这两个现有配方加到你的层里其实有两种常用方式,我给你一步步讲清楚:
方式一:复用官方层的配方(推荐,少维护)
大部分常用开源库的配方Yocto官方层已经有了,libevent和libsoc一般在meta-openembedded/meta-oe里,直接复用最省心:
- 首先确认你的构建环境已经包含
meta-oe层:- 把meta-openembedded仓库克隆到你的layers目录下
- 打开
build/conf/bblayers.conf,把meta-oe的路径加进去,比如:BBLAYERS += "${TOPDIR}/../layers/meta-openembedded/meta-oe"
- 接下来让你的BSP层依赖
meta-oe:
打开你的BSP层里的conf/layer.conf,添加层兼容性声明(替换成你的Yocto版本,比如kirkstone):LAYERSERIES_COMPAT_your-bsp-layer = "kirkstone" - 如果要让你的BSP默认包含这两个库,在你的层的
conf/distro/include目录下创建一个配置文件(比如my-bsp-features.inc),添加:
然后在IMAGE_INSTALL_append = " libevent libsoc"local.conf里引用这个文件,或者直接在local.conf里加上面那行也行。
方式二:复制配方到自己的BSP层(适合需要修改配方的场景)
如果你需要对配方做定制化修改,或者不想依赖官方层,可以把配方复制到自己的层:
- 找到官方配方的位置:用
bitbake-layers show-recipes libevent libsoc命令就能看到它们的路径,比如meta-oe/recipes-support/libevent - 把整个配方目录(包括
.bb文件和可能的补丁、配置文件)复制到你的BSP层对应路径下,比如:cp -r meta-oe/recipes-support/libevent your-bsp-layer/recipes-support/ cp -r meta-oe/recipes-support/libsoc your-bsp-layer/recipes-support/ - 确保你的层的
layer.conf里已经包含了配方文件的扫描路径(一般创建层时默认就有,没有的话加):BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend" - 测试编译:用
bitbake libevent -c cleanall && bitbake libevent验证能不能正常构建,libsoc同理。
小贴士
- 尽量用方式一,官方层会持续更新配方的补丁、版本和兼容性,省得你自己维护。
- 如果只是要小改配方(比如加补丁、改编译选项),别直接复制整个配方,用
.bbappend文件更优雅:在你的层里创建recipes-support/libevent/libevent_%.bbappend,在里面写你的修改就行,这样官方配方更新时你的修改还能保留。 - 每次调整后,记得清理缓存再编译,避免依赖问题。
内容的提问来源于stack exchange,提问作者flashburn
相关产品推荐
相关产品推荐

