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

如何通过Yocto将自定义头文件目录纳入rootfs

解决Yocto配方中头文件目录未纳入镜像的问题

核心问题分析

  1. 头文件属于开发类文件,Yocto规范中这类文件应归到${PN}-dev包,而非主包${PN}。原配方用FILES_${PN}包含头文件目录,不符合打包规则,导致文件未被纳入镜像。
  2. do_install逻辑冗余,手动创建目录后再复制,既繁琐又容易出错。

修正后的配方内容

SRC_URI += "file://maindir/"

S = "${WORKDIR}"

do_install () {
    # 直接递归复制整个maindir目录到目标路径,自动创建所需子目录
    install -d ${D}${includedir}
    cp -a ${WORKDIR}/maindir ${D}${includedir}/
}

# 将头文件目录归到开发包
FILES_${PN}-dev += "${includedir}/maindir/"

关键说明

  • 使用cp -a而非cp -r:-a参数会保留文件权限、时间戳等属性,更符合Yocto的打包要求。
  • 必须用FILES_${PN}-dev:Yocto的包管理体系中,主包${PN}仅包含运行时必需文件,开发文件(头文件、静态库、pkg-config文件等)必须放到${PN}-dev包中,这样在构建镜像时,只要包含${PN}-dev包,头文件就会被纳入rootfs。
  • 简化do_install:install -d只需要创建顶层的${includedir},cp -a会自动创建maindir及其子目录,无需手动逐个创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:30:01