'ld: warning: каталог не найден для опции'


524

Когда я создаю свои приложения для Xcode 4, я получаю это предупреждение:

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'

Но у меня нет Google Analytics в моем приложении, я удалил все, как я могу удалить ошибку? И архивирование приложения дает мне ошибку:

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

Я пробовал так много вещей, но я все еще получаю эту ошибку, когда я пытаюсь сделать файл .IPA


10
Обратите внимание , что очень похоже предупреждение, но -Fвместо -L: directory not found for option '-F/.... См. Ответ @ macayer ниже для различия.
pkamb

1
Примечание. Убедитесь, что каталоги с пробелами указаны в кавычках. например, $(PROJECT_DIR)/my folderдолжно быть `" $ (PROJECT_DIR) / my folder "
Jacksonkr

Я столкнулся с этой проблемой, когда в моем классе не было указано правильное целевое членство .
Том Ховард

1
@ Джексон Это исправило это для меня. У меня было предупреждение -F, и я исправил его, заключив в кавычки, как вы указали в «Каркасных путях поиска» в настройках сборки. Спасибо
Марк

Регулярное резервное копирование является лучшей практикой.
Гаджендра К Чаухан

Ответы:


877

Вам нужно сделать это:

  1. Нажмите на ваш проект (цели)
  2. Нажмите на настройки сборки
    • если ваша ошибка включает -Lфлаг, то удалите значения в путях поиска библиотеки
    • если ваша ошибка включает -Fфлаг, то удалите значения в Framework Search Paths

А что касается второй ошибки, извините, я не могу помочь вам с этим. Надеюсь, кто-то еще может помочь вам.


5
Это сломало мой проект, но я только что закомментировал свой #MPorts в Google Analytics и удалил SDK, вышел из xcode, повторно добавил и раскомментировал свой #imports, и он снова
заработал

1
Есть ли какие-либо шаги, которые вы пропустили? Я сделал это, и теперь XCode не может найти кучу других файлов, которые работали несколько секунд назад. Помогите!
пользователь

9
Будьте осторожны при удалении, если вам действительно нужен этот путь к библиотеке. Убедитесь, что путь, указанный в ошибке, существует. Расположение библиотеки на диске, возможно, было перемещено.
AWrightIV

3
После удаления Библиотека Поиск Дорожки я получил ошибку: ld: library not found for -lMoboSDK clang: error: linker command failed with exit code 1 (use -v to see invocation)(lMoboSDK моя статическая библиотека)
подветренный

2
Мне пришлось удалить пути в разделе «Пути поиска по структуре» на моем «ЦЕЛЕВАХ ПРИЛОЖЕНИЙ», чтобы очистить ошибку.
AT3D

754

Есть две ошибки, которые люди, кажется, сбивают с толку.

Если это ошибка «каталог не найден для опции ' -L / ...», это означает, что это ошибка библиотеки, и вы должны попытаться:

  • Нажмите на ваш проект (цели)
  • Нажмите на настройки сборки
  • В разделе « Пути поиска в библиотеке» удалите пути

Если это «каталог, не найденный для опции ' -F / ...», это означает, что это ошибка Framework, и вы должны попытаться:

  • Нажмите на ваш проект (цели)
  • Нажмите на настройки сборки
  • Под Каркасными Поисковыми Путями удалите пути

Это может произойти, когда вы перемещаете указанный файл.


3
Почему не все ответы могут быть такими же краткими и полезными, как ваши? Спасибо. У меня есть побочный вопрос: где можно узнать об загадочных ошибках -L / -F? Я новичок во всей игре по компоновке / компиляции / сборке, и встроенная документация XCode не совсем то, о чем можно написать домой. Я предполагаю, что большая часть этого материала может быть доступна через командную строку. Я прав в этом предположении? Мне просто было трудно даже понять, с чего начать все эти вещи. Я привык к веб-разработке, так что, как вы могли предположить, найти информацию в этой области немного проще.
Бен Сток

при удалении путей поиска он снова показывает, что FacebookSDK не найден. Это ошибка -F. Я использую Xcode 6.1
Rinku

Работал на меня. Мне пришлось удалить пути поиска фреймворка в целях как для проекта, так и для модуля тестирования (при обновлении проекта с iOS8.3 до iOS9).
ObjectiveTC

1
Давай Apple, что случилось с "это просто работает" ... это должно относиться и к dev. По крайней мере, предложите нам предложения о том, как решить подобные проблемы, а не эти загадочные сообщения. В некотором роде напоминает Microsoft, ов.
Джон Контарино

2
Большое спасибо за рекомендации "-L для путей поиска в библиотеке" и "-F для путей поиска в библиотеке" , они отлично сработали для меня.
swiftBoy

79

Моя проблема заключалась в том, что я открыл исходный файл .xcodeproj вместо .xcworkspace, который был сгенерирован CocoaPods.


Черт возьми, это действительно спасло меня после 3 часов стука головы по клавиатуре
Грегори Салданья

60

Мне пришлось удалить ссылки на:

  • цель
  • Настройки сборки
  • Каркасные Пути Поиска

введите описание изображения здесь

Затем сборка была нарушена (ожидается). Поэтому я удалил Framework (FB SDK), снова добавил его и вуаля. Нет больше ошибок или предупреждений. :)


19

Я использую какао-бобы, поэтому я вышел из Xcode и побежал

pod install

снова и снова открыл проект. Это все исправлено!


1
Не уверен, почему вас опровергают, когда ваше предложение может быть решением аналогичной проблемы! В частности, это решение, если у вас появляются похожие сообщения об ошибках после добавления новой конфигурации сборки в ваш проект. Поскольку добавление новой конфигурации сборки автоматически подразумевает дублирование существующей конфигурации, необходимо выполнить pod installнастройку для значения столбца «На основе файла конфигурации».
Cellane

1
Кроме того, стручки какао создают рабочее пространство. Обязательно откройте это, а не файл проекта. pod install + open файл рабочей области исправил мою проблему.
Майкл Кребс

В Ionic это работает для меня, когда я запустил установку pod в папке platform / ios
Bas van Dijk

18

Для меня проблема заключалась в пропущенном побеге "\" персонажа.

Мои пути поиска были разбиты на несколько строк в путях поиска в библиотеке. Удобно, они ломались в местах на моем пути. Добавление escape "\" исправило это для меня.

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

Это идеальный ответ! Испытано в апреле 2014 г.
Van Du Tran

1
Жаль, что это все еще не работает в Xcode 6, февраль 2015 года. Пробелы в путях не должны быть экранированы вручную.
StilesCrisis

Ответы, принятые выше и выше, не сработали для меня, но это сработало. Мой намек на то, что это была эта проблема, заключается в том, что XCode генерировал 2-L ошибки, причем каждая ошибка была фрагментом полного пути, и она ломалась в пространстве. Договорились, что в 2015 году нам не нужно беспокоиться о выходе из космоса, что должно быть решено за кулисами для нас!
Джон Контарино

Да, это давняя проблема в XCode, которая возникает, когда ваш путь поиска автоматически добавляется системой (т. Е. Из-за перетаскивания библиотеки во «встроенные двоичные файлы» - по какой-то причине она не покидает пробелы автоматически и впоследствии интерпретирует их как отдельные пути к файлам
Ash

13

Я нашел ссылку, которую мне пришлось удалить по адресу:

  • цель
  • Настройки сборки
  • Пути поиска в заголовке

33
Использование Google для поиска решения для «ld: warning: каталог не найден для параметра», поиск собственного ответа в качестве решения
Jasper

13

В моем случае проблема заключалась в поиске путей в фреймворке с неполными, мертвыми, старыми ссылками или несколькими фреймворками одного типа. Удалите их, и ваш проект скомпилируется без проблем.

обязательно сделай Build -> clean

введите описание изображения здесь


10

Я столкнулся с той же проблемой (первой) после сбоя XCode, и ни одно из предложенных решений не сработало. Чтобы подавить предупреждение, которое я сделал:

• управлять схемами ...

• удалил текущую схему

• Автоматическое создание схем сейчас


Мы должны попросить автора этого оригинального вопроса опубликовать примечание, чтобы просмотреть все эти решения. Список. Попробуйте первое, второе, следующее решение, следующее решение ... потому что это было сделано для переноса более старого проекта, а другие решения являются разумными. Если бы я не опробовал все, я бы не нашел этого ... двинулся дальше и плыл в замешательстве. Спасибо Франческо!
Мэтью Фергюсон

8

Вот что сработало для меня:

  1. Нажмите на проект
  2. Нажмите на настройки сборки
  3. Поиск "Рамки поиска фреймворка"
  4. Очистите путь и введите «$ (наследуется)»

6

Я столкнулся с тем же, что кажется, тоже проблема (на этот раз в XCode 5.0.2). В моем случае, что случилось, было то, что XCode решил избежать кавычек уже в "Настройках сборки". Так, например:

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

стал

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

что привело к сбою сборки ...

Как только я удалил экранирование в кавычках, все снова заработало нормально. Кроме того, было бы лучше удалить цитаты, если они вам не нужны.


1
ОГРОМНОЕ +1 за это. Эти побеги в "были причиной" каталога не найден "для опций -L и -F.
Будет

1
очень полезный совет ... в моем проекте xcode 5.0.2 экранированы кавычки в начале, середине и конце пути .... он также странным образом продублировал пути для некоторых фреймворков ... убрал экранирование, пусть просто "реальный" пути фреймворков "для тех, которые используются в проекте и избавлены от предупреждений ... также необходимо было удалить / добавить фреймворки после исправления путей
Marcos Reboucas

6

Если это происходит после того, как вы добавили Podfile в свой проект и запустили установку pod, перейдите в папку вашего проекта, вы увидите новый созданный файл "{ProjectName} .xcworkspace" - откройте этот файл в xcode

Установленные модули будут правильно связаны с вашим проектом в этом файле.


Возможно, вы открыли файл проекта вместо рабочей области.
Джейсон

3

Следуйте этому пошаговому решению:

  1. Нажмите на ваш проект (цели);
  2. Нажмите на Настройки сборки;
  3. В разделе «Пути поиска в библиотеке» удалите пути;
  4. Добавить ./**на пути поиска в библиотеке.

3

Дополнительный ответ

Во всех ответах сказано, чтобы удалить из цели целевые пути поиска Framework или Library. У меня было две проблемы:

  • Во-первых, я смотрел на свою основную цель проекта, а не на цель модульного тестирования.
  • Во-вторых, я не мог понять, как удалить каркасный путь поиска. Оказалось, что он просто щелкает по нему, чтобы войти в режим редактирования, а затем просто удаляет строку.

Я хочу попробовать это, но я волнуюсь, что это сломает приложение. Вы уверены, что все заработало после того, как вы это сделали?
Supertecnoboff

@Supertecnoboff Если вы беспокоитесь, что это не сработает, сохраните строку, прежде чем удалить ее. Вы всегда можете вставить его обратно. Мое приложение уже сломалось, поэтому мне просто приходилось пробовать, пока что-то не заработало. Мой ответ выше - то, что сработало для меня.
Сурагч

1

Для меня проблема заключалась в том, что я не включил соответствующие фреймворки (при копировании аддонов из другого проекта я также не копировал файлы фреймворков)


1

Ключом к этому типу ошибки является переход к настройкам сборки и просмотр каждого из разделов путей поиска, таких как Пути поиска в библиотеке, Пути поиска в структуре и, возможно, даже Пути поиска в заголовке, а также очистки любых путей, которые больше не применяются, чем ваши. приложение с трудом пытается найти. Убери их и продолжай в том же духе


1

проверить, какие рамки отсутствуют, затем перейти к

=> Фазы сборки => Связать двоичные файлы с библиотеками

удалить библиотеку и затем добавить обратно


1

У меня была похожая проблема, которая исчезла, когда я создал новую схему и использовал ее для восстановления ???


1

Для меня у меня также включены тесты. Путь поиска для тестов также был заполнен неверно.

Очистите путь поиска фреймворка как для обычного, так и для тестового кода!


1

Из-за пользовательских каталогов, которые были введены в пути поиска (фреймворки и библиотека), проект переопределяет каталоги модуля. поэтому он не может его найти.

Чтобы решить эту проблему, удалите все пользовательские каталоги из

Пути поиска -> Пути к библиотекам и пути к структуре,

видеть только $ {унаследованный}.

Надеюсь, это поможет. Это сработало для меня.


1

введите описание изображения здесь

Добавьте $ (унаследованный) -Objc -lcrypto - lssl в Проект -> Настройка сборки -> Путь поиска -> Путь поиска библиотеки


Вышеупомянутое решение работает нормально для меня, если оно не работает для вас, пожалуйста, поделитесь скриншот.
Бандит Кумар

1

Если это происходит после установки модуля с некоторыми зависимостями, проблема может заключаться в том, что вы используете старую версию приложения (.xcworkspace) в Xcode.

После установки модуля это вывод, который вы можете увидеть.

Выход из установки.

Вывод пакета

Сделайте именно это, закройте текущее окно Xcode и откройте новый .xcworkspace.

Открытие нового xcworkspace]

Открытие нового xcworkspace


0

Вы должны проверить опцию для этого:

Настройки сборки-> Пути поиска в структуре-> {введите путь к вашему проекту}


0

Я просмотрел все [Пути поиска в библиотеке - Пути поиска в структуре - Пути поиска в заголовке]. но пути для удаления нет, поэтому я смог убрать это предупреждение, зайдя в комплект Xcode и создав пустую директорию в том месте, на которое жаловалось предупреждение.



0

Не забудьте создать такую ​​же конфигурацию для проекта Pod в вашей рабочей области, если вы измените MainApps на новую конфигурацию.

Например,

В моем случае, чтобы решить эту проблему, я должен был создать конфигурацию ReleaseOfficial также для проектов Pod, когда я создал конфигурацию ReleaseOfficial для своего MainApp.


0

Если вы установили какой-либо новый модуль и получили эту ошибку, просто выйдите из xcode> снова откройте> соберите проект


0

Если типичное решение не решает проблему, то для меня это решило то, что все версии iOS в проекте xcode (например, IPHONEOS_DEPLOYMENT_TARGET) / цели развертывания, подфайлы (если применимо) и т. Д. Установлены на один и тот же номер версии.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.