关于macOS:在Mac OS X上签名Firemonkey生成的dylib

Signing Firemonkey-generated dylib on Mac OS X

当我尝试在由Embarcadero的Firemonkey创建的dylib上运行codesign时,出现错误消息:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate:
file not in an order that can be processed (local relocation entries
out of place): /Users/jwwalker/Documents/libV35SS.dylib

这可能与以下问题有关:在OSX上可靠地部署了Delphi生成的Dylib

但是,我尝试重新排序装入命令以使LC_ID_DYLIB首先出现,这显然是该问题的解决方案,但这没有帮助。还有其他方法可以对文件进行二进制编辑以解决该问题吗?关于本地重定位条目的"正确"位置的任何线索?

使用" Mach-o文件格式参考"中的信息,我组合了一个工具(至少在我很小而又简单的dylib情况下),可以重新排列dylib中的数据,使其适合于codesign。我以开放源代码的形式发布了我的代码。


另一个问题的解决方案是直接在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

您可能想要投票给该质量控制,并告诉Embarcadero,如果他们想支持到OSX 10.9.5或优胜美地的部署,则必须解决此问题:

报告编号:125607状态:公开
[MacOS]无法对Apple Mac Store的libmidas.dylib进行代码签名
http://qc.embarcadero.com/wc/qcmain.aspx?d=125607
QCWIN:缺陷编号= 125607