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файл.


2
Я також вважаю корисним побудувати ціль стручка, а не звичайну ціль Xcode.
Дон Саймон

1
Після його відкриття я взагалі не можу запустити свій проект. що я повинен зробити?
Інуяша

Я помітив, що посилання на Podsце є, .xcodeprojале не в тому .xcworkspace, чому це рішення працює.
Джексонкр

1
Увійдіть у папку проекту та запустіть "pod update". Якщо у вас немає стручка, знайдіть, як його встановити.
Justinkoh

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
Я повинен був переконатися, що він також є рівним між цілями мого проекту та цілями підрозділу ...
Nimrod Shai

Це трапляється зі мною раз на 6 місяців, і я ніколи не можу згадати, як я це вирішив минулого разу ... Створюйте лише активну архітектуру. . . Нехай ми всі пам’ятаємо
Канонгата

51

Після годин досліджень це рішення спрацювало для мене:

(відмова від відповідальності: результати можуть змінюватися залежно від обставин)

Library not found -lPods-(someCocoapod)помилка була з - за кількох записів в файлі:

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

Багато інших публікацій змусило мене зазирнути туди, і я побачив зміни в помилці, коли я переплутався з записами, але я продовжував отримувати певні зміни на тій самій помилці.

Занадто багато годин втрачено ...

Моє виправлення:

видаліть рядки -lPods- (деякіCocoaPod) зі списку "Інші прапорці Linker", але лише якщо $ (успадковано) знаходиться вгорі. Спочатку я був не впевнений, але заспокійливим знаком було те, що я все-таки бачив посилання на свої какаоди, коли я вийшов з режиму редагування (успадковувався). Я перевірив налагодження та випуск, обидва з них мали мені помилки, і проблема була негайно вирішена.


працював як шарм, дякую. У мене була ця проблема лише під час оновлення до Swift 2.0 на El Capitan. Раніше прекрасно працював.
Ovi

Я маю $ (успадковану) лише, і в той же час я маю ці розчарувальні дупи. Де я можу змінити значення, яке є оригінальним, до змінної $ (успадкованої) змінної?
nickolay

Ви врятували мою людину дня .... застрягли в цьому питанні на час ... це сталося тому, що я видалив весь проект стручка і повторно додав його
Міхір Мехта

Виправлено і для мене. Ніколи б не зрозумів цього самостійно!
bmueller

Ти бив! Працює як шарм
Роб Сандерс

31

Здається, проект використовує какаоподи . і у вашому проекті відсутні файли.

Ви не можете просто завантажити його з git. Встановити його потрібно з какаоподів.

для отримання додаткової допомоги ви можете ознайомитись з Введенням у навчальний посібник 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 в моєму списку фреймворків


Я думаю, що установка стручка не є інтегрованим файлом libPods.a для всіх цілей, оскільки Rizwan isntruction я додав, і він працює ... Дякую Rizwan
Sattar

Це працювало для мене, хоча воно не було показано червоним кольором. Після цього я запустив встановлення pod, і він не додав його, але, здається, все працює.
Жуль

2
Насправді, мені потрібно було зняти застарілу бібліотеку (my-project-name) .a, тому що я перейменував проект раніше, і він просто застряг там. Я оцінив вашу відповідь, тому що вона дала мені уявлення про те, де може бути проблема.
kalafun

Ви рятувальник життя!
Yuliwee

24

Мою проблему виправили за допомогою наступної конфігурації:

Build Active Architecture Only: YES

Це спрацювало для мене, коли я зіткнувся з проблемою з SDWebImage .... для тих, хто знайшов тут свій компонент Cocoapod
Скотт Д

Це вирішує це питання для мене, але викликає інше. Мені потрібно будувати всі архітектури, а не лише діючі.
HotFudgeSunday

У старий код я інтегрую стручки. Я стикаюся з тим же питанням. Вище відповідь допомогла.
Шашанк Кульшрестха

15

Якщо хто -то прийшов сюди , щоб вирішити проблему з react-native-fbsdkпісля установки його з допомогою Cocoapods, майте на увазі , що ви повинні видалити всі інші файли .a в проектах збірки фаз і тільки тримати .a від cocoapods званих libPods-WhateverAppName.a.

Тільки це залишається тут

Зазвичай це викликано запуском rnpm linkі способом роботи rnpm.

Після того, як я видалив facebook core.


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зі списку.


Я встановив кокоаподи належним чином для свого проекту, але мав таку ж помилку, що і ОП. Видалення -libPods.a вирішило це для мене. Дякую вам, сер.
НКоротков

Я оновлював старий проект, перерізав старий Podfile і побіг pod initстворити новий, і виявив, що старий файл схожий на ваш # WRONGшлях, а новий файл схожий # CORRECT. Дякую!
BJ Miller

8

Мої кроки:

  1. Видаліть папку стручків і файл "Pods".
  2. Введіть "pod install" у термінал.
  3. Введіть "оновлення стручка" в термінал.

На додаток до того, що "Зробити активні архітектури" встановлено значення ТАК, як згадувалося в попередніх відповідях, саме це зробило для мене.


+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 Ще раз. Це повинно очистити будь-яке зайве витягнення з початкового джерела.


3

Коли ви клонуєте проект звідкись, де використовується Cocoapods, вам потрібно встановити їх у свій проект.

Ось поетапно, що вам потрібно зробити:

  • 1) клонувати вихідний код на локальну машину;
  • 2) закрити проект xcode (якщо він відкритий);
  • 3) встановити додаток cocoapods на ваш mac, запустивши цю команду в терміналі: " gem install cocoapods ", add " 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)

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

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

Зробіть це для всіх цілей.

  1. Видаліть папку стручків. ( ios/Pods)
  2. Зробіть pod update

Вуаля! Усі помилки в посиланнях не зникнуть.


Це мало відбутися і для мене. Однак і в моєму випадку додаток 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. -всі_завантаження

Очистіть та запустіть проект. Якщо помилка отримує те саме, спробуйте встановити "Ціль проекту -> Налаштування збірки -> Тільки активні архітектури", встановіть "Налагодження" на "ТАК" і встановіть "Інтеграція та випуск" на "Ні". Потім повторіть те саме налаштування "Створювати лише активні архітектури" для всіх "Цілей Pods"

Очистіть та запустіть проект. Якщо ви отримаєте таку помилку

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

Потім спробуйте відповісти містеру Майку за цим посиланням

Xcode 5.1 - архітектури немає для компіляції (ONLY_ACTIVE_ARCH = ТАК, активна арка = x86_64, VALID_ARCHS = i386)

Сподіваюся, це допомагає!


2

У проекті з декількома цілями у мене виникли ті самі проблеми після зміни назви схеми та додатків та спробу оновити стручки. Проблема виникла через кілька записів у фазах збірки -> Пов’язати бінарне з бібліотеками, де були перераховані як попередня бібліотека .a, так і поточна, а попередня вже не існувала. Видалення бібліотеки звідти усунула проблему.


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

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

встановлення стручка та оновлення стручка в командному рядку вирішують мою проблему


1

Якщо проект використовує CocoaPods, будьте в курсі завжди відкривати .xcworkspace файл замість .xcodeproj. якщо ви використовуєте .xcworkspace, будь ласка, перевстановіть файл стручка, видаливши стручки та знову вставіть стручки та встановіть його !!! це працювало для мене

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.