【问题标题】:System can't verify shared libraries系统无法验证共享库
【发布时间】:2023-03-30 15:27:01
【问题描述】:

我有一个使用很多共享库的程序可执行文件。但是,当尝试在另一台计算机上下载并运行它时,我收到一条错误消息,指出无法打开程序,因为无法验证库。运行它的唯一方法是手动进入系统首选项并允许每个单独的库。有什么方法可以验证库,使程序可以正常运行?

【问题讨论】:

  • macOS 系统版本有问题?应用是否经过公证?
  • 它是 macOS Monertey 12.0.1 它没有经过公证,它只是一个用 c++ 和 SDL2 在 eclipse 中构建的编译项目。 SDL2 库是无法验证的,不是项目本身

标签: macos shared-libraries macos-monterey


【解决方案1】:

库验证确保动态加载的库由签署主可执行文件的同一实体签署。

Apple: Code Signing Tasks:

程序可以链接到具有相同团队标识符的任何库 在其作为主要可执行文件的代码签名中,或与任何 Apple 系统一起使用 图书馆。链接到其他库的请求被拒绝。

要使库得到验证,它们必须以相同的身份进行代码签名。您的身份将如下所示,具体取决于您的证书类型:"Developer ID Application: Firstname Lastname (XXXXXXXXXX)" 所需的团队标识符是括号中的十个字符代码。双引号中的整个字符串是所用证书的通用名

codesign -s "Developer ID Application: Doctor Who (1234567890)" path/to/binary
警告:一旦超出库验证:macOS 12 将尝试通过装订的公证票或通过在云中的 Apple 服务器上查找票证来验证团队身份。没有公证,你自己的机器没有问题,因为不需要验证自我。在 macOS 12 中,默认强制执行 Notary/sandbox/library 验证/强化运行时安全方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多