【问题标题】:Signing Firemonkey-generated dylib on Mac OS X在 Mac OS X 上签署 Firemonkey 生成的 dylib
【发布时间】:2014-09-16 21:44:51
【问题描述】:

当我尝试在 Embarcadero 的 Firemonkey 创建的 dylib 上运行 codesign 时,我收到一条错误消息:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate: 文件不是可以处理的顺序(本地重定位条目 不合适):/Users/jwwalker/Documents/libV35SS.dylib

可能与这个问题有关:Reliable Deployment of Delphi-Generated Dylib on OSX

但是,我尝试重新排序加载命令以使 LC_ID_DYLIB 排在第一位,这显然是该问题的解决方案,但没有帮助。有没有其他方法可以对文件进行二进制编辑来修复它?关于本地重定位条目的“正确”位置的任何线索?


使用来自Mach-o File Format Reference 的信息,我组合了一个工具(至少在我相当小且简单的dylib 的情况下)重新排列dylib 中的数据以使其适合codesign。我发布了my code as open source

【问题讨论】:

    标签: macos delphi code-signing firemonkey dylib


    【解决方案1】:

    另一个问题的解决方案是直接在 dylib 中修补使用的 dylib 的路径。这基本上是手动执行 install_name_tool 应该执行的操作。但这不会帮助您进行代码设计。这基本上意味着您必须编写自己的代码签名工具,但是仍然不确定 OSX 是否会接受“损坏的 dylib”的签名。

    您可以仔细查看以下源文件。这是迄今为止我发现的关于 dylib 的正确顺序和结构的最好的。 http://www.opensource.apple.com/source/cctools/cctools-855/libstuff/checkout.c

    手动解决此问题可能是一个很大的挑战。我想你必须把 dylib 拆开并重写它: https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html

    您可能想为这个 QC 投票并告诉 Embarcadero,如果他们想要支持部署到 OSX 10.9.5 或 Yosemite,他们必须解决这个问题:

    报告编号:125607 状态:打开 [MacOS] 无法为 Apple Mac Store 共同设计 libmidas.dylib http://qc.embarcadero.com/wc/qcmain.aspx?d=125607 QCWIN:Defect_No=125607

    【讨论】:

    • 我确实投票给了 QC,但我也向 Apple 提交了错误报告,因为我认为如果他们对 dylib 结构有未记录的要求,那是他们的错。
    • 请注意QualityCentral has now been shut down,因此您无法再访问qc.embarcadero.com 链接。如果您需要访问旧的 QC 数据,请查看 QCScraper
    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 2011-08-15
    • 2012-10-19
    • 2013-09-06
    • 1970-01-01
    • 2011-06-08
    • 2012-01-03
    • 2016-05-03
    相关资源
    最近更新 更多