ARM64架构Yocto SDK添加json-c库包失败,求问题排查
问题分析与解决步骤
你的问题主要出在两个核心点:缺少承载json-c构建配方的meta层,以及未配置SDK同步包含目标库的开发资源,以下是具体解决方法:
1. 添加包含json-c的meta层
json-c的构建配方(recipe)不在Poky默认的基础层中,需要添加meta-oe层(属于meta-openembedded项目组件):
- 若未克隆meta-openembedded仓库,先在Poky同级目录执行:
git clone https://git.openembedded.org/meta-openembedded - 进入构建目录后,执行命令添加层:
也可手动编辑bitbake-layers add-layer ../meta-openembedded/meta-oeconf/bblayers.conf,将meta-oe的绝对路径追加到BBLAYERS列表中。
2. 修正镜像安装配置
将local.conf中的IMAGE_INSTALL += " json-c"替换为:
IMAGE_INSTALL_append = " json-c"
使用_append可避免变量拼接时的空格问题,确保json-c被正确加入镜像安装列表。
3. 配置SDK包含json-c开发资源
要让SDK包含ARM64架构的json-c库、头文件、静态库等开发文件,在local.conf中添加:
TOOLCHAIN_TARGET_TASK_append = " json-c-dev json-c-staticdev"
如果希望SDK自动包含镜像中所有包的开发资源,可简化为:
SDKIMAGE_FEATURES += "dev-pkgs"
4. 重新构建镜像与SDK
- 清理旧构建缓存,避免残留影响:
bitbake -c cleansstate core-image-minimal - 重新构建基础镜像:
bitbake core-image-minimal - 生成目标SDK:
bitbake -c populate_sdk core-image-minimal
验证结果
- 镜像验证:启动QEMU后执行
opkg list-installed | grep json-c,应能看到json-c包;或解压根文件系统压缩包,检查/usr/lib/libjson-c.so*和/usr/include/json-c路径是否存在。 - SDK验证:安装生成的SDK后,进入SDK的sysroots目录(如
/opt/poky/<版本号>/sysroots/aarch64-poky-linux),确认usr/lib和usr/include下有json-c相关文件。
内容的提问来源于stack exchange,提问作者Jacoba
相关产品推荐
相关产品推荐

