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

为什么CMake的RPATH_CHECK会删除可执行文件?是正常行为还是Bug?

file(RPATH_CHECK)删除不匹配文件是正常设计,不属于Bug

file(RPATH_CHECK)是CMake官方提供的安装阶段校验指令,预期作用就是校验指定ELF文件的RPATH是否和预设值一致,防止存在RPATH错误的无效二进制被安装到系统路径。校验不通过时直接删除目标文件是该指令的原生设计逻辑,目的是阻断错误文件进入后续部署流程。

你遇到的RPATH被识别为::::::::::::::触发误删的问题,是CMake 3.16.3版本的已知缺陷:该版本解析包含$ORIGIN的RPATH字段时存在逻辑错误,会把Qt构建系统生成的合法RPATH错误识别为异常的多冒号字符串,触发校验失败的删除逻辑。

解决方案

  • 优先升级CMake到3.18.0及以上版本,该版本已经修复了$ORIGIN类RPATH的解析缺陷,不会再出现误判问题
  • 若暂时无法升级CMake,可在配置Qt时添加编译参数-DCMAKE_SKIP_RPATH=ON临时关闭RPATH校验(仅推荐本地测试使用,生产环境不建议关闭校验)
  • 也可以在执行安装前手动修改构建目录下的cmake_install.cmake脚本,注释掉对应file(RPATH_CHECK)代码段,跳过本次校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:24:05