You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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-oe
    
    也可手动编辑conf/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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:05:06