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

如何在Yocto原生sysroot中添加libseccomp库?

问题描述

我正在尝试为Yocto原生构建工具编译PKCS #11代理(pkcs11-proxy),编译时出现以下错误:

/home/user/build/tmp-glibc/hosttools/ld: cannot find -lseccomp: No such file or directory

Yocto中已经包含libseccomp的配方meta-poky/meta/recipes-support/libseccomp/libseccomp_2.5.3.bb,我在pkcs11-proxy的配方中添加DEPENDS = "libseccomp-native"后,又出现新错误:

ERROR: Nothing PROVIDES 'libseccomp-native' (but virtual:native:/home/user/meta-deif/recipes-devtools/pkcs11-proxy/pkcs11-proxy.bb DEPENDS on or otherwise requires it). Close matches: libcomps-native libsm-native libsoup-native
ERROR: Required build target 'machine' has no buildable providers. Missing or unbuildable dependency chain was: ['machine', 'bootstrapfiles', 'pil-u-boot', 'pkcs11-proxy-native', 'libseccomp-native']

我试过多种DEPENDS的写法都没用,请问该如何将libseccomp加入原生sysroot?目前临时解决方法是把.so文件手动添加到Docker容器中。

解决方法
  • 步骤1:开启libseccomp的native构建支持
    Yocto默认的libseccomp配方没有开启native构建,你需要在自己的自定义层中创建一个bbappend文件(路径示例:meta-yourlayer/recipes-support/libseccomp/libseccomp_2.5.3.bbappend),添加以下内容:

    BBCLASSEXTEND = "native"
    

    这个配置会让Yocto生成libseccomp-native包,供原生构建环境调用。

  • 步骤2:配置pkcs11-proxy的依赖
    根据你的配方类型做对应配置:

    • 如果是单独的native配方(如pkcs11-proxy-native.bb),直接添加:
      DEPENDS = "libseccomp-native"
      
    • 如果是在主配方中通过virtual:native实现原生构建,先确保配方里已经添加inherit native,再加入上述DEPENDS配置。
  • 步骤3:重新执行构建
    运行bitbake pkcs11-proxy-native(或对应你的构建目标命令),Yocto会自动构建libseccomp-native并将其安装到原生sysroot中,解决链接阶段找不到-lseccomp的问题。

内容的提问来源于stack exchange,提问作者Kjeld Flarup

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:02:49