„ld: ostrzeżenie: nie znaleziono katalogu dla opcji”


524

Podczas tworzenia aplikacji Xcode 4 pojawia się następujące ostrzeżenie:

ld: warning: directory not found for option '-L/Users/frenck/Downloads/apz/../../../Downloads/Google Analytics SDK/Library'
ld: warning: directory not found for option '-L/Users/frenck/Downloads/apz/../Google Analytics SDK/Library'

Ale nie mam Google Analytics w mojej aplikacji, usunąłem wszystko, jak mogę usunąć błąd? A zarchiwizowanie aplikacji powoduje błąd:

clang: error: no such file or directory: 'armv6'
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1

Próbowałem tak wielu rzeczy, ale wciąż pojawia się ten błąd, gdy próbuję utworzyć plik .IPA


10
Zauważ, że jest bardzo podobny ostrzeżenie, ale -Fzamiast -L: directory not found for option '-F/.... Zobacz różnicę w odpowiedzi @ macayer poniżej.
pkamb

1
Uwaga: Upewnij się, że katalogi ze spacjami są cytowane. np. $(PROJECT_DIR)/my folderpowinien to być „$ (PROJECT_DIR) / mój folder”
Jacksonkr

Zetknąłem się z tym problemem, gdy moja klasa nie miała określonego członkostwa docelowego .
Tom Howard,

1
@Jackson To naprawiło to dla mnie. Miałem ostrzeżenie -F i naprawiłem to, cytując zgodnie z instrukcjami w „Ścieżkach przeszukiwania ram” w Ustawieniach kompilacji. Dzięki
Mark

Regularne tworzenie kopii zapasowych jest najlepszą praktyką.
Gajendra K Chauhan,

Odpowiedzi:


877

Musisz to zrobić:

  1. Kliknij swój projekt (cele)
  2. Kliknij Ustawienia kompilacji
    • jeśli błąd zawiera -Lflagę, usuń wartości ze Ścieżek wyszukiwania w bibliotece
    • jeśli błąd zawiera -Fflagę, usuń wartości ze Ścieżek wyszukiwania w ramach

A jeśli chodzi o drugi błąd, przepraszam, nie mogę ci pomóc z tym jednym. Mam nadzieję, że ktoś inny może ci pomóc.


5
To zepsuło mój projekt, ale właśnie skomentowałem moje #imports Google Analytics i usunąłem SDK, zamknąłem xcode, ponownie dodałem i nie skomentowałem moich #imports i zadziałało ponownie :)
emotyczność

1
Czy pominąłeś jakieś kroki? Zrobiłem to, a teraz Xcode nie może znaleźć wielu innych plików, które działały kilka sekund wcześniej. Wsparcie!
użytkownik

9
Uważaj na usunięcie, jeśli rzeczywiście potrzebujesz tej ścieżki biblioteki. Sprawdź, czy istnieje ścieżka określona w błędzie. Lokalizacja biblioteki na dysku mogła zostać przeniesiona.
AWrightIV

3
Po usunięciu ścieżek wyszukiwania bibliotek dostałem błąd: ld: library not found for -lMoboSDK clang: error: linker command failed with exit code 1 (use -v to see invocation)(lMoboSDK to moja biblioteka statyczna)
Lee

2
Musiałem usunąć ścieżki w „Framework Search Paths” na moim TARGETIE „AppTests”, aby usunąć błąd.
AT3D,

754

Istnieją dwa błędy, które ludzie wydają się wprowadzać w błąd.

Jeśli jest to błąd „nie znaleziono katalogu dla opcji„ -L / ... ”, oznacza to, że jest to błąd biblioteki i powinieneś spróbować:

  • Kliknij swój projekt (cele)
  • Kliknij Ustawienia kompilacji
  • W obszarze Ścieżki wyszukiwania biblioteki usuń ścieżki

Jeśli jest to „katalog nie został znaleziony dla opcji -F / ...”, oznacza to, że jest to błąd ramowy i powinieneś spróbować:

  • Kliknij swój projekt (cele)
  • Kliknij Ustawienia kompilacji
  • W obszarze Ścieżki wyszukiwania struktury usuń ścieżki

Może się to zdarzyć, gdy przenosisz plik, do którego się odwołujesz.


3
Dlaczego wszystkie odpowiedzi nie mogą być tak zwięzłe i pomocne jak twoje? Dziękuję Ci. Mam dodatkowe pytanie: gdzie można dowiedzieć się o tajemniczych błędach -L / -F? Jestem nowy w całej grze o łączeniu / kompilowaniu / budowaniu, a wbudowana dokumentacja Xcode nie jest czymś, o czym można by pisać. Zakładam, że do większości tych rzeczy można uzyskać dostęp za pomocą wiersza poleceń. Czy mam rację w tym założeniu? Po prostu trudno mi było nawet wiedzieć, od czego zacząć. Jestem przyzwyczajony do tworzenia stron internetowych, więc jak można założyć, znalezienie informacji w tej dziedzinie jest nieco łatwiejsze.
Ben Stock

po usunięciu Ścieżek wyszukiwania ponownie pokazuje, że FacebookSDK nie został znaleziony. Jest to błąd -F. Używam Xcode 6.1
Rinku

Pracował dla mnie. Musiałem usunąć ścieżki wyszukiwania frameworka w obiektach docelowych zarówno dla projektu, jak i modułu testowego (po uaktualnieniu projektu z iOS 8.3 do iOS9).
ObjectiveTC

1
Chodź, Apple, co się stało z „to po prostu działa” ... to powinno dotyczyć również deweloperów. Przynajmniej zaoferuj nam sugestie, jak rozwiązać tego rodzaju problemy zamiast tych tajemniczych wiadomości. Trochę przypomina Microsoft, ew.
John Contarino,

2
Dziękuję bardzo za „-L to Ścieżki Wyszukiwania Biblioteki” i „-F to Ścieżki Wyszukiwania Ramowego” , to działało idealnie dla mnie.
swiftBoy

79

Mój problem polegał na tym, że otworzyłem oryginalny plik .xcodeproj zamiast .xcworkspace wygenerowany przez CocoaPods.


Cholera, naprawdę mnie to uratowało po 3 godzinach walenia głową w klawiaturę
Gregory Saldanha,

60

Musiałem usunąć odniesienia z:

  • Cel
  • Ustawienia kompilacji
  • Ścieżki wyszukiwania struktury

wprowadź opis zdjęcia tutaj

Następnie kompilacja została zerwana (oczekiwana). Więc usunąłem Framework (FB SDK), ponownie go dodałem i voila. Nigdy więcej błędów ani ostrzeżeń. :)


19

Używam strąków kakaowych, więc dla mnie rzuciłem Xcode i pobiegłem

pod install

ponownie i ponownie otworzył projekt. To naprawiło wszystko!


1
Nie jestem pewien, dlaczego jesteś odrzucany, gdy twoja sugestia może być rozwiązaniem podobnego problemu! W szczególności jest to rozwiązanie, jeśli po dodaniu nowej konfiguracji kompilacji do projektu występują podobne komunikaty o błędach. Ponieważ dodanie nowej konfiguracji kompilacji automatycznie oznacza duplikowanie istniejącej konfiguracji, musisz uruchomić, pod installaby dostosować wartość kolumny „Na podstawie pliku konfiguracyjnego”.
Cellane

1
Ponadto strąki kakaowe tworzą przestrzeń roboczą. pamiętaj, aby go otworzyć, a nie plik projektu. instalacja pod + otwarcie pliku obszaru roboczego naprawiło mój problem.
Michael Krebs,

W wersji jonowej działa to dla mnie, gdy uruchomiłem instalację pod w folderze platform / ios
Bas van Dijk

18

Dla mnie problemem był brakujący znak ucieczki „\”.

Moje ścieżki wyszukiwania zostały podzielone na kilka wierszy w ścieżkach wyszukiwania w bibliotece. Dogodnie łamali się w miejscach na mojej ścieżce. Dodanie ucieczki „\” naprawiło to dla mnie.

$(PROJECT_DIR)/My\ Project\ Name/My\ Directory

To idealna odpowiedź! Testowany w kwietniu 2014 r.
Van Du Tran

1
Żałosne jest to, że nadal jest uszkodzony w Xcode 6, luty 2015. Spacje na ścieżkach nie powinny wymagać ręcznego ucieczki.
StilesCrisis,

Przyjęte powyżej i wyżej głosowane odpowiedzi nie działały dla mnie, ale tak się stało. Moja wskazówka, że ​​to ten problem, polega na tym, że Xcode generował błędy 2-L, przy czym każdy błąd był fragmentem pełnej ścieżki i łamał się w przestrzeni. Zgodziliśmy się, że w 2015 r. Nie powinniśmy się martwić ucieczką z kosmosu, którą powinniśmy załatwić za kulisami!
John Contarino,

Tak, jest to od dawna występujący problem w Xcode, który pojawia się, gdy ścieżka wyszukiwania jest automatycznie dodawana przez system (tj. Z powodu przeciągania biblioteki do „osadzonych plików binarnych” - z jakiegoś powodu nie ucieka automatycznie ze spacji, a następnie interpretuje jako osobne ścieżki plików
Ash

13

Znalazłem odniesienie, które musiałem usunąć na:

  • Cel
  • Ustawienia kompilacji
  • Ścieżki wyszukiwania nagłówka

33
Korzystanie z Google w celu znalezienia rozwiązania dla „ld: ostrzeżenie: nie znaleziono katalogu dla opcji”, znajdowanie własnej odpowiedzi jako rozwiązania
Jasper

13

W moim przypadku problemem były ścieżki przeszukiwania ram, które miały niekompletne, martwe, stare łącza lub wiele ram tego samego typu. Usuń je, a Twój projekt skompiluje się bez problemu.

koniecznie wykonaj Build -> clean

wprowadź opis zdjęcia tutaj


10

Napotkałem ten sam problem (pierwszy) po awarii Xcode i żadne z proponowanych rozwiązań nie zadziałało. Aby ukryć ostrzeżenie, które zrobiłem:

• zarządzaj programami ...

• usunął obecny schemat

• Schematy autokratacji teraz


Powinniśmy poprosić autora tego oryginalnego pytania o opublikowanie notatki, aby przejrzał wszystkie te rozwiązania. Lista Wypróbuj pierwsze, drugie następne rozwiązanie, następne rozwiązanie ... ponieważ to zrobiło to dla mojej migracji starszego projektu, a inne rozwiązania są rozsądnymi rozwiązaniami. Gdybym nie wypróbował wszystkiego, nie znalazłbym tego ... ruszyłem dalej i popłynąłem w pomieszaniu. Dzięki Francesco!
Matthew Ferguson

8

Oto, co zadziałało dla mnie:

  1. Kliknij Projekt
  2. Kliknij Ustawienia kompilacji
  3. Wyszukaj „Framework Search Paths”
  4. Wyczyść ścieżkę i wpisz „$ (dziedziczony)”

6

Uderzyło mnie to, co wydaje się być tym samym problemem (tym razem w XCode 5.0.2). W moim przypadku XCode postanowił uciec od cytatów już w „Ustawieniach kompilacji”. Na przykład:

"$(SRCROOT)/../GoogleAdMobAdsSdkiOS-6.4.1"

stał się

\"$(SRCROOT)/../GoogleAdMobAdsSdkiOS-6.4.1\"

co spowodowało niepowodzenie kompilacji ...

Po usunięciu znaków ucieczki w cytatach wszystko znów działało dobrze. Ponadto prawdopodobnie najlepiej byłoby całkowicie usunąć cytaty, chyba że będą potrzebne.


1
OGROMNE +1 za to. Te ucieczki na „były przyczyną błędu„ nie znaleziono katalogu ”dla opcji -L i -F.
Czy

1
bardzo przydatna wskazówka ... w moim projekcie xcode 5.0.2 unikał cudzysłowów na początku, na środku i na końcu ścieżek ... w dziwny sposób zduplikował również ścieżki dla niektórych frameworków ... usunął ucieczki, niech po prostu "prawdziwe" ścieżki frameworków ”dla tych, których używa projekt i które pozbyły się ostrzeżeń ... konieczne było również usunięcie / dodanie ponownie frameworków po poprawieniu ścieżek
Marcos Reboucas

6

Jeśli tak się stanie po dodaniu pliku Podfile do projektu i uruchomieniu instalacji pod, przejdź do folderu projektu, zobaczysz nowy plik, który został utworzony „{ProjectName} .xcworkspace” - otwórz ten plik w xcode

Zainstalowane strąki zostaną poprawnie połączone z projektem w tym pliku


Możliwe, że otworzyłeś plik projektu zamiast obszaru roboczego.
Jason

3

Postępuj zgodnie z tym krok po kroku:

  1. Kliknij swój projekt (cele);
  2. Kliknij Ustawienia kompilacji;
  3. W obszarze Ścieżki wyszukiwania w bibliotece usuń ścieżki;
  4. Dodaj ./**ścieżki wyszukiwania w bibliotece.

3

Odpowiedź uzupełniająca

Wszystkie odpowiedzi mówiły, że usuwają ścieżki przeszukiwania frameworku lub biblioteki z celu. Miałem dwa problemy:

  • Najpierw patrzyłem na mój główny cel projektu, a nie na test jednostkowy.
  • Po drugie, nie mogłem wymyślić, jak usunąć ścieżkę wyszukiwania frameworka. Okazało się, że wystarczyło kliknąć, aby przejść do trybu edycji, a następnie po prostu usunąć ciąg.

Chcę tego spróbować, ale martwię się, że spowoduje to uszkodzenie aplikacji. Czy na pewno wszystko działało po tym?
Supertecnoboff

@Supertecnoboff Jeśli obawiasz się, że to nie zadziała, zapisz ciąg przed usunięciem. Zawsze możesz go wkleić z powrotem. Moja aplikacja była już zepsuta, więc musiałem próbować różnych rzeczy, dopóki coś nie zadziała. Moja odpowiedź powyżej jest dla mnie skuteczna.
Suragch

1

Dla mnie problem polegał na tym, że nie zawarłem odpowiednich ram (podczas kopiowania dodatków z innego projektu również nie kopiowałem plików ram)


1

Kluczem do tego typu błędu jest przejście do ustawień kompilacji i sprawdzenie każdej z sekcji ścieżek wyszukiwania, takich jak Ścieżki przeszukiwania biblioteki, Ścieżki przeszukiwania ram, a być może nawet Ścieżki przeszukiwania nagłówka i usunięcie wszystkich ścieżek, które nie mają zastosowania trudno jest znaleźć aplikację. Usuń je i kontynuuj dobry panie


1

idź sprawdź, których ram brakuje, a następnie przejdź do

=> Fazy kompilacji => Połącz pliki binarne z bibliotekami

usuń bibliotekę, a następnie dodaj ponownie


1

Miałem podobny problem, który zniknął, kiedy stworzyłem nowy schemat i użyłem go do przebudowy ???


1

Dla mnie mam również włączone testy. Ścieżka wyszukiwania dla testów również była niepoprawna.

Wyczyść ścieżkę przeszukiwania ram dla kodu zwykłego i kodu testowego!


1

Ze względu na niestandardowe katalogi, które weszły do ​​ścieżek wyszukiwania (frameworki i biblioteka), projekt zastępuje katalogi pod. więc nie może go znaleźć.

Aby rozwiązać ten problem, usuń wszystkie niestandardowe katalogi z

Ścieżki wyszukiwania -> Ścieżki biblioteki i ścieżki frameworka,

zobacz tylko {odziedziczony}.

Mam nadzieję, że to pomoże. To zadziałało dla mnie.


1

wprowadź opis zdjęcia tutaj

Dodaj $ (odziedziczony) -Objc -lcrypto - lssl w Projekcie -> Ustawienia kompilacji -> Ścieżka wyszukiwania -> Ścieżka wyszukiwania biblioteki


Powyższe rozwiązanie działa dla mnie dobrze. Jeśli to nie działa, udostępnij zrzut ekranu.
Bandish Kumar

1

Jeśli dzieje się tak po zainstalowaniu zasobnika z pewnymi zależnościami, problem może wynikać z tego, że używasz starej wersji aplikacji (.xcworkspace) na Xcode.

Po instalacji zasobnika jest to wynik, który możesz zobaczyć.

Wyjście instalacji pod.

Wyjście instalacji pod

Zrób dokładnie to, zamknij bieżące okno Xcode i otwórz nową przestrzeń .xcworkspace.

Otwieranie nowej przestrzeni xcworkspace]

Otwieranie nowej przestrzeni xcworkspace


0

powinieneś zaznaczyć opcję:

Ustawienia kompilacji-> Ścieżki przeszukiwania ram -> {wprowadź ścieżkę projektu}


0

Przejrzałem wszystkie [Ścieżki przeszukiwania bibliotek - Ścieżki przeszukiwania ram - Ścieżki przeszukiwania nagłówków]. ale nie ma żadnych ścieżek do usunięcia, więc mogłem sprawić, że ten alert zniknie, wchodząc do pakietu Xcode i tworząc pusty katalog w lokalizacji ścieżki, na którą narzekał alert.



0

Nie zapomnij utworzyć tej samej konfiguracji dla projektu Pod w swoim obszarze roboczym, jeśli zmienisz na nową konfigurację MainApps.

Na przykład,

W moim przypadku, aby rozwiązać ten problem, musiałem również utworzyć konfigurację ReleaseOfficial dla projektów Pod , kiedy utworzyłem konfigurację ReleaseOfficial dla mojej MainApp.


0

Jeśli zainstalowałeś nowy moduł, a następnie wystąpił ten błąd, po prostu zamknij xcode> otwórz ponownie> skompiluj projekt


0

Jeśli typowe rozwiązanie nie rozwiązało problemu, naprawiłem to, upewniając się, że wszystkie wersje iOS w projekcie xcode (np. IPHONEOS_DEPLOYMENT_TARGET) / cele wdrażania, pliki podfile (jeśli dotyczy) itp. Mają ustawiony ten sam numer wersji.

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.