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?

angelokh
źródło
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?

stop
źródło
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.

Andras Hatvani
źródło
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ął

Besi
źródło
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

Michał Gumny
źródło
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;)

Hemang
źródło
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.

Ayush Goel
źródło
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.

Sebastian Hojas
źródło
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.

johndpope
źródło
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

HoratioCain
źródło
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.

Khaled Annajar
źródło
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

Chris Schiffhauer
źródło
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

Naloiko Eugene
źródło
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.

melle
źródło
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.

i4niac
źródło
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 ...

Adam Sharp
źródło
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.

StackRunner
źródło
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.

cph2117
źródło
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.

Bhavin_m
źródło
3

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

Kompiluj aktywną architekturę Tylko ustawione na TAK

rozwiązać mój problem.

Radość 6
źródło
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.
SarpErdag
źródło
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.

kernix
źródło
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"
BabyPanda
źródło
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.

ytbryan
źródło
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.
rabenson
źródło
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.).

użytkownik3588900
źródło
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.
Gagan_iOS
źródło
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

Sprzedaż Wagner
źródło
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.

Shobhit C.
źródło