'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

Frenck
quelle
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.

Blazer
quelle
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.

Marc
quelle
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.

lujop
quelle
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. :) :)

Backslash-f
quelle
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!

Lazar Kukolj
quelle
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
Iron Mike
quelle
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
Jaspis
quelle
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

Sam B.
quelle
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

Francesco
quelle
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.
Major MacGregor
quelle
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.

Brad Folkens
quelle
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

Gaurav Chaturvedi
quelle
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.
krishna
quelle
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.
Suragch
quelle
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).

studiou
quelle
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

ColossalChris
quelle
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

chings228
quelle
1

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

Streich
quelle
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!

Vincent
quelle
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.

Alperen Adatepe
quelle
1

Geben Sie hier die Bildbeschreibung ein

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

Bandish Kumar
quelle
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

Eliah Mbwilo
quelle
0

Sie sollten die Option dafür aktivieren:

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

kingboylee0595
quelle
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.

Mohammed Fathy
quelle
0

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

arbeitete für mich.

Geben Sie hier die Bildbeschreibung ein

Ofir Malachi
quelle
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.

Sazzad Hissain Khan
quelle
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

Virale Savaliya
quelle
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.

EmpireJones
quelle