Библиотека не найдена для -lPods

У меня возникла ошибка при архивировании проекта. Это моя среда.

  • Mac OS Lion
  • Xcode 4.3.1
  • SDK 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'

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

Ответ 1

Вы открываете рабочее пространство (которое было создано CocoaPods) вместо xcodeproj?

Ответ 2

Я разделил приложение и целевые объекты в подфайле с помощью

target :App do
    …
end

target :AppTests do
    …
end

Это привело к появлению двух новых продуктов libPods-App.a и libPods-AppTests.a соответственно, и они сделали предыдущий продукт libPods.a устаревшим. Мне пришлось удалить этот продукт из раздела Link Binary With Libraries Section конфигурации Сборка фаз обеих целей.

Ответ 3

Сегодня я столкнулся с подобной проблемой.

  • Я настраиваю новый проект
  • Я установил cocoa pods
  • Я создал новую конфигурацию Preview вместе с существующими Debug и Release
  • Теперь при компиляции в этой новой конфигурации Preview компилятор не сможет связать с Pods и дать мне это сообщение:

    ld: library not found for -lPods
    

Решение:

Мне нужно было запустить

 pod install

и, таким образом, конфигурирование кокоаподов для новой конфигурации Preview. Он обновил мой проект, рабочее пространство и файл проекта Pod, и проблема исчезла.

Ответ 4

Убедитесь, что вы открываете .xcworkspace, а не .xcodeproj

Ответ 5

Не решение для меня работало, это действительно невыносимо, есть файл libpods.a (который был красным), я удалил его и все работало нормально! Приветствую меня;)

Ответ 6

Я разделил свои списки элементов в Podfile для разных целей, например:

target :ABC do
  pod 'KissXML', '~> 5.0'
  pod 'libPhoneNumber-iOS', '~> 0.7.2'
end

target :ABCTests do
  pod 'OCMock', '~> 2.2.1', :inhibit_warnings => true
end

И запустил pod install

Это создало новую библиотеку libPods-ABC.a, к которой должен был привязываться мой двоичный файл. Но ошибка заключалась в том, что она не удаляла предыдущую библиотеку, то есть libPods.a.

Решение. Извлеките библиотеку libPods.a из Build Phases из Link Binary With Libraries.

Ответ 7

если у вас возникают проблемы с этим на cocoapods v25/Xcode 5

Проект Pods Xcode теперь устанавливает для параметра ONLY_ACTIVE_ARCH значение YES в настройке Debug. Вам нужно будет установить то же самое в своем проекте/цели, иначе сборка завершится с ошибкой.

https://github.com/CocoaPods/CocoaPods/wiki/FAQ#running-into-build-failures-after-migrating-to-xcode-5-and-cocoapods-0250

UPDATE Убедитесь, что у вас есть последние драгоценные камни /cocoapods

  • система обновления gem
  • gem update cocoapods

Вы захотите перестроить проект, используя Pod Установите для восстановления проекта.

Ответ 8

Если Xcode жалуется при связывании, например. Библиотека не найдена для -lPods, она не обнаруживает неявные зависимости.

Перейдите в раздел Product > Edit Scheme Нажмите "Построить" Добавьте статическую библиотеку Pods и убедитесь, что она находится в верхней части списка. Очистите и постройте снова Если это не работает, убедитесь, что источник для спецификации, которую вы пытаетесь включить, был вытащен из github. Сделайте это, посмотрев в /Pods/. Если он пуст (его не должно быть), убедитесь, что в файле ~/.cocoapods/master//. Если все еще не работает, проверьте настройки местоположения сборки XCode. Перейдите в раздел "Настройки" → "Местоположения" → "Производные данные" → "Дополнительно" и установите место сборки в "Относительно рабочей области".

http://docs.cocoapods.org/guides/getting_started.html

Ответ 9

У меня был установлен старый файл libPod.a(возможно, вызванный изменением целей).

Настройки проекта Фазы сборки Ссылка на двоичные файлы с библиотеками

Обычно кокоаподы включают только одну библиотеку, такую ​​как libPods-target.a или libPods.a. Я решил это, удалив дубликат.

Ответ 10

У меня была та же проблема, когда я редактировал подфайл, добавляя цель, которую я использовал без целевой.

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

Подумав об этом, я обнаружил, что под целевыми свойствами → вкладка "Общие" → раздел "Связанные рамки и библиотеки". Были новые libPods-xxxx.a и старые libPods.a

Я только что удалил libPods.a, и все сработало нормально.

Ответ 11

Wiki 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

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

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, и все готово.

Ответ 13

Я переименовал проект в "NBSelector" из "Partners".

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

enter image description here

Ответ 14

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

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

Однако архив не появился в Organizer, хотя я мог найти его в файловой системе, но он имел размер 0.

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

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

Ответ 15

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

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

Ответ 16

Только добавление "путей поиска библиотеки" (в настройках сборки "MyProject" ) к "Pods/build/Debug-iphonesimulator" работало для меня (при использовании симулятора).

Получил это отсюда: https://github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473

Ответ 17

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

Ответ 18

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

Ответ 19

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

Ответ 20

Решил его, выполнив следующие шаги:

  • Обновите установку коко-порта. ($ [sudo] gem install cocoapods)
  • Переустановите свои зависимости в рамках своего проекта. (pod install)
  • Очистить и перестроить/архивировать.

Ответ 21

В моем случае pod install исправлена ​​проблема, после создания схем распределения и выпуска.

Ответ 22

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

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

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

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

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

Изменен для pod path -l"xxxxxpodName", и он сработал.

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

Ответ 23

У меня такая же проблема при архивировании для отправки. Обсуждение этой проблемы можно найти здесь: https://github.com/CocoaPods/CocoaPods/issues/155

Итак, для меня работают два метода:

  • Настройка "Настройки → Местоположения → Дополнительно" на "Пользовательский (относительно рабочей области)" ИЛИ
  • Установите подфайл под - platform :ios, :deployment_target => "5.0"

Ответ 24

Использование Xcode 5 с iOS 7

Это то, что я сделал после того, как застрял в течение часа. Удалите ARM64 из настройки сборки > Действительная архитектура.

ADDED: Кроме того, для моего случая это не было определение местоположения данных. Я выбрал уникальное место для сборки.

Ответ 25

Если вы используете iOS7 и Xcode 5, выполните:

  • Выберите проект Pods.
  • Перейдите в раздел "Целевые списки" и в настройках сборки, выберите "Архитектуры" - "Стандартные архитектуры" (armv7, armv7s).
  • Сделайте то же самое для каждой цели вашего проекта Pods.

Ответ 26

Я пробовал КАЖДЫЙ ответ в этой ветке безрезультатно. Наконец, я разрешил свою проблему, сопоставляя "Pre-Configuration Build Products Path" в моем целевом проекте со значением в проекте Pods. Оказывается, они строят до двух разных мест вывода. Ни одно из других предложений в этой теме не было релевантным для меня. Было бы здорово, если бы XCode дал полезное описание ошибки (например, ПОЧЕМУ он не может использовать lib - File Not Found, не найдено подходящей архитектуры и т.д.).

Ответ 27

В этой проблеме, если вы уже установили и обновили pod в своей системе, ваш Xcode не сможет найти библиотеку Pods. Чтобы решить эту проблему, проверьте следующие причины:

  • Вы используете рабочее пространство.
  • Создается библиотека Pods.
  • Библиотека Pods указана в группе продуктов вашего проекта.
  • Ваша цель включает библиотеку Pods в ссылке с фазой сборки фреймов.

Ответ 28

попробуйте

link_with 'YouTarget1', 'YouTarget2'...

Мой проект работал, цели внезапно прекратили компиляцию. Затем добавил "link_with" и вернулся к нормальному состоянию.

По-видимому, теперь он просто подключается к первой цели, это то, что говорит ссылка:

http://guides.cocoapods.org/syntax/podfile.html#link_with

Ответ 29

попробуйте открыть файл xcworkspace вместо файла xcodeproj