ld: неверная запись для архитектуры arm64 - PullRequest
1 голос
/ 01 февраля 2020

Я создаю фреймворк для tvOS и использую программное обеспечение для запутывания. Все источники скомпилированы с -emit-llvm, обфускатор обрабатывает ИК-код LLVM, затем он компилируется в .o с clang++, затем вызывается ld для создания окончательного двоичного файла, и ld завершается с ошибкой:

ld: Invalid record for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Program xcrun returned error code 1

Воспроизводится на разных машинах с Xcode 11.2.1 и 11.3.

Как я могу устранить эту ошибку? Я добавил -v к флагам компоновщика, но он не добавил никаких подсказок к выводу.

1 Ответ

0 голосов
/ 04 февраля 2020

Отвечая на мой собственный вопрос еще раз, на случай, если кто-то еще столкнется с этой проблемой.

В моем случае проблема была вызвана одной из библиотек, на которую я ссылался, которая была построена для arm64e для tvOS , Это был толстый двоичный файл с кусочками arm64, arm64e и x86_64. По какой-то причине ld это не понравилось (хотя я создавал фреймворк только для arm64) и выкидывал эту ошибку. Удаление ломтика arm64e устранило проблему.

Еще одна интересная деталь заключается в том, что отладочная сборка прекрасно связана с этой библиотекой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...