'ld: Warnung: Verzeichnis für Option nicht gefunden'


524

Wenn ich meine Xcode 4-Apps erstelle, wird folgende Warnung angezeigt:

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'

Aber ich habe Google Analytics nicht in meiner App. Ich habe alles gelöscht. Wie kann ich den Fehler beheben? Und das Archivieren einer App gibt mir den Fehler:

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

Ich habe so viele Dinge ausprobiert, aber ich erhalte immer noch diesen Fehler, wenn ich versuche, eine IPA-Datei zu erstellen


10
Beachten Sie, dass es eine sehr ähnliche Warnung ist, aber mit -Fnicht -L: directory not found for option '-F/.... Den Unterschied finden Sie in der Antwort von @ macayer unten.
Pkamb

1
Hinweis: Stellen Sie sicher, dass Verzeichnisse mit Leerzeichen in Anführungszeichen gesetzt sind. zB $(PROJECT_DIR)/my foldersollte "$ (PROJECT_DIR) / mein Ordner" sein
Jacksonkr

Ich bin auf dieses Problem gestoßen, als für meine Klasse nicht die richtige Zielmitgliedschaft angegeben wurde .
Tom Howard

1
@ Jackson Das hat es für mich behoben. Ich hatte die -F-Warnung und habe sie durch Zitieren behoben, wie Sie es in den 'Framework-Suchpfaden' in den Build-Einstellungen angegeben haben. Vielen Dank
Mark

Regelmäßige Sicherung ist eine bewährte Methode.
Gajendra K Chauhan

Antworten:


877

Sie müssen dies tun:

  1. Klicken Sie auf Ihr Projekt (Ziele)
  2. Klicken Sie auf Build Settings
    • wenn Ihr Fehler die enthält -L Flag enthält, löschen Sie die Werte in den Bibliothekssuchpfaden
    • Wenn Ihr Fehler das -FFlag enthält, löschen Sie die Werte in den Framework-Suchpfaden

Und in Bezug auf den zweiten Fehler kann ich Ihnen leider nicht weiterhelfen. Hoffe, jemand anderes kann dir helfen.


5
Dies hat mein Projekt gebrochen, aber ich habe gerade meine Google Analytics #imports auskommentiert und das SDK gelöscht, xcode beendet, meine #imports erneut hinzugefügt und kommentiert und es hat wieder funktioniert :)
Emotionalität

1
Gibt es irgendwelche Schritte, die Sie ausgelassen haben? Ich habe dies getan und jetzt kann Xcode keine anderen Dateien finden, die Sekunden zuvor funktionierten. Hilfe!
Benutzer

9
Seien Sie vorsichtig beim Löschen, wenn Sie diesen Bibliothekspfad tatsächlich benötigen. Stellen Sie sicher, dass der im Fehler angegebene Pfad vorhanden ist. Der Speicherort der Bibliothek auf der Festplatte wurde möglicherweise verschoben.
AWrightIV

3
Nach dem Löschen von Bibliothekssuchpfaden bekam ich den Fehler: ld: library not found for -lMoboSDK clang: error: linker command failed with exit code 1 (use -v to see invocation)(lMoboSDK ist meine statische Bibliothek)
Lee

2
Ich musste die Pfade unter "Framework-Suchpfade" in meinem "AppTests" -ZIEL löschen, um den Fehler zu beheben.
AT3D

754

Es gibt zwei Fehler, die die Leute verwirren.

Wenn es sich um einen Fehler "Verzeichnis für Option ' -L / ... nicht gefunden " handelt, bedeutet dies, dass es sich um einen Bibliotheksfehler handelt, und Sie sollten versuchen:

  • Klicken Sie auf Ihr Projekt (Ziele)
  • Klicken Sie auf Build Settings
  • Löschen Sie unter Bibliothekssuchpfade die Pfade

Wenn es sich um ein "Verzeichnis handelt, das für die Option ' -F / ... nicht gefunden wurde ", bedeutet dies, dass es sich um einen Framework-Fehler handelt, und Sie sollten versuchen:

  • Klicken Sie auf Ihr Projekt (Ziele)
  • Klicken Sie auf Build Settings
  • Löschen Sie unter Framework- Suchpfade die Pfade

Dies kann passieren, wenn Sie die referenzierte Datei verschieben.


3
Warum können nicht alle Antworten so präzise und hilfreich sein wie Ihre? Vielen Dank. Ich habe eine Nebenfrage: Wo erfährt man von den kryptischen -L / -F-Fehlern? Ich bin neu im gesamten Spiel zum Verknüpfen / Kompilieren / Erstellen, und die integrierte Dokumentation von Xcode ist nicht gerade etwas, worüber man nach Hause schreiben kann. Ich gehe davon aus, dass auf die meisten dieser Dinge über die Befehlszeile zugegriffen werden kann. Habe ich recht mit dieser Annahme? Es war nur schwierig für mich zu wissen, wo ich mit all dem anfangen soll. Ich bin an die Webentwicklung gewöhnt. Wie Sie also annehmen können, ist es etwas einfacher, Informationen in diesem Bereich zu finden.
Ben Stock

Beim Löschen der Suchpfade wird erneut angezeigt, dass FacebookSDK nicht gefunden wurde. Es ist ein -F-Fehler. Ich benutze Xcode 6.1
Rinku

Hat für mich gearbeitet. Ich musste Framework-Suchpfade in den Zielen sowohl für das Projekt als auch für das Testmodul löschen (beim Projekt-Upgrade von iOS8.3 auf iOS9).
ObjectiveTC

1
Komm schon Apple, was mit "es funktioniert einfach" passiert ist ... das sollte auch für Entwickler gelten. Bieten Sie uns zumindest Vorschläge an, wie Sie diese Art von Problemen anstelle dieser kryptischen Nachrichten lösen können. Erinnert irgendwie an Microsoft, ew.
John Contarino

2
Vielen Dank für die Richtlinie "-L ist für Bibliothekssuchpfade" und "-F ist für Framework-Suchpfade" . Sie hat perfekt für mich funktioniert.
SwiftBoy

79

Mein Problem war , dass ich die ursprünglichen geöffnet Xcodeproj anstelle des .xcworkspace , die von CocoaPods generiert wurde.


Verdammt, das hat mich wirklich gerettet, nachdem ich 3 Stunden lang mit dem Kopf auf die Tastatur geschlagen hatte
Gregory Saldanha,

60

Ich musste die Referenzen entfernen bei:

  • Ziel
  • Build-Einstellungen
  • Framework-Suchpfade

Geben Sie hier die Bildbeschreibung ein

Dann wurde der Build gebrochen (erwartet). Also habe ich das Framework (FB SDK) entfernt, neu hinzugefügt und voila. Keine Fehler oder Warnungen mehr. :) :)


19

Ich benutze Kakaofrüchte, also habe ich Xcode beendet und bin gelaufen

pod install

erneut und öffnete das Projekt erneut. Das hat alles repariert!


1
Sie sind sich nicht sicher, warum Sie abgelehnt werden, wenn Ihr Vorschlag tatsächlich eine Lösung für ein ähnliches Problem sein kann! Insbesondere ist dies eine Lösung, wenn nach dem Hinzufügen einer neuen Build-Konfiguration zu Ihrem Projekt ähnliche Fehlermeldungen auftreten. Da das Hinzufügen einer neuen Build-Konfiguration automatisch das Duplizieren einer vorhandenen Konfiguration impliziert, müssen Sie diese ausführen pod install, um den Spaltenwert "Basierend auf Konfigurationsdatei" anzupassen.
Cellane

1
Außerdem erzeugen Kakaofrüchte einen Arbeitsbereich. Stellen Sie sicher, dass Sie das öffnen, nicht die Projektdatei. pod install + open the workspace file hat mein Problem behoben.
Michael Krebs

In ionic funktioniert dies für mich, als ich die Pod-Installation im Ordner platform / ios ausführte
Bas van Dijk

18

Für mich war das Problem ein fehlendes Escapezeichen "\".

Meine Suchpfade wurden in den Bibliothekssuchpfaden in mehrere Zeilen unterteilt. Praktischerweise brachen sie an Stellen in meinem Weg. Das Hinzufügen der Flucht "\" hat es für mich behoben.

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

Das ist die perfekte Antwort! Getestet April 2014
Van Du Tran

1
Es ist erbärmlich, dass dies in Xcode 6, Februar 2015, immer noch nicht funktioniert. Leerzeichen in Pfaden sollten nicht manuell maskiert werden müssen.
StilesCrisis

Die oben akzeptierten und höher bewerteten Antworten haben bei mir nicht funktioniert, aber das hat funktioniert. Mein Hinweis, dass es sich um dieses Problem handelt, ist, dass Xcode 2-L-Fehler ausgelöst hat, wobei jeder Fehler ein Fragment des gesamten Pfads ist und auf dem Leerzeichen unterbrochen wurde. Einverstanden, dass wir uns 2015 keine Sorgen mehr machen müssen, dass Räume entkommen, das sollte für uns hinter den Kulissen geschehen!
John Contarino

Ja, dies ist ein seit langem bestehendes Problem in Xcode, das auftritt, wenn Ihr Suchpfad vom System automatisch hinzugefügt wird (dh weil eine Bibliothek in "eingebettete Binärdateien" gezogen wird - aus irgendeinem Grund wird sie nicht automatisch aus den Leerzeichen entfernt und anschließend interpretiert sie als separate Dateipfade.
Ash

13

Ich fand die Referenz, die ich entfernen musste bei:

  • Ziel
  • Build-Einstellungen
  • Header-Suchpfade

33
Verwenden von Google, um eine Lösung für 'ld: warning: Verzeichnis nicht für Option gefunden' zu finden, und meine eigene Antwort als Lösung zu finden
Jasper

13

In meinem Fall bestand das Problem in Framework-Suchpfaden mit unvollständigen, toten, alten Links oder mehreren Frameworks desselben Typs. Entfernen Sie sie und Ihr Projekt wird problemlos kompiliert.

Stellen Sie sicher, dass Build -> Clean ausgeführt wird

Geben Sie hier die Bildbeschreibung ein


10

Nach einem Xcode-Absturz stieß ich auf dasselbe Problem (das erste), und keine der vorgeschlagenen Lösungen funktionierte. Um die Warnung zu unterdrücken, die ich getan habe:

• Schemata verwalten ...

• das aktuelle Schema gelöscht

• Jetzt autokratieren


Der Autor dieser ursprünglichen Frage sollte einen Hinweis veröffentlichen, um alle diese Lösungen durchzugehen. Eine Liste. Versuchen Sie die erste, die zweite, die nächste Lösung, die nächste Lösung ... weil dies für meine Migration eines älteren Projekts der Fall war und andere Lösungen vernünftige Lösungen sind. Wenn ich nicht alles ausprobiert hätte, hätte ich diesen nicht gefunden ... bin weitergegangen und in Verwirrung geschwommen. Danke Francesco!
Matthew Ferguson

8

Das hat bei mir funktioniert:

  1. Klicken Sie auf Projekt
  2. Klicken Sie auf Build Settings
  3. Suche nach "Framework-Suchpfaden"
  4. Löschen Sie den Pfad und geben Sie "$ (geerbt)" ein.

6

Ich habe mich an dem scheinbar gleichen Problem beteiligt (diesmal in XCode 5.0.2). In meinem Fall hat XCode beschlossen, den Anführungszeichen in den "Build-Einstellungen" zu entgehen. Also zum Beispiel:

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

wurden

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

was dazu führte, dass der Build fehlschlug ...

Nachdem ich die Escapezeichen in den Anführungszeichen entfernt hatte, funktionierte alles wieder einwandfrei. Darüber hinaus ist es wahrscheinlich am besten, die Anführungszeichen vollständig zu entfernen, es sei denn, Sie benötigen sie.


1
RIESIG +1 dafür. Diese Escapezeichen auf dem "waren die Ursache für den Fehler" Verzeichnis nicht gefunden "für die Optionen -L und -F.
Will

1
sehr nützlicher Tipp ... in meinem Projekt hat xcode 5.0.2 Anführungszeichen am Anfang, in der Mitte und am Ende von Pfaden maskiert ... es hatte auch Pfade für einige Frameworks auf seltsame Weise dupliziert ... Escapezeichen entfernt, lassen Sie einfach "real" Framework-Pfade "für diejenigen, die das Projekt verwendet und Warnungen beseitigt hat ... es war auch notwendig, Frameworks zu entfernen / wieder hinzuzufügen, nachdem die Pfade korrigiert wurden
Marcos Reboucas

6

Wenn dies passiert, nachdem Sie Ihrem Projekt eine Pod-Datei hinzugefügt und die Pod-Installation ausgeführt haben, gehen Sie zu Ihrem Projektordner. Sie sehen eine neue Datei, die mit "{ProjectName} .xcworkspace" erstellt wurde. Öffnen Sie diese Datei in xcode

Die installierten Pods werden in dieser Datei ordnungsgemäß mit Ihrem Projekt verknüpft


Möglicherweise haben Sie die Projektdatei anstelle des Arbeitsbereichs geöffnet.
Jason

3

Befolgen Sie diese Schritt-für-Schritt-Lösung:

  1. Klicken Sie auf Ihr Projekt (Ziele);
  2. Klicken Sie auf Build Settings.
  3. Löschen Sie unter Bibliothekssuchpfade die Pfade.
  4. Hinzufügen ./**von Bibliothekssuchpfaden.

3

Ergänzende Antwort

Alle Antworten sollen entweder die Framework- oder die Bibliothekssuchpfade vom Ziel löschen. Ich hatte zwei Probleme:

  • Zuerst habe ich eher mein Hauptprojektziel als das Unit-Test-Ziel betrachtet.
  • Zweitens konnte ich nicht herausfinden, wie der Framework-Suchpfad gelöscht werden kann. Es stellte sich heraus, dass nur darauf geklickt wurde, um in den Bearbeitungsmodus zu gelangen, und dann nur die Zeichenfolge gelöscht wurde.

Ich möchte dies versuchen, aber ich mache mir Sorgen, dass die App dadurch beschädigt wird. Sind Sie sicher, dass alles funktioniert hat, nachdem Sie dies getan haben?
Supertecnoboff

@Supertecnoboff Wenn Sie befürchten, dass es nicht funktioniert, speichern Sie die Zeichenfolge, bevor Sie sie löschen. Sie können es jederzeit wieder einfügen. Meine App war bereits defekt, daher musste ich einfach weiter versuchen, bis etwas funktionierte. Meine Antwort oben hat für mich funktioniert.
Suragch

1

Für mich schien das Problem zu sein, dass ich nicht die entsprechenden Frameworks aufgenommen hatte (beim Kopieren von Addons aus einem anderen Projekt habe ich auch die Framework-Dateien nicht kopiert).


1

Der Schlüssel für diese Art von Fehler besteht darin, in die Build-Einstellungen zu gehen und die einzelnen Suchpfadabschnitte wie Bibliothekssuchpfade, Framework-Suchpfade und möglicherweise sogar Header-Suchpfade zu überprüfen und alle Pfade zu löschen, die nicht mehr für Sie gelten App hat es schwer zu finden. Entfernen Sie sie und machen Sie weiter, Sir


1

Überprüfen Sie, welches Framework fehlt, und gehen Sie dann zu

=> Phasen erstellen => Binär mit Bibliotheken verknüpfen

Entfernen Sie die Bibliothek und fügen Sie sie wieder hinzu


1

Ich hatte ein ähnliches Problem, das behoben wurde, als ich ein neues Schema erstellte und es zum Wiederaufbau verwendete.


1

Für mich habe ich auch Tests aktiviert. Der Suchpfad für Tests wurde ebenfalls falsch ausgefüllt.

Löschen Sie den Framework-Suchpfad sowohl für den regulären Code als auch für den Testcode!


1

Aufgrund der benutzerdefinierten Verzeichnisse, die in die Suchpfade (Frameworks und Bibliothek) eingegeben wurden, überschreibt das Projekt die Verzeichnisse des Pods. also kann es es nicht finden.

Löschen Sie alle benutzerdefinierten Verzeichnisse aus, um dieses Problem zu beheben

Suchpfade -> Bibliothekspfade und Framework-Pfade,

siehe nur $ {geerbt}.

Ich hoffe das hilft. Es hat bei mir funktioniert.


1

Geben Sie hier die Bildbeschreibung ein

Fügen Sie $ (geerbt) -Objc -lcrypto - lssl in Projekt -> Build-Einstellung -> Suchpfad -> Bibliothekssuchpfad hinzu


Die obige Lösung funktioniert gut für mich. Wenn es für Sie nicht funktioniert, teilen Sie bitte den Screenshot.
Bandish Kumar

1

Wenn dies nach einer Pod-Installation mit einigen Abhängigkeiten geschieht, besteht das Problem möglicherweise darin, dass Sie die alte Version der App (.xcworkspace) auf Xcode verwenden.

Nach einer Pod-Installation ist dies die Ausgabe, die Sie möglicherweise sehen.

Die Ausgabe einer Pod-Installation.

Ausgabe einer Pod-Installation

Tun Sie genau das, schließen Sie Ihr aktuelles Xcode-Fenster und öffnen Sie den neuen .xcworkspace.

Öffnen des neuen xcworkspace]

Öffnen des neuen xcworkspace


0

Sie sollten die Option dafür aktivieren:

Build-Einstellungen-> Framework-Suchpfade-> {Geben Sie Ihren Projektpfad ein}


0

Ich habe alle [Bibliothekssuchpfade - Framework-Suchpfade - Header-Suchpfade] untersucht. Da jedoch keine Pfade entfernt werden müssen, konnte ich diese Warnung entfernen, indem ich in das Xcode-Bundle ging und ein leeres Verzeichnis an der Pfadposition erstellte, über die sich die Warnung beschwerte.


0

Stellen Sie sicher, dass nur 1 "libFlurry.a" ausgewählt ist im Ziel

arbeitete für mich.

Geben Sie hier die Bildbeschreibung ein


0

Vergessen Sie nicht, dieselbe Konfiguration für das Pod-Projekt in Ihrem Arbeitsbereich zu erstellen, wenn Sie in die neue Konfiguration von MainApps wechseln.

Zum Beispiel,

In meinem Fall musste ich zur Behebung dieses Problems auch die ReleaseOfficial-Konfiguration für Pod- Projekte erstellen , als ich die ReleaseOfficial-Konfiguration für meine MainApp erstellte.


0

Wenn Sie einen neuen Pod installiert haben und dann diesen Fehler erhalten haben, beenden Sie einfach den xcode> öffnen Sie ihn erneut> erstellen Sie das Projekt


0

Wenn die typische Lösung das Problem nicht behebt, wurde es für mich behoben, indem sichergestellt wurde, dass alle iOS-Versionen im xcode-Projekt (z. B. IPHONEOS_DEPLOYMENT_TARGET) / Bereitstellungsziele, Poddateien (falls zutreffend) usw. auf dieselbe Versionsnummer eingestellt sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.