在Mac OS X上签署Firemonkey生成的dylib

时间:2014-09-16 21:44:51

标签: macos delphi code-signing firemonkey dylib

当我尝试在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

1 个答案:

答案 0 :(得分:1)

另一个问题的解决方案是直接在dylib中修补使用过的dylib的路径。这基本上是手动执行install_name_tool应该做的事情。但这不能帮助你进行协调设计。这基本上意味着你必须编写自己的代码签名工具,但是仍然不确定OSX是否会接受#34;破坏的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