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

185

Я получаю эти ошибки, когда пытаюсь создать приложение для iOS.

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

Ld /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator/Totalbox.app/Totalbox normal x86_64
cd /Users/Markus/Development/xcode/totalbox-ios
export IPHONEOS_DEPLOYMENT_TARGET=7.1
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -L/Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator -F/Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator -filelist /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Intermediates/Totalbox.build/Debug-iphonesimulator/Totalbox.build/Objects-normal/x86_64/Totalbox.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -ObjC -framework CoreGraphics -framework Foundation -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=7.1 -framework CoreGraphics -framework UIKit -framework Foundation -lPods -Xlinker -dependency_info -Xlinker /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Intermediates/Totalbox.build/Debug-iphonesimulator/Totalbox.build/Objects-normal/x86_64/Totalbox_dependency_info.dat -o /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator/Totalbox.app/Totalbox

PODS ROOT в настройках сборки:

${SRCROOT}/Pods

Я не создавал этот проект Xcode - просто вытащил его из git, чтобы проверить.

МРК
источник

Ответы:

601

Если проект использует CocoaPods, следует всегда открывать .xcworkspaceфайл вместо .xcodeprojфайла.

H6.
источник
2
Я также нашел полезным создать цель pod, а не обычную цель Xcode.
Дон Саймон
1
После того, как я открою его, я вообще не смогу запустить свой проект. что я должен делать?
Инуяша
Я заметил, что ссылка на Podsнаходится в, .xcodeprojно не в .xcworkspace, следовательно, почему это решение работает.
Джексонкр
1
Перейдите в папку проекта и запустите «pod update». Если у вас нет модуля, найдите его как установить.
Джастинко
2
Я получил это сообщение об ошибке при открытии .xcworkspace (точнее, это работало один раз на Mac, а не на другом). В моем случае обнаружена проблема, связанная с переименованием проекта и последующим копированием его на другой компьютер , библиотеки не были скопированы на новое место. сравнить: /Users/[USERNAME]/Library/Developer/Xcode/DerivedData/[OLDPROJECTNAME]-[LONGRNDCHARS]/Build/Productsс:/Users/[USERNAME]/Library/Developer/Xcode/DerivedData/[NEWPROJECTNAME]-[LONGRNDCHARS]/Build/Products
Ятко
97

Была и эта проблема. Что-то не так с моей установкой CocoaPods. Никакие модули, кроме KIF, не устанавливались должным образом. Я следил за комментариями в этой теме, чтобы помочь.

По сути, мне нужно было убедиться, что Build Active Architectures Onlyнастройки для моего проекта и проекта Pods были одинаковыми.

привлекательный
источник
7
Я должен был удостовериться, что это было также одинаково между целями моего проекта и целями стручка ...
Нимрод Шай
Это случается со мной один раз каждые 6 месяцев, и я никогда не могу вспомнить, как я решил это в прошлый раз ... Построить только активную архитектуру. , , Можем ли мы все помнить
Kanongata
51

После нескольких часов исследований это решение сработало для меня:

(отказ от ответственности: результаты могут отличаться в зависимости от обстоятельств)

Library not found -lPods-(someCocoapod)ошибка была из - за нескольких записей в файле:

Settings(Target) > Build Settings > Linking > 'Other Linker Flags'

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

Слишком много часов потеряно ...

Мое исправление:

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

damote
источник
работал как шарм, спасибо. У меня была эта проблема только при обновлении до Swift 2.0 на El Capitan. Работал отлично раньше.
Ovi
У меня есть только $ (унаследованный), и в то же время у меня есть эти расстраивающие обманщики. Где я могу отредактировать исходное значение переменной $ (наследуемой)?
Николай
Вы спасли мой рабочий день .... застряли в этом выпуске на некоторое время ... это произошло потому, что я удалил весь проект pod и заново добавил его
Михир Мехта
Исправлено и для меня. Никогда бы не понял это сам!
bmueller
Вы победили! Работает как шарм
Роб Сандерс
31

Похоже, что проект использует кокоаподы . и что файлы отсутствуют в вашем проекте.

Вы не можете просто скачать его с Git. Вам нужно установить его из cocoapods.

для получения дополнительной помощи вы можете следовать Руководству по ознакомлению с CocoaPods.

Если проект использует, CocoaPodsбудьте внимательны, чтобы всегда открывать .xcworkspaceфайл вместо .xcodeprojфайла

Рахул Патель
источник
1
@RahulPatel Как установить конкретный файл, пожалуйста, поделитесь командой
Ashok Londhe
Если вы хотите использовать новую бета-версию, вы можете использовать:pod 'GoogleAds-IMA-iOS-SDK-For-AdMob', '3.0.beta.16'
Berendschot
27

Если у вас есть несколько целей в вашем проекте, Cocoapods, возможно, хорошо интегрировались только с одной из них.

Мне приходилось вручную ссылаться на libPods.a«Связывать двоичные файлы с библиотеками» для каждой дополнительной цели, которую я имел.

libPods.a в моем списке фреймворков

Ризван Саттар
источник
я думаю, что pod install не интегрировал файл libPods.a со всеми целями, так как Rizwan isntruction я добавил, и он работает ... Спасибо Rizwan Sattar
Wagh
Это сработало для меня, хотя оно не было показано красным. После этого я запустил установку pod, но она не была добавлена, но, похоже, все работает.
Жюль
2
На самом деле мне нужно было удалить устаревшую (my-project-name) .a библиотеку, потому что я переименовал проект раньше, и он просто застрял там. Я переоценил ваш ответ, потому что он дал мне представление о том, где может быть проблема.
Калафун
Вы спасатель жизни!
Юливи
24

Моя проблема была исправлена ​​следующим конфигом:

Build Active Architecture Only: YES
Дурул Далканат
источник
Это сработало для меня, когда я столкнулся с проблемой с SDWebImage .... для тех, кто нашел свой путь здесь для этого компонента Cocoapod
Скотт D
Это решает эту проблему для меня, но вызывает другую. Мне нужно строить для всех архитектур, а не только для активной.
HotFudgeSunday
В старом коде я интегрирую стручки. Я сталкиваюсь с той же проблемой. Выше ответ помог.
Шашанк Кульшреста
15

Если кто-то пришел сюда, чтобы устранить ошибку react-native-fbsdkпосле ее установки Cocoapods, имейте в виду, что вы должны удалить все остальные файлы .a на этапах сборки ваших проектов и сохранить только .a от вызванных cocoapods libPods-WhateverAppName.a.

Только то, что осталось здесь

Обычно это вызвано rnpm linkтем, что rnpm работает и работает.

После того, как я удалил файл .a из файла facebook из моих фаз сборки, мой проект снова заработал.

SudoPlz
источник
11

Эту проблему, связанную с lPods, можно исправить, выполнив следующие шаги

  • Выберите цель проекта.
  • Перейти "Build Phases"в "Link Binary With Libraries".
  • Теперь удалите ".a"файл той библиотеки, которая создает проблему.
  • Очистить и построить.

Это будет работать

Абузар Амин
источник
В моем случае удаление libstdc++.6.dylibрешило проблему!
Игорь де Лоренци
Как и где вы удалили «libstdc ++. 6.dylib», так как мне нужно удалить «-lstdc ++. 6». Я получаю "библиотека не найдена для -lstdc ++. 6"
Хари Нараянан
10

Ни один из приведенных выше ответов не помог мне.

То , что я сделал вместо этого работать pod installс podкомандой наружу из targetсекции. Так, например:

#WRONG
pod 'SOMEPOD'

target "My Target" do
    pod 'OTHERPODS'
end

Я быстро исправил это и вернул заброшенный модуль обратно в targetраздел, где он находился, и pod installснова побежал :

# CORRECT
target "My Target" do
    pod 'SOMEPOD'
    pod 'OTHERPODS'
end

Но в то же время произошло то, что -libPods.aбиблиотека была добавлена ​​в мои связанные библиотеки, которых больше нет и не должно быть, так как уже есть-libPods-My Target.a есть.

Таким образом, решение состояло в том, чтобы войти в Общие настройки моей Цели и перейти к Связанным фреймворкам и библиотекам и просто удалить -libPods.aиз списка.

подливка
источник
Я правильно установил cocoapods для своего проекта, но у меня была та же ошибка, что и у OP. Удаление -libPods.a решило это для меня. Спасибо, сэр.
Коротков Н.Я.
Я обновлял старый проект, удалил старый Podfile и побежал pod initустанавливать новый, и обнаружил, что старый файл похож на ваш # WRONG, а новый файл похож # CORRECT. Спасибо!
Би Джей Миллер
8

Мои шаги:

  1. Удалите папку «pods» и файл «Pods».
  2. Введите «pod install» в Терминал.
  3. Введите «pod update» в Терминал.

В дополнение к тому, что для «Build Active Architectures» было задано значение YES, как упоминалось в предыдущих ответах, это было то, что сделало это для меня.

Дэвид Лю
источник
+1 В моем случае, если это -lHelpshiftили конкретное название стручка. Тогда я удаляю только определенную папку, таким образом она есть Pods/Helpshift. Тогда делай pod installснова. Нет необходимости обновлять. Это работает сейчас.
haxpor
1
Помогло удаление всех модулей и их переустановка.
Санад
7

Если бы тот же вопрос после обновления Deployment targetот 7.0до 8.0и включенияuse_frameworks!

cocoapodsне удалял ранее созданные PodName.aфайлы изFrameworks раздела моего проекта.

Поэтому мне пришлось удалить их вручную, потому что они вызвали linker error

Тим
источник
4

Удалите все соответствующие файлы / папки источника импортированных cocoapods, кроме podfile.

install cocoapod снова. Это должно очистить любое избыточное извлечение из исходного источника.

thatzprem
источник
3

Когда вы клонируете проект откуда-то, использующим Cocoapods, вам необходимо установить их в свой проект.

Здесь пошагово, что нужно сделать:

  • 1) клонировать исходный код на локальную машину;
  • 2) закрыть проект xcode (если открыт);
  • 3) установите приложение cocoapods на ваш Mac, выполнив следующую команду в терминале: « gem install cocoapods », добавьте « sudo» » в начале, если не сработало;
  • 4) зайдите в корень вашего проекта xcode с помощью команды " cd " в терминале;
  • 5) у вас должен быть Podfile в этой папке; если вы хотите проверить его дважды, используйте команду « cat Podfile », он отобразит содержимое этого файла с библиотеками, которые должны быть установлены в вашем проекте;
  • 6) затем используйте команду « pod install » для загрузки и установки библиотек в ваш проект; Podfile.lock будет создан и {Ваше имя} проекта .xcworkspace файл;
  • 7) отныне вы должны использовать {имя вашего проекта} .xcworkspace, чтобы открыть его в xcode;

Удачи!

Ренат Гатин
источник
3

Это была моя проблема при попытке интегрировать Firebase в мой проект Xcode с использованием cocoapods

library not found for -lGoogleToolboxForMac
linker command failed with exit code 1 (use -v to see invocation)

После нескольких часов поиска и опробования различных исправлений, перечисленных в стековом потоке, моя проблема была окончательно решена с помощью следующих шагов

  1. Перейти Build Settings, найти Other Linker Flags, удалить все ожидаемые значения$(inherited) Образ

Сделайте это для всех целей.

  1. Удалить папку pods. ( ios/Pods)
  2. Делать pod update

Вуаля! Все ошибки компоновщика исчезнут.

Hariks
источник
Это должно было произойти и для меня. Тем не менее, в моем случае это было приложение с естественной реакцией, добавленное в Firebase Analytics. По состоянию на июль 2018 года все приложения должны быть собраны с iOS 11 для Apple: developer.apple.com/ios/submit/ После того, как я перешел на вкладку «Общие», прокрутил вниз до «Информация о развертывании / Цель развертывания» и изменил ее с 10.x, что это то, на что я нацелился, на 11.x - приложение построено / архивировано, и я смог отправить.
Bo_
2

Для меня следующее сработало.

  1. Перейдите к «Цель проекта -> Настройки сборки -> Предварительная обработка -> Макросы препроцессора». Установите "COCOAPODS = 1" во всех Отладке, Интеграции, Выпуске под "Макросами препроцессора"
  2. Добавьте следующее в «Другие флаги компоновщика» в разделе «Цель проекта»
    1. $ наследуется
    2. -ObjC
    3. -lc ++
    4. -all_load

Очистите и запустите проект. Если ошибка по-прежнему получает то же самое, попробуйте установить «Цель проекта -> Параметры сборки -> Создать только активные архитектуры», установить «Отладка» на «ДА» и установить «Интеграция и выпуск» на «Нет». Затем повторите ту же настройку «Build Active Architectures Only» для всех «целей модулей»

Очистите и запустите проект. Если вы получаете следующую ошибку

 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).

Тогда попробуйте мистер Майк ответить по этой ссылке

Xcode 5.1 - нет архитектур для компиляции (ONLY_ACTIVE_ARCH = YES, активная arch = x86_64, VALID_ARCHS = i386)

Надеюсь, поможет!

Sakthimuthiah
источник
2

В проекте с несколькими целями у меня возникла та же проблема после изменения имени схемы и приложения, и я попытался обновить модули. Эта проблема возникла из-за нескольких записей в Этапы сборки -> Связать двоичные файлы с библиотеками, в которых была указана как предыдущая библиотека .a, так и текущая, а предыдущая больше не существовала. Удаление библиотеки оттуда очистило проблему.

Shardon
источник
1

Мой путь

  1. создайте новый проект и установите модуль, он будет работать без ошибок.

  2. Скопируйте текст в «Другие флаги компоновщика» в новом проекте в старый проект. Сделать старый проект таким же новым проектом.

  3. Проверьте «Пути поиска заголовка» тоже.

Супапон Пик Пукнавин
источник
1

Для меня это работает. Я изменил название своего приложения с someApp на otherApp. И я использую какао-бобы для интеграции нескольких сторонних сервисов. Поэтому из-за этого добавлено 2 файла libPod (поскольку я изменил название и цель приложения). Наконец мне пришлось удалить один libPod. И это сработало.

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

Нарасимха Налламсетти
источник
1

Я получил ту же ошибку.

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

Исправление : Позже я обнаружил, что Рабочая область автоматически создается внутри существующего проекта при добавлении зависимостей. И работать над этим рабочим пространством.

Взант
источник
В этом ответе четко не указано, как исправить заданный вопрос
Марк
1

Приведенное ниже решение сработало для версии core-plot 2.3. Сделайте следующие изменения в разделе других флагов компоновщика.

1.Добавьте $ (унаследовано) и перетащите этот элемент в верхнюю позицию. 2. Удалите префикс «Pods-» из -l «Pods-fmemopen», l «Pods-NSAttributedStringMarkdownParser» и -l «Pods-MagicalRecord».

если проблема остается, наконец, посмотрите, установлен ли PODS_ROOT или нет. Вы можете проверить это в пользовательском разделе.

Сайкиран К
источник
1

У меня такая же проблема

pod install и pod update в командной строке решают мою проблему

tamtoum1987
источник
1

Если проект использует CocoaPods, следует всегда открывать файл .xcworkspace вместо файла .xcodeproj. если вы используете .xcworkspace, переустановите файл pod, удалив pods, и снова вставьте pods и установите его !!! это сработало для меня

Chintu классный ребенок
источник