Подтвердить что ты не робот

Ld: библиотека не найдена для ошибки -lcrt1.3.1.o при запуске приложения в устройстве с xcode 8.0 с iOS10

После обновления xcode до 8.0 мой проект приложения с ошибкой для целевого устройства, но успешно сработает для симулятора.

Ошибка: ld: библиотека не найдена для -lcrt1.3.1.o

Какое решение для этой ошибки.

4b9b3361

Ответ 1

Проведя много времени, я наконец получил причину этой ошибки.

Ошибка: ld: библиотека не найдена для -lcrt1.3.1.o

Решение: Если ваш источник проекта имеет цель развертывания от iOS 5.0, то измените его на iOS 6.0 или более позднюю версию, и ваша ошибка будет исправлена. Теперь это нормально работает и для устройства.

Ура!!!

Ответ 2

crt1.3.1.o - это библиотека, которая была включена в более старые iOS (и, следовательно, их SDK), но больше не присутствует в новых SDK. Однако, когда для цели развертывания проекта установлено более старое iOS (< 6.0, как обнаружил @Sandy), Xcode все еще пытается связать его.

Чтобы поддерживать поддержку iOS 5.x в новых Xcodes, нужно только скопировать crt1.3.1.o из старого Xcode в соответствующий …/usr/lib/ dir в новом Xcode. Xcode будет использовать только crt1.3.1.o, если целевой объект развертывания < 6.0- для проектов с целью развертывания ≥6.0 crt1.3.1.o остается неиспользуемым, а полученный связанный двоичный код идентичен тому, что было pre- …/usr/lib/crt1.3.1.o -addition.

Чтобы получить новый Xcode для правильной ссылки проекта с целью развертывания iOS 5.x:

  • Загрузите старый Xcode, который все еще имеет crt1.3.1.o из https://developer.apple.com/downloads/.

    Я использовал Xcode 5.1.1, хотя любой Xcode, поддерживающий iOS 5.x, должен работать (что, в соответствии с Википедией должно быть Xcode 4.2-6.4).

  • Откройте Xcode .dmg и на образ диска найдите файл /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS….sdk/usr/lib/crt1.3.1.o.

    Поскольку я использовал Xcode 5.1.1, мой был в …/iPhoneOS7.1.sdk/usr/lib/crt1.3.1.o.

  • Скопируйте в тот же каталог Xcode.app -relative в новом Xcode: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/crt1.3.1.o.

    My newer-Xcode в момент написания - это последняя версия Xcode 8.1 (в состав которой входят IOS 10.1 SDK и загружаемая поддержка iOS Simulator для iOS 8.1).


Обратите внимание, что вам нужно будет повторно выполнить эти шаги после каждого обновления Xcode, поскольку стандартный процесс обновления Xcode должен просто сдуть Xcode.app и все, что содержится в обновленном Xcode.app.

Также обратите внимание, что я успешно протестировал это с помощью Xcode 8.1 для создания приложения с целью развертывания iOS 5.0, который будет работать как на моем iOS 10.1.1 iPad Air 2, так и на моем iOS 6.1.3 iPhone 4S. Однако я не отправил сборку, используя этот процесс в iOS App Store. Хотя маловероятно, что сертификация Apple будет иметь проблемы с этим (так как это, в конце концов, их собственная библиотека iOS crt1.3.1.o, и поскольку нет другого способа создать приложение против последнего SDK, поддерживая поддержку iOS до 5.x, что почти наверняка является чем-то, что некоторые корпоративные клиенты все еще делают), я не могу сделать твердое обещание здесь.

Ответ 3

удалите строки -lPods- (someCocoaPod) в списке "Другие флаги компоновщика", но только если $(унаследовано) находится вверху. Сначала я был не уверен, но убедительным признаком было то, что я все еще видел ссылки на мои коко-каподы, когда покидал режим редактирования (унаследовал). Я тестировал в debug и release, оба из которых давали мне ошибки, и проблема была немедленно решена.

Ответ 4

Вместо использования библиотек из старой установки Xcode вы также можете просто перекомпилировать их из источников: https://github.com/mringwal/csu-ios