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


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

  • 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)

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

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

platform :ios  
dependency 'libPusher', '1.1'

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

30 302

30 ответов:

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

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

target :App do
    …
end

target :AppTests do
    …
end

это привело к двум новым продуктам libPods-App.а и libPods-AppTests.а, соответственно и они сделали предыдущий товар libPods.а устарело. Мне пришлось удалить этот продукт из Связать Двоичный Файл С Разделом Библиотек на Собрать Фаз конфигурация обеих целей.

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

  1. создать новый проект
  2. я установил какао-бобы
  3. я создал новую конфигурацию Preview С Debug и Release
  4. теперь при компиляции на этот новый Preview конфигурация, компилятор не сможет связаться со стручками и дать мне это сообщение:

    ld: library not found for -lPods
    

решение:

что я должен был сделать для запуска

 pod install

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

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

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

Я разделил свои списки стручков в 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.

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

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

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

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

  • gem update system
  • gem обновление cocoapods

вы хотите перестроить проект с помощью Установка модуля для восстановления проекта.

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

Настройки Проекта ->Собрать Фаз ->связать двоичный файл с библиотеками

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

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

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

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

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

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

после того, как я задался вопросом, я обнаружил, что в разделе target properties >> General tab >> Linked Framework and Libraries появились новые libPods-xxxx.a и старый libPods.а

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

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

  • на Product > Edit Scheme
  • нажать на кнопку Build
  • добавьте статическую библиотеку модулей и убедитесь, что она находится в верхней части списка
  • "очистить и построить" еще раз
  • если это не работает, убедитесь, что источник для спецификации, которую вы пытаетесь включить, был извлечен из 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

использование ONLY_ACTIVE_ARCH=нет во всех стручках решило проблему для меня. Чтобы сделать это постоянным, я добавил крюк 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 и вы сделали.

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

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

enter image description here

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

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

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

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

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

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

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

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

здесь: https://github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473

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

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

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

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

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

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

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

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

изменен на pod path -l"xxxxxpodName" и это сработало.

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

решил его, выполнив следующие действия:

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

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

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

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

  1. настройка "настройки - > местоположения - > дополнительно" на "пользовательский (относительно рабочей области)" или
  2. установить Podfile в - platform :ios, :deployment_target => "5.0"

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

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

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

Если вы используете iOS7 и Xcode 5, Сделайте:

  • выберите свой проект стручков.
  • перейдите в целевые модули и в настройках сборки выберите архитектуры - > стандартные архитектуры (armv7, armv7s).
  • сделайте то же самое для каждой цели вашего проекта стручков.

Я пробовал каждый ответ в этой теме безрезультатно. Наконец, решена моя проблема путем сопоставления "путь сборки продуктов предварительной конфигурации" в моем целевом проекте со значением в проекте Pods. Оказывается, они строили в двух разных местах производства. Ни одно из других предложений в этой теме не было для меня актуальным. Было бы здорово, если бы XCode дал полезное описание ошибки (например, почему он не может использовать lib - файл не найден, не найдена соответствующая архитектура и т. д.).

в этом вопросе, если вы уже установили & обновление pod в вашей системе, то ваш Xcode не в состоянии найти стручки library.To устраните эту проблему, пожалуйста, проверьте следующие причины, которые могут иметь место:

  1. вы используете рабочее пространство.
  2. библиотека стручков строит.
  3. библиотека модулей указана в группе продуктов вашего проекта.
  4. ваша цель включает библиотеку Стручков в ссылку со сборкой фреймворков фаза.

попробовать

link_with 'YouTarget1', 'YouTarget2'...

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

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

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

Если вы все еще получаете эту проблему, попробуйте:

pod update

сделал работу для меня, надеюсь, это поможет вам.

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