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

Yocto构建的SDK编译时CMake找不到已存在的artpkg.pc.in是什么原因

问题根因

主要有两种常见的触发原因:

  • Yocto SDK的CMake工具链默认开启了交叉编译路径重定向规则,find_path 命令默认会自动在所有搜索路径前拼接 CMAKE_SYSROOT 前缀。你传入的HINTS路径 /opt/3.2.5.2/sysroots/x86_64-sdk-linux/usr/lib/cmake 本身已经包含了完整的sysroot路径,重定向后实际搜索路径会变成 /opt/3.2.5.2/sysroots/x86_64-sdk-linux/opt/3.2.5.2/sysroots/x86_64-sdk-linux/usr/lib/cmake,该路径不存在所以查找失败。
  • 你执行编译前没有正确加载SDK的环境配置脚本,使用了主机原生的CMake而非SDK内置的CMake,路径匹配规则不一致导致查找失败。
    还有极低概率是文件名称带有隐藏特殊字符,可以执行 ls -b /opt/3.2.5.2/sysroots/x86_64-sdk-linux/usr/lib/cmake | grep artpkg 确认文件名是否完全匹配。

修复方案

  1. 每次编译前先加载SDK环境,脚本实际名称可查看/opt/3.2.5.2目录下的文件列表确认:
source /opt/3.2.5.2/environment-setup-<目标架构名>.sh
  1. 若加载环境后仍报错,修改installationpaths.cmake中的find_path语句,添加NO_CMAKE_FIND_ROOT_PATH参数关闭路径重定向即可:
find_path(PKG_IN_FILE artpkg.pc.in HINTS ${CMAKE_MODULE_PATH} NO_CMAKE_FIND_ROOT_PATH)

另外注意你的代码中错误提示存在拼写错误:查找的是artpkg.pc.in,但FATAL_ERROR输出的是artpkg.pc.inc,不会影响查找逻辑,仅会误导问题排查,可以同步修正。

内容的提问来源于stack exchange,提问作者andre.hre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:24:04