it-swarm.com.ru

библиотека не найдена для -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)

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

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

platform :ios  
dependency 'libPusher', '1.1'

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

309
angelokh

Вы открываете рабочую область (которая была сгенерирована CocoaPods) вместо xcodeproj?

586
alloy

Я поделил приложение и цели теста в Podfile, используя

target :App do
    …
end

target :AppTests do
    …
end

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

170
Andras Hatvani

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

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

    ld: library not found for -lPods
    

Решение:

Я должен был бежать

 pod install

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

116
Besi

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

63
Michal Gumny

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

51
Hemang

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

45
Ayush Goel

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

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

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

ОБНОВЛЕНИЕ Убедитесь, что у вас есть последние драгоценные камни/Cocoapods

  • система обновления драгоценных камней 
  • обновление драгоценного камня cocoapods

Вы захотите пересобрать проект, используя Pod Install, чтобы пересобрать проект.

44
johndpope

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

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

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

43
Sebastian Hojas

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

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

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

37
HoratioCain

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

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

После недолгих размышлений я обнаружил, что в целевых свойствах >> вкладка «Общие» >> раздел «Связанные фреймворки и библиотеки» появились новый libPods-xxxx.a и старый libPods.a

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

36
Khaled Annajar

Вики 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

27
Chris Schiffhauer

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

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

enter image description here

11
Naloiko Eugene

Использование 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 и все готово.

11
melle

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

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

8
Adam Sharp

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

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

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

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

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

8
i4niac

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

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

5
Jan M

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

4
StackRunner

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

4
John Paul Manoza

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

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

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

Старый путь к модулю был -l"lPods-xxxprojectName-xxxxxpodName"

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

Изменился на путь pod -l"xxxxxpodName", и это работает.

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

3
Bhavin_m

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

3
cph2117

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

2
kernix

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

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

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

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

пытаться 

link_with YouTarget1, YouTarget2 ...

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

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

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

1
Wagner Sales

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

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

ДОБАВЛЕНО: Кроме того, для моего случая не было получено местоположение данных. Я выбрал уникальное место для постройки. 

1
ytbryan

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

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

  1. Настройка «Предпочтения -> Местоположения -> Дополнительно» на «Пользовательский (относительно рабочей области)» ИЛИ
  2. Установите Podfile в - platform :ios, :deployment_target => "5.0"
1
BabyPanda

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

1
user3588900

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

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

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

pod update

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

1
Shobhit C

Я открыл рабочее пространство, но получил ту же ошибку.

Создать только активную архитектуру установить вДА

решить мою проблему.

0
Joeful6

Чтобы упростить ответ @ i4niac:

Другой распространенной причиной этого является несоответствие в конфигурации сборки схемы. В нашем случае наша схема AppName-AppStore имела «Release» в качестве конфигурации сборки архива вместо «AppStore» (может быть наоборот другие).

0
yonix

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

  • обновление какао-бобов: Sudo gem обновление какао-бобов
  • Обновление стручки: обновление стручка
  • В ваших модулях перейдите в «Настройки сборки»> «Архитектуры» и установите здесь «Архитектуры» и «Допустимые архитектуры» точно такие же значения, как в основном проекте.
0
Mumbar

Я была такая же проблема. В моем случае это была ошибка xCode. Все, что мне нужно было сделать, это удалить «Действительные арки», сделать чистку, заново добавить их, и я был в порядке. Также попробуйте обновленные cocoapods в целом.

0
anders

У меня это тоже было, Cocoapods версия 0.28.0

Это легко исправить, не читая долго: - удалите Cocoapods (Командная строка или AppCode) - удалите папку Podfile, Podfile.lock, Pods

  • переустановите Cocoapods
  • запустите вновь созданное рабочее пространство. 
0
brainray

Я пропустил libPods.a в target, поэтому первое, что нужно сделать, это добавить его в связанные фреймворки и библиотеки

Далее, Product -> Build for -> Profiling (или перед добавлением libPods.a, если вы его полностью пропустили) 

и, наконец, проверьте ваши Копировать ресурсы Pods script в Фазы сборки (Если он совпадает с вашей второй целью - иногда это зависит от Podfile и его целей). Тогда вы должны построить успешно.

0
Jakub Truhlář

переименовал файл some_project.workspace в some_project.workspace.backup и запустил установку $ pod. Он создал новый файл рабочей области, и ошибка исчезла.

0
Jdizzle Foshizzle

Я столкнулся с проблемой, когда я создал свой собственный .xcworkspace, который сохранял форму стручков, создавая свою собственную (где он присоединяет свою библиотеку). 

решение

Я переместил .xcworkspace, который я создал, снова запустил pod install и затем вручную слил свой .xcworkspace с одним pods , созданным открытием обеих рабочих областей и перетаскиванием файлов из одной рабочей области в другую.

0
Jacksonkr

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

0
Hoàng Nghĩa

Удаление папок кэша CocoaPods ~/Library/Caches/CocoaPods и модуль установки работает для меня.

0
kaushal

В моем случае номер 4 из FAQ по этой ссылке помог: https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods

Есть несколько дополнительных вещей, которые вы можете попробовать, если проблема не устранена.

0
user511