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

M1 Mac Ventura下首次编译正常的arm64命令行程序后续签名验证失败

解决Ventura 13.4上本地编译arm64二进制签名无效的问题

问题原因

Ventura 13.x的安全机制相比Monterey 12.x对本地编译的二进制文件有更严格的代码签名校验逻辑,即使从未手动签名的二进制,在修改重建后也可能触发系统的Gatekeeper或代码签名缓存验证,导致被标记为无效签名而终止运行。

解决步骤

  • 检查并移除文件隔离属性
    先查看目标文件是否带有隔离标记:

    xattr -l /opt/local/src/RTcmix.git/bin/CMIX
    

    如果输出中包含com.apple.quarantine,执行以下命令移除:

    xattr -d com.apple.quarantine /opt/local/src/RTcmix.git/bin/CMIX
    

    同时对依赖的私有dylib执行相同操作。

  • 手动添加临时Ad-Hoc签名
    Ventura允许本地编译的二进制使用自签名的Ad-Hoc签名绕过校验,执行以下命令对主程序和依赖库签名:

    codesign -s - --deep --force /opt/local/src/RTcmix.git/bin/CMIX
    codesign -s - --deep --force /path/to/your/private/dylib
    

    替换/path/to/your/private/dylib为实际的私有库路径。

  • 清除系统代码签名缓存
    系统可能缓存了旧的签名验证结果,清除缓存后重启系统:

    sudo rm -rf /var/db/cachefilesd
    sudo reboot
    
  • 检查Makefile编译参数
    确认Makefile中没有添加与代码签名冲突的链接参数,比如错误的段对齐标记或签名相关flag,确保编译链接流程与首次成功构建一致。

  • 临时关闭Gatekeeper排查(不建议长期使用)
    如果以上方法无效,可临时关闭Gatekeeper验证是否是安全策略拦截:

    sudo spctl --master-disable
    

    测试完成后重新开启:

    sudo spctl --master-enable
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:37:10