【问题标题】:macOS: Homebrew dylib formula all hit code-sign errorsmacOS:自制 dylib 公式都遇到代码签名错误
【发布时间】:2019-12-09 16:55:29
【问题描述】:

在 macOS 上,我曾经使用通过 Homebrew 安装的动态库遇到问题。

但是使用我的最新设置:

  • 莫哈韦 10.14.6
  • Xcode 11.2.1

我开始遇到以前可以工作的库的代码签名问题,例如 protobuf。

以下是运行成功构建项目时的控制台输出:


dyld: Library not loaded: /usr/local/opt/protobuf/lib/libprotobuf.22.dylib
  Referenced from: /path/to/myproj/_build/Debug/mam-host
  Reason: no suitable image found.  Did find:
    /usr/local/opt/protobuf/lib/libprotobuf.22.dylib: code signature in (/usr/local/opt/protobuf/lib/libprotobuf.22.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.
    /usr/local/Cellar/protobuf/3.11.1/lib/libprotobuf.22.dylib: code signature in (/usr/local/Cellar/protobuf/3.11.1/lib/libprotobuf.22.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.
Program ended with exit code: 9

我该怎么办?

我应该只是

codesign -s "Mac Developer: me" /usr/local/opt/protobuf/lib/libprotobuf.22.dylib

还是我必须从源代码构建?

附:运行上面的 codesign 命令后,我得到了完全相同的错误。

【问题讨论】:

    标签: macos homebrew code-signing


    【解决方案1】:

    终于解决了。

    你有两个选择:

    • 选项 1 禁用对库代码签名的检查Project Settings > Signing & Capabilities > Hardened Runtime > Runtime Exceptions > Diable Library Validation
    • 选项 2:使用您的代码签名身份对库进行代码签名,例如Apple Development: Your Name (10-char-ID)
      • 删除公共签名:codesign --remove-signature /path/to/theirlib.dylib
      • 用项目签名签名:codesign -s "Apple Development: Your Name (10-char-ID)" /path/to/theirlib.dylib

    【讨论】:

      猜你喜欢
      • 2022-11-07
      • 2012-03-06
      • 2014-08-08
      • 2021-09-02
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 2020-09-17
      相关资源
      最近更新 更多