библиотека не найдена для -lPods - PullRequest
322 голосов
/ 26 марта 2012

Я получил ошибку при архивировании проекта. Это мое окружение.

  • Mac OS Lion
  • Xcode 4.3.1
  • iOS SDK 5.1

Цель развертывания проекта:

IPHONEOS_DEPLOYMENT_TARGET 3.2

Ошибка показывает:

ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Полагаю, Pods - это CocoaPods, которые я использовал для управления зависимостями проекта XCode. https://github.com/CocoaPods/CocoaPods

Это мой подфайл

platform :ios  
dependency 'libPusher', '1.1'

Я не уверен, что означает ошибка?

Ответы [ 41 ]

27 голосов
/ 01 декабря 2013

Вики CocoaPods на GitHub имеет ответ прямо в их FAQ :

  • Перейти к Product > Edit Scheme
  • Нажмите Build
  • Добавьте статическую библиотеку Pods и убедитесь, что она находится вверху списка
  • Очистите и соберите заново
  • Если это не сработает, убедитесь, что источником спецификациипытаюсь включить был вытащен из github.Сделайте это, посмотрев в <Project Dir>/Pods/<Name of spec you are trying to include>.Если оно пустое (не должно быть), убедитесь, что в ~/.cocoapods/master/<spec>/<spec>.podspec указан правильный URL-адрес github.
  • Если все еще не работает, проверьте настройки местоположения сборки XCode.Перейдите к Preferences -> Locations -> Derived Data -> Advanced и установите для местоположения сборки «Относительно рабочей области».

Screen shot

12 голосов
/ 11 февраля 2014

Я переименовал проект в «NBSelector» из «Партнеры».

После переименования проекта произошла ошибка «Библиотека не найдена для libPods-Partners». Xcode пытался связать старый файл Partners.a. Просто удалите его, если podInstalled после переименования.

enter image description here

11 голосов
/ 30 января 2014

Использование ONLY_ACTIVE_ARCH = NO во всех модулях решило проблему для меня. Чтобы сделать это постоянным, я добавил хук post_install к своему Podfile:

post_install do |installer_representation|
  installer_representation.project.targets.each do |target|
      target.build_configurations.each do |config|
            config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
      end
  end
end

pod install и все готово.

8 голосов
/ 23 мая 2012

Вы создали «Дистрибутив» или аналогичную конфигурацию для архивов Ad-Hoc и App Store? Как и многие другие, я следовал рекомендациям Apple и назвал конфигурацию «Release», назвал ее «Distribution» и установил для нее различные правила подписи. Ну, может быть, это была рекомендация, прежде чем они представили схемы и опцию «Распределить» в Организаторе, во всяком случае, я просто имел ее раньше.

Тогда у меня была такая же проблема со стручками. При отладке все работало хорошо, но архивирование не удалось с ошибкой ссылки. После того, как я попробовал то и это, я изменил конфигурацию архива моего исходного проекта с «Распространение» на «Выпуск», и ошибка связи исчезла.

Тем не менее, архив не был обнаружен в Организаторе, хотя я мог найти его в файловой системе, но он имел размер 0.

Последний шаг для исправления всего этого - изменить настройку «Пропустить установку» для конфигурации «Освобождение» на «НЕТ». Обратите внимание, что вы должны сделать это только для вашего основного проекта, но не для проекта Pods. Лучше оставить проект Pods как есть, так как он генерируется каждый раз, когда вы запускаете 'pod install'.

Обновление Только что получил ответ от разработчиков CocoaPods Кажется, это не работает для меня, так как я правильно настроил конфигурацию модулей. Но это может помочь кому-то еще.

8 голосов
/ 29 мая 2013

В моем случае проблема заключалась в том, что для местоположения производных данных XCode была выбрана опция «Legacy». Цель CocoaPods (libPods.a) создавалась правильно, но Xcode искал ее не в том месте.

Переключение на «Уникальный» (по умолчанию) решило проблему. Вы можете сделать это, перейдя в «Настройки»> «Местоположения» и нажав кнопку «Дополнительно» ...

5 голосов
/ 14 февраля 2013

Только добавление «Пути поиска в библиотеке» (в настройках сборки «MyProject») в «Pods / build / Debug-iphonesimulator» работало для меня (при использовании симулятора).: https://github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473

4 голосов
/ 23 сентября 2013

Если вы архивируете для iOS7 и Xcode5 и получили эти ошибки, перейдите по этой ссылке. Похоже, Apple отказывается от архитектуры, которая нужна для какао https://github.com/CocoaPods/CocoaPods/pull/1352

4 голосов
/ 08 июля 2014

Я обнаружил, что выбор «Найти неявные зависимости» (в рамках схемы продукта / редактирования) решит эту проблему вместо того, чтобы добавлять стручки в качестве цели.

3 голосов
/ 20 августа 2014

Я прошёл каждый ответ здесь, но для меня это было безумно просто ... Перейдите в Target -> Build Phases, затем удалите libPods-YourProject.a, затем добавьте его снова, используя «+».Не беспокойтесь о том, что библиотека красная, это нормально.

3 голосов
/ 15 июня 2016

Я использовал старую версию cocoapod после обновления cocoapods, она предлагает мне обновить установленный модуль из-за серьезного обновления, так как я обновляюсь после долгого времени.Я обновляю его и обновляю стручки новой версии.Но после этого я получил ошибку вроде library not found for -lPods-xxxprojectName-xxxxxpodName

После того, как попробовал так много решений, приведенных в ответе в этой статье, ни одна из них не сработала для меня.Затем я перешел к настройке своего проекта и обнаружил, что путь к модулю был изменен на Other Linker Flag

Проверьте правильность имени модуля на Manage Schemes и сравните его в Other Linker Flag, измените его, если нетаналогично

Старый путь стручка был -l"lPods-xxxprojectName-xxxxxpodName"

Но новые стручки были только xxxxxpodName, поэтому я заменил Other Linker Flag на новый, как показано ниже

Изменен путь к модулю -l"xxxxxpodName", и он работает.

Я не знаю идеальной причины этого, но, возможно, это поможет кому-нибудь.

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