2014-09-16 3 views
0

Когда я пытаюсь запустить codesign на dylib созданного FireMonkey Embarcadero, я получаю сообщение об ошибке:Подписывание FireMonkey сгенерированной dylib на Mac OS X

/Applications/Xcode.app/Contents/Developer/Toolchains/ XcodeDefault.xctoolchain/USR/бен/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

Решение по другому вопросу заключалось в исправлении путей используемых dylib непосредственно в dylib. Это было сделано вручную, что должен был сделать install_name_tool. Но это не поможет вам в кодовом кодировании. Это в основном означало бы, что вам придется написать свой собственный инструмент подписи кода, но тогда он все еще не уверен, что OSX примет подпись «сломанного 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 или Йосемити :

Отчет №: 125607 Статус: Open [MacOS] не может CodeSign libmidas.dylib для Apple Mac магазин http://qc.embarcadero.com/wc/qcmain.aspx?d=125607 QCWIN: Defect_No = 125607

+0

Я голосовал за QC, но я также подал ошибку отчет с Apple, так как я думаю, что это их вина, если у них есть недокументированные требования к структуре dylib. – JWWalker

+0

Обратите внимание, что [QualityCentral теперь закрыт] (https://community.embarcadero.com/blogs/entry/quality-keeps-moving-forward), поэтому вы больше не можете обращаться к ссылкам 'qc.embarcadero.com' , Если вам нужен доступ к старым данным QC, посмотрите на [QCScraper] (http://www.uweraabe.de/Blog/2017/06/09/how-to-save-qualitycentral/). –