nie znaleziono biblioteki dla -lPods


334

Wystąpił błąd podczas archiwizacji projektu. To jest moje środowisko.

  • Mac OS Lion
  • Xcode 4.3.1
  • iOS SDK 5.1

Celem wdrożenia projektu jest:

IPHONEOS_DEPLOYMENT_TARGET 3.2

Błąd pokazuje:

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

Myślę, że Pods to CocoaPods, których użyłem do zarządzania zależnościami projektu XCode. https://github.com/CocoaPods/CocoaPods

To jest mój Podfile

platform :ios  
dependency 'libPusher', '1.1'

Nie jestem pewien, co oznacza błąd?


Przyczyna problemu, której nie udzieliła żadna odpowiedź. sprawdź tę odpowiedź tutaj: stackoverflow.com/questions/24050012/...
hasan

Odpowiedzi:


611

Czy otwierasz obszar roboczy (wygenerowany przez CocoaPods) zamiast xcodeproj?


26
Zrobiłem. Problem został rozwiązany po zmianie architektury wydania projektu Pods na „armv6 armv7”.
angelokh

10
Aha, w twojej Podfileokreśl platformę tak: platform :ios, :deployment_target => "3.2". To powinno skonfigurować go poprawnie przy następnym uruchomieniu pod install.
stop

248
Aby być jasnym dla początkujących, należy otwierać .xcworkspaceplik, a nie .xcodeproj. W ten sposób, oprócz twojego projektu, Xcode wie o projekcie w Pods/katalogu i jak zbudować libPods.a.
Jonathan Tran

13
W następstwie komentarza @ JonathanTran ... jeśli masz .xcodeprojotwarte, musisz je zamknąć przed otwarciem .xcworkspacepliku.
Ross

4
Zauważ, że projekt, którego używasz w strąkach, powinien również mieć ustawioną architekturę na armv6 armv7 (jeśli jest to opcja, której używasz w architekturze projektu strąków). Jeśli tego nie zrobisz, otrzymasz ten sam błąd.
Patrick Bassut

173

Oddzieliłem aplikację i cele testowe w Podfile za pomocą

target :App do
    
end

target :AppTests do
    
end

Doprowadziło to do powstania dwóch nowych produktów, odpowiednio, libPods-App.a i libPods-AppTests.a i sprawiły, że poprzedni produkt libPods.a stał się przestarzały. Musiałem usunąć ten produkt z link Binary z bibliotekami sekcji części Etapy budowanie konfiguracji obu celów.


3
Tak, to było dla mnie, po wypróbowaniu kilkunastu innych rzeczy wcześniej w tym wątku. Mój podfile ma dwa cele jak wyżej, więc libPods.a nie był budowany. Usunięcie libPods.a z sekcji Link Binary With Libraries „naprawiło” to (chociaż oczywiście mam teraz 32 wiadomości „Niezdefiniowane symbole” do posortowania, z powodu brakującej biblioteki SQLite itp.
Hot Licks

Jest to ta sama poprawka, co stackoverflow.com/a/21694261/581994 i kilka innych.
Hot Licks

Obecnie nadal występuje problem
nsantorello

„sprawili, że poprzedni produkt libPods.a stał się nieaktualny. Musiałem usunąć ...”
Vassily

To był dla mnie głównie problem. Z jakiegoś powodu miałem tam również plik binarny ze starszego celu testowego.
LJ Wilson,

119

Dzisiaj spotkałem podobny problem.

  1. Przygotowałem nowy projekt
  2. Zainstalowałem strąki kakaowe
  3. Stworzyłem nową konfigurację Previewwraz z istniejącą DebugiRelease
  4. Teraz podczas kompilacji w tej nowej Previewkonfiguracji kompilator nie będzie mógł połączyć się z modułami Pods i nie wyśle ​​mi tej wiadomości:

    ld: library not found for -lPods

Rozwiązanie:

Musiałem biec

 pod install

ponownie i tym samym konfigurując cocoapods dla nowej Previewkonfiguracji. Zaktualizował mój projekt, obszar roboczy i plik projektu kapsuły, a problem zniknął


1
To mnie również złapało. Zwłaszcza, że ​​kontynuował pracę długo po utworzeniu konfiguracji i dopiero po wyczyszczeniu moich danych pochodnych wystąpił problem.
Daniel Wood

I zwróć uwagę na ostrzeżenia wyświetlane w sekcji „Wysyłanie statystyk” danych wyjściowych „pod install --verbose” lub „pod update --verbose”, takich jak „Cel„ yourApp [Debug]] zastępuje „HEADER_SEARCH_PATHS `ustawienie kompilacji zdefiniowane w ...” lub „... cel zastępuje ustawienie kompilacji` OTHER_LDFLAGS` ... ”.
jk7

zmień Podgląd konfiguracji w ścieżce Kompiluj produkty dla poszczególnych konfiguracji , a następnie wykonaj instalację pod, pod nie zapisuje mojej wartości w projekcie pod, jakaś pomoc?
liu pluto,

Ach! Problem występował tuż po utworzeniu nowych konfiguracji rozszerzeń. Pierwsze 3 kroki pomagają mi zrozumieć problem. Dzięki!
iHarshil

70

Upewnij się, że otwierasz .xcworkspace, nie.xcodeproj


To był mój problem. Otwierałem projekt ze zwykłego pliku projektu Xcode. Gdy zaczniesz używać strąków kakaowych, musisz rozpocząć otwieranie projektu z pliku .xcworkspace, a nie z .xcodeproj.
HotFudgeSunday

hehe, zawsze to robię :)
yeahdixon

THIS THIS THIS
bryan

OMG Chcę cię przytulić. Zmieniłem tak wiele rzeczy, które nigdy nie były problemem na początek!
kjonsson,

53

Żadne rozwiązanie nie działało dla mnie, to jest naprawdę nie do zniesienia, jest plik libpods.a(który był w kolorze czerwonym) Usunąłem go i wszystko działa dobrze! Pozdrawiam mnie;)


6
Zdarzyło mi się również. Zmieniłem nazwę celu i utworzyłem ten problematyczny plik artefaktu .a.
seenickcode

Jeśli to zrobię, biblioteki dodane przez Cocoapod nie zostaną dodane do projektu.
Francisco Corrales Morales,

1
zrobiłeś mój dzień: D, były 2 cele i usunąłem jeden, ale jego strąki wciąż są i nie udało się zbudować, rozwiązane przez zwykłe usunięcie odniesienia do strąków tego celu
mohammad alabid

To samo mi się przydarzyło. Był to stary projekt, którego nie dotykałem od lat, ale nadal miał stary format Podfile itp.
Departamento B,

46

Podzieliłem swoje aukcje kapsuł Podfilena różne cele, takie jak:

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

I prowadziłem pod install

Stworzyło to nową bibliotekę, libPods-ABC.az którą mój plik binarny musiał się połączyć. Ale błąd polegał na tym, że nie usunął poprzedniej biblioteki tjlibPods.a .

Rozwiązanie: Usuń bibliotekę libPods.az Build Phaseso Link Binary With Libraries.



2
Rozwiązanie jest inne. Naprawiłem to, używając tego dokładnego rozwiązania.
cynistersix

Usuń bibliotekę libPods.a, a następnie zainstaluj pod, napraw problem dla mnie.
bisma

1
rozwiązano, gdy błąd jest eksportowany IPHONEOS_DEPLOYMENT_TARGET = 9.0 z „ld: nie znaleziono biblioteki dla -lPods”
jacksonfdam 18.10.16

Działa dla mnie po zmianie nazwy celu.
alsantos123

46

Podałem stary plik libPod.a (prawdopodobnie spowodowany przez zmianę celów).

Ustawienia projektu -> Fazy ​​kompilacji -> Połącz pliki binarne z bibliotekami

Zazwyczaj cocoapods zawierałyby tylko jedną bibliotekę, taką jak libPods-target.alub libPods.a. Rozwiązałem go, usuwając duplikat.


5
To zadziałało dla mnie. Dodałem obsługę kapsuły dla celów testowych (* Testy i * UITesty), a podstawowa konfiguracja zmieniona z Pods.debugna Pods-MyApp.debug, więc teraz potrzebuję tylko libPods-MyApp.a(była stara ikona „wyblakła” libPods.a),
Nicolas Miari

Nie było dla mnie wyblakłej ikony, ale było to jedyne działające rozwiązanie.
Yogesh Maheshwari

To samo tutaj. Dzięki
rmvz3,

Zmieniłem nazwę projektu i błąd się zdarza. Powyższe rozwiązanie działało dla mnie.
Guness

44

jeśli masz z tym problemy na cocoapods v25 / Xcode 5

Projekt Pods Xcode ustawia teraz ustawienie kompilacji ONLY_ACTIVE_ARCH na TAK w konfiguracji debugowania. Będziesz musiał ustawić to samo w swoim projekcie / celu, w przeciwnym razie kompilacja się nie powiedzie.

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

AKTUALIZACJA Upewnij się, że masz najnowsze klejnoty / cocoapods

  • system aktualizacji klejnotów
  • aktualizacja klejnotów cocoapods

Będziesz chciał przebudować projekt za pomocą Pod Install, aby przebudować projekt.


To było dla mnie, po dodaniu CP do bardzo starego projektu.
Josh Hudnall

To samo dla mnie - dodałem CP do bardzo starego projektu, mógł budować na symulatorze, ale jak tylko przełączyłem się na kompilację dla urządzenia, kompilacja nie powiodła się. Ta odpowiedź bardzo pomogła!
Florian

40

Jeśli Xcode narzeka podczas łączenia, np. Nie znaleziono biblioteki dla -lPods, nie wykrywa ukrytych zależności.

Przejdź do produktu> edytuj schemat Kliknij kompilację Dodaj bibliotekę statyczną Pods i upewnij się, że znajduje się na górze listy Wyczyść i buduj ponownie Jeśli to nie działa, sprawdź, czy źródło specyfikacji, którą próbujesz dołączyć, zostało wyciągnął z github. Zrób to, zaglądając do / Pods /. Jeśli jest pusty (nie powinien być), sprawdź, czy ~ / .cocoapods / master //. Podspec ma w nim poprawny adres URL git hub. Jeśli nadal nie działa, sprawdź ustawienia lokalizacji kompilacji XCode. Przejdź do Preferencji -> Lokalizacje -> Dane pochodne -> Zaawansowane i ustaw lokalizację kompilacji na „Względem obszaru roboczego”.

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


3
Pierwsza część naprawiła mój problem (Produkt> Edytuj schemat, dodaj strąki do budowy jako pierwszy element). Dziękuję
William Power,

Miałem ten problem w xCode 6.3 z cocoapods 0.36.0 i to go naprawiło. Dziękuję Ci!
ProgrammierTier

tak samo jak xcode 6.3 cocoapods 0.37 -> Dzięki !! oszalał na punkcie ustawień docelowych, a problemem był schemat. po prostu dodaj strąki.
altagir

36

Miałem ten sam problem, kiedy edytowałem Podfile, dodając cel, którego używałem wcześniej bez celu.

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

Po zastanowieniu się odkryłem, że pod właściwościami docelowymi >> zakładka Ogólne >> Połączone ramy i biblioteki, pojawiły się nowe libPods-xxxx.a i stare libPods.a

Właśnie usunąłem libPods.a i wszystko działało dobrze.


To też był problem dla mnie. Myślę, że źródłem problemu było uaktualnienie CocoaPods i formatu Podfile podczas programowania.
gklka,

2
Miałem dokładnie ten sam scenariusz po dodaniu celu do kapsuły. +1 za dokładność
Adriano Spadoni

27

Wiki CocoaPods na GitHub ma odpowiedź bezpośrednio w FAQ :

  • Iść do Product > Edit Scheme
  • Kliknij Build
  • Dodaj bibliotekę statyczną Pods i upewnij się, że znajduje się na górze listy
  • Oczyść i zbuduj ponownie
  • Jeśli to nie zadziała, sprawdź, czy źródło specyfikacji, którą próbujesz dołączyć, zostało pobrane z github. Zrób to, zaglądając do środka <Project Dir>/Pods/<Name of spec you are trying to include>. Jeśli jest pusty (nie powinien być), sprawdź, czy~/.cocoapods/master/<spec>/<spec>.podspec zawiera poprawny adres URL github.
  • Jeśli nadal nie działa, sprawdź ustawienia lokalizacji kompilacji XCode. Przejdź do Preferences -> Locations -> Derived Data -> Advancedi ustaw lokalizację kompilacji na „Względem obszaru roboczego”.

Zrzut ekranu


6
Natknąłem się również na ten problem, ale wydaje się, że nie mogę wykonać tych kroków. Utknąłem na „Dodaj statyczną bibliotekę strąków i upewnij się, że jest na górze listy”. Biblioteka statyczna nie wyświetla się po kliknięciu, aby dodać ją do schematu kompilacji. Dowolny pomysł?
Bay Phillips,

@BayPhillips Zamknij bieżący projekt i otwórz .xcworkspace utworzony w folderze projektu. następnie pojawia się biblioteka statyczna
Juneho Nam

12

Zmieniłem nazwę projektu na „NBSelector” z „Partners”.

Po zmianie nazwy projektu wystąpił błąd „Nie znaleziono biblioteki dla libPods-Partners”. Xcode próbował połączyć się ze starym plikiem Partners.a. Po prostu zmień go, jeśli masz podInstalled po zmianie nazwy.

wprowadź opis zdjęcia tutaj


idealne rozwiązanie dla mojego problemu :) ale po usunięciu strąków trzeba je dodać ponownie, jeśli chcesz go użyć
satheesh

11

Zastosowanie ONLY_ACTIVE_ARCH = NO we wszystkich zasobnikach rozwiązało problem. Aby to było trwałe, dodałem hak post_install do mojego pliku 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 i jesteś skończony.


8

Czy stworzyłeś „Dystrybucję” lub podobną konfigurację, aby tworzyć archiwa Ad-Hoc i App Store? Podobnie jak wielu innych, postępowałem zgodnie z zaleceniami Apple'a i nazwałem konfiguracją „Release”, nazwałem ją „Distribution” i ustawiłem dla niej różne reguły podpisywania. Cóż, być może była to rekomendacja przed wprowadzeniem schematów i opcji „Dystrybucja” w Organizatorze, zresztą właśnie ją miałem wcześniej.

Potem miałem ten sam problem z kapsułami. Wszystko działało dobrze podczas debugowania, ale archiwizacja nie powiodła się z błędem łącza. Po wypróbowaniu tego i zmiany konfiguracji archiwum mojego oryginalnego projektu z „Dystrybucji” na „Wydanie” i błąd łącza zniknął.

Jednak archiwum nie pojawiło się w Organizatorze, chociaż mogłem je zlokalizować w systemie plików, ale miało rozmiar 0.

Ostatnim krokiem do rozwiązania tego wszystkiego była zmiana ustawienia „Pomiń instalację” dla konfiguracji „Zwolnij” na „NIE”. Pamiętaj, że musisz to zrobić tylko dla głównego projektu, ale nie dla projektu Pods. Lepiej zostaw projekt Pods bez zmian, ponieważ jest generowany za każdym razem, gdy uruchamiasz „instalację pod”.

Aktualizacja Właśnie otrzymałem odpowiedź od twórców CocoaPods Nie wydaje mi się, żeby działała, ponieważ poprawnie skonfigurowałem konfigurację Pods. Ale może pomóc komuś innemu.


8

W moim przypadku problem polegał na tym, że lokalizację danych pochodnych Xcode ustawiono na opcję „Starsze”. Cel CocoaPods (libPods.a) był budowany poprawnie, ale Xcode szukał go w niewłaściwym miejscu.

Przełączenie go na „Unikatowy” (domyślnie) rozwiązało problem. Możesz to zrobić, przechodząc do opcji Preferencje> Lokalizacje i klikając przycisk Zaawansowane ...


Ale jestem w sytuacji, że muszę użyć „Dziedzictwa”, kontynuować wyszukiwanie innego rozwiązania ...
CocoaBob,



4

Odkryłem, że wybranie „Znajdź ukryte zależności” (w ramach schematu produktu / edycji) rozwiąże ten problem zamiast konieczności dodawania strąków jako celu.


Ponowne uruchomienie instalacji pod może pomóc po wykonaniu tych kroków.
StackRunner

3

Przeszedłem wszystkie odpowiedzi tutaj, ale dla mnie było to niesamowicie proste ... Przejdź do Celu -> Kompiluj fazy, następnie usuń libPods-YourProject.a, a następnie dodaj go ponownie, używając „+”. Nie martw się, że biblioteka jest czerwona, jest w porządku.


3

Użyłem starej wersji cocoapod po aktualizacji cocoapods. Sugeruje to, żebym zaktualizował zainstalowany pod, z powodu dużej aktualizacji, ponieważ aktualizuję go po długim czasie. Aktualizuję go, a nowa wersja strąków została zaktualizowana w porządku. Ale potem dostałem błądlibrary not found for -lPods-xxxprojectName-xxxxxpodName

Po wypróbowaniu tak wielu rozwiązań podanych jako odpowiedź w tym dziale, żaden z nich nie działał dla mnie. Potem poszedłem do ustawień mojego projektu i odkryłem, że ścieżka strąków była zmianą, która była włączonaOther Linker Flag

Sprawdź Manage Schemespoprawność nazwy kapsuły i porównaj ją Other Linker Flag, zmień, jeśli nie jest podobna

Dawna ścieżka do kapsuły była -l"lPods-xxxprojectName-xxxxxpodName"

Ale nowe kapsuły zostały xxxxxpodNamezastąpione Other Linker Flagnowymi, jak poniżej

Zmieniono na ścieżkę kapsuły -l"xxxxxpodName"i działa.

Nie znam idealnego powodu, ale może to komuś pomóc.


3

Otworzyłem obszar roboczy, ale otrzymałem ten sam błąd.

Kompiluj aktywną architekturę Tylko ustawione na TAK

rozwiązać mój problem.


To pomaga. Dziękuję Ci. Jakoś zostało ustawione na „TAK” dla Debugowania, podczas gdy pozostałe konfiguracje mają „NIE” i widziałem ten błąd dla wszystkich kompilacji oprócz Debugowania.
Pavel Yakimenko

To mi tylko pomogło. Taka odpowiedź „Otwórz jako .workspace” jest zbyt nudna. Myślę, że programiści powinni najpierw dokładnie sprawdzić dokumenty instalacyjne.
KoreanXcodeWorker

2

Rozwiązano to, wykonując poniższe czynności:

  • Zaktualizuj instalację Cocoapods. ($ [sudo] gem install cocoapods)
  • Ponownie zainstaluj zależności w ramach projektu. (instalacja pod)
  • Wyczyść i przebuduj / zarchiwizuj.

To faktycznie działało bardzo dobrze. Zaktualizowałem jedną z kapsuł w moim projekcie i to ją zepsuło. Wykonałem te kroki i zadziałało. To była szybka naprawa. Dzięki
agarcian,

2

W moim przypadku pod installproblem został rozwiązany po utworzeniu schematów dystrybucji i wydania.


1

Mam ten sam problem podczas archiwizacji w celu przesłania. Dyskusję na ten temat można znaleźć tutaj: https://github.com/CocoaPods/CocoaPods/issues/155

Podsumowując, działają dla mnie dwie metody:

  1. Ustawienie „Preferencje -> Lokalizacje -> Zaawansowane” na „Niestandardowe (względem obszaru roboczego)” LUB
  2. Ustaw Podfile na - platform :ios, :deployment_target => "5.0"

1

Korzystanie z Xcode 5 z iOS 7

To właśnie zrobiłem po utknięciu przez godzinę. Usuń ARM64 z ustawienia kompilacji> Prawidłowa architektura.

DODANO: Również w moim przypadku nie uzyskano lokalizacji danych. Wybrałem unikalną lokalizację kompilacji.


1

jeśli używasz iOS7 i Xcode 5, wykonaj:

  • Wybierz swój projekt Pods.
  • Przejdź do docelowych kapsułów i w Ustawieniach kompilacji wybierz Architektury-> Standardowe architektury (armv7, armv7s).
  • Zrób to samo dla każdego celu swojego projektu strąków.

1

Próbowałem KAŻDEJ odpowiedzi w tym wątku bezskutecznie. W końcu rozwiązałem mój problem, dopasowując „Ścieżkę do produktów kompilacji przed konfiguracją” w moim projekcie docelowym z wartością w projekcie Pods. Okazuje się, że budowali w dwóch różnych lokalizacjach wyjściowych. Żadne inne sugestie w tym wątku nie były dla mnie odpowiednie. Byłoby wspaniale, gdyby XCode podał przydatny opis błędu (np. DLACZEGO nie można użyć biblioteki lib - nie znaleziono pliku, nie znaleziono pasującej architektury itp.).


1

W tym problemie, jeśli już zainstalowałeś i aktualizowałeś w swoim systemie, to Xcode nie może znaleźć biblioteki Pods. Aby rozwiązać ten problem, sprawdź następujące przyczyny, które mogą mieć miejsce:

  1. Używasz obszaru roboczego.
  2. Biblioteka Pods buduje.
  3. Biblioteka strąków znajduje się w grupie produktów twojego projektu.
  4. Twój cel obejmuje bibliotekę Pods w połączeniu z fazą kompilacji frameworków.

1

próbować

link_z „YouTarget1”, „YouTarget2” ...

Mój projekt zadziałał, cele nagle przestały się kompilować. Następnie dodano „link_with” i wróciło do normy.

Najwyraźniej teraz łączy się tylko z pierwszym celem, tak mówi link:

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


ten naprawił to dla mnie ... miał problem, że pierwszy cel budował się, a drugi cel nie powiódł się z „ld: nie znaleziono biblioteki dla -lPods ...”
Muxor,

1

Jeśli nadal występuje ten problem, spróbuj:

pod update

Czy praca dla mnie, mam nadzieję, że to ci pomoże.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.