ld: 警告:选项所指定的目录未找到

563

在构建我的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 而不是 -Ldirectory not found for option '-F/...'。参见下面 @macayer 的回答以了解二者的区别。 - pkamb
1
注意:确保带有空格的目录要加引号。例如 $(PROJECT_DIR)/my folder 应该写成 "$(PROJECT_DIR)/my folder" - Jacksonkr
当我的类没有正确指定目标成员时,我遇到了这个问题。 - Tom Howard
1
@Jackson,这对我有用。我遇到了-F警告,并按照您在“构建设置”中指示的引用方式修复了它。谢谢。 - Mark
定期备份是最佳实践。 - Gajendra K Chauhan
32个回答

958

你需要执行以下操作:

  1. 点击你的项目(targets)
  2. 点击Build Settings(构建设置)
  • 如果你的错误包括-L标志,则删除Library Search Paths(库搜索路径)中的值
  • 如果你的错误包括-F标志,则删除Framework Search Paths(框架搜索路径)中的值

至于第二个错误,很抱歉我不能帮助你解决。希望其他人能够给你提供帮助。


5
这导致我的项目出问题了,但我只是将谷歌分析的 #imports 注释掉并删除了 SDK,退出 xcode,重新添加并取消注释我的 #imports,然后它又可以工作了 :) - emotality
9
如果您实际上需要那个库路径,请谨慎删除。请验证错误中指定的路径是否存在。该库在磁盘上的位置可能已经被移动。 - AWrightIV
3
删除了Library Search Paths后,我遇到了这个错误:ld: library not found for -lMoboSDK clang: error: linker command failed with exit code 1 (use -v to see invocation) (lMoboSDK是我的静态库) - lee
2
我不得不删除“AppTests”目标下的“Framework Search Paths”路径以清除错误。 - AT3D
2
对于那些看到错误 @lee saw... 的人,请确保打开并构建工作区而不是项目。 - psilencer
显示剩余14条评论

771

有两个错误常常被人们混淆。

如果是 "directory not found for option '-L/..." 错误,那就意味着是一个库错误,你应该尝试:

  • 点击你的项目(目标)
  • 点击构建设置(Build Settings)
  • Library Search Paths 下,删除路径

如果是 "directory not found for option '-F/..." 错误,那就意味着是一个框架错误,你应该尝试:

  • 点击你的项目(目标)
  • 点击构建设置(Build Settings)
  • Framework Search Paths 下,删除路径

当你移动引用文件时可能会发生这种情况。


3
为什么不是所有的答案都像你的那样简洁和有帮助呢?谢谢。我还有一个小问题:在哪里可以学习关于神秘的-L/-F错误呢?我对链接/编译/构建这整个过程都很陌生,而且Xcode内置的文档并不是特别好。我猜想大部分相关信息都可以通过命令行访问。我的猜测正确吗?对我来说,甚至不知道从何处开始学习这些东西都很困难。我习惯于Web开发,所以你可以想象,在那个领域找到信息要容易一些。 - Ben Stock
对我有用。在将项目从iOS8.3升级到iOS9时,我不得不删除项目和测试模块的目标中的框架搜索路径。 - ObjectiveTC
2
苹果啊,怎么了,“一切都是如此简单”呢……这也应该适用于开发者。至少给我们提供解决这些问题的建议,而不是这些神秘的信息。有点像微软,呸。 - John Contarino
如果按照上述指示后问题仍未解决,请尝试清理/清除构建文件夹。 - MendyK
2
非常感谢您提供的“-L用于库搜索路径”和“-F用于框架搜索路径”的指南,对我非常有帮助。 - swiftBoy
显示剩余6条评论

87

我的问题是我打开了原始的.xcodeproj而不是CocoaPods生成的.xcworkspace


67

我必须从以下位置删除引用:

  • 目标
  • 构建设置
  • 框架搜索路径

输入图像描述

然后构建失败了(预料之中)。所以我删除了框架(FB SDK),重新添加了它,然后就好了。没有错误或警告。 :)


23

我使用 cocoa pods,所以我退出了Xcode并运行了

pod install

再次打开并重新启动了该项目。这解决了所有问题!


1
不确定为什么你的建议会被点踩,因为它实际上可以解决类似问题!具体而言,如果您在项目中添加新的构建配置后遇到类似的错误消息,则可以使用此解决方案。由于添加新的构建配置自动意味着复制现有配置,因此您需要运行 pod install 来调整“基于配置文件”列的值。 - Cellane
1
另外,CocoaPods 会生成一个工作区,请确保打开它而不是项目文件。运行“pod install + open”命令来打开工作区文件,这样可以解决我的问题。 - Michael Krebs
在Ionic中,当我在platforms/ios文件夹内运行pod install时,这对我有效。 - Bas van Dijk
谢谢您分享这个,它对我也起作用了。 - Ibrahim Azhar Armar

19

对我来说,问题是缺少了一个反斜杠"\"字符。

我的搜索路径被分成几行在Library Search Paths中。方便的是,它们在我的路径空格处断开。添加反斜杠"\"对我有用。

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

这是完美的答案!2014年4月测试过。 - Van Du Tran
1
这令人遗憾,Xcode 6 在2015年2月仍然存在此问题。路径中的空格不应该需要手动转义。 - StilesCrisis
上面被接受和投票较高的答案对我没有用,但这个有用。我的提示是这个问题是Xcode抛出了2个-L错误,每个错误都是完整路径的一个片段,并且在空格处中断。同意在2015年我们不应该担心转义空格,这应该在幕后为我们处理! - John Contarino
是的,这是Xcode中一个长期存在的问题,它会在系统自动添加搜索路径时发生(即拖入库到“嵌入式二进制文件”中 - 出于某种原因它不会自动转义空格,随后将其解释为单独的文件路径。 - Ash

16

我找到了需要移除的参考资料位置:

  • 目标
  • 生成设置
  • 头文件搜索路径

47
使用谷歌搜索“ld: warning: directory not found for option”错误的解决方案,在搜索结果中找到了自己的答案并解决了问题。 - Jasper

15
在我的情况下,问题出在框架搜索路径上。这些路径可能是不完整的、失效的、过时的或包含多个同类型的框架。删除它们后,您的项目将可以编译而无任何问题。 记得进行“构建”->“清理”的操作。 在这里输入图片描述

12

我在Xcode崩溃后遇到了相同的问题(第一个问题),但是没有任何建议的解决方案有效。

为了消除警告,我已经执行以下操作:

• 管理方案...

• 删除当前方案

• 自动创建方案


我们应该让这个原始问题的作者发布一个注释,以便运行所有这些解决方案。一份清单。首先尝试第一个,然后是下一个解决方案,接下来是下一个解决方案...因为这对我迁移旧项目和其他解决方案都是合理的解决方案。如果我没有尝试所有的解决方案,我就不会发现这个...继续前进并陷入困惑。谢谢Francesco! - Matthew Ferguson

10

这是对我有效的方法:

  1. 点击项目
  2. 点击构建设置
  3. 搜索 "Framework Search Paths"
  4. 清除路径并输入 "$(inherited)"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接