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

构建Yocto meta-laird-cp层时msgfmt找不到ITS规则的错误排查

问题原因分析

这个错误的核心是msgfmt处理org.freedesktop.NetworkManager.policy.in XML文件时,找不到对应的ITS(XML本地化规则)文件。ITS规则用于指导gettext工具解析XML格式的本地化字符串,缺失该文件会直接导致XML本地化编译失败。

你安装的libappstream-glib-dev和此问题无关,该库主要负责AppStream元数据处理,不提供NetworkManager相关的ITS规则。

调试与解决步骤
  • 检查ITS规则文件是否存在
    先确认构建环境中是否有NetworkManager对应的ITS规则文件,通常命名为networkmanager.its或org.freedesktop.NetworkManager.its。该文件一般属于NetworkManager开发包,或由meta层相关recipe引入。
    在构建目录中搜索该文件:

    find ${BUILDDIR} -name "*networkmanager*.its"
    

    如果搜不到,说明缺少对应规则文件,需从NetworkManager源码提取或在meta层中添加依赖。

  • 验证msgfmt的ITS规则路径配置
    msgfmt会从默认路径或ITS_DIR环境变量指定的路径查找规则文件。检查构建环境的路径配置:

    echo $ITS_DIR
    

    如果为空,手动指定NetworkManager ITS规则所在目录后重新编译:

    export ITS_DIR=/path/to/networkmanager/its/files
    
  • 检查recipe的依赖配置
    查看summit-networkmanager-lwb的.bb或.bbappend文件,确认是否正确依赖了包含ITS规则的NetworkManager相关包。需在DEPENDS中添加对应依赖:

    DEPENDS += "networkmanager"
    

    同时确认recipe中是否有将ITS规则文件安装到sysroot正确路径的配置。

  • 手动补充ITS规则文件
    如果meta层未包含该规则文件,可从NetworkManager官方源码仓库下载networkmanager.its和networkmanager.loc文件,将其添加到summit-networkmanager-lwb recipe的文件列表,或直接安装到构建系统的${RECIPE_SYSROOT_NATIVE}/usr/share/gettext/its/目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:09:54