【问题标题】:Error "file not found: -fobjc-arc" on compiling IOS App in XCode在 XCode 中编译 IOS 应用程序时出现错误“找不到文件:-fobjc-arc”
【发布时间】:2012-05-18 18:30:32
【问题描述】:

添加 OCMock 框架后,我得到了那个奇怪的错误... :(

ld:找不到文件:-fobjc-arc clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

看起来编译器标志是否试图由 XCode 加载?

有什么想法吗?

最好的问候,hijolan

【问题讨论】:

  • 你使用的是什么版本的 Xcode?​​span>
  • 查看日志导航器中的构建输出。如果您无法弄清楚,请在此处发布。
  • 嗨...谢谢您的回复...上面的代码来自日志导航器...我现在通过 git 恢复了我的项目文件并再次添加了库.. ;) 它可以工作现在。
  • 我现在收到此错误 - 我已编辑问题以添加到日志导航器输出中。

标签: objective-c xcode linker


【解决方案1】:

我在 Xcode 4.3.2 上遇到了完全相同的错误。这是我的导航日志;我正在为 Google 果汁添加它。

Ld /Users/makdad/Library/Developer/Xcode/DerivedData/Journal-bfkvfbsrkmrsjpddzfmwrstjfkzr/Build/Products/Debug-iphonesimulator/JournalTests.octest/JournalTests normal i386
cd /Users/makdad/Documents/MT/mt-mobile/iOS/Journal
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk -L/Users/phooze/Library/Developer/Xcode/DerivedData/Journal-bfkvfbsrkmrsjpddzfmwrstjfkzr/Build/Products/Debug-iphonesimulator -F/Users/phooze/Library/Developer/Xcode/DerivedData/Journal-bfkvfbsrkmrsjpddzfmwrstjfkzr/Build/Products/Debug-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -filelist /Users/phooze/Library/Developer/Xcode/DerivedData/Journal-bfkvfbsrkmrsjpddzfmwrstjfkzr/Build/Intermediates/Journal.build/Debug-iphonesimulator/JournalTests.build/Objects-normal/i386/JournalTests.LinkFileList -mmacosx-version-min=10.6 -bundle_loader /Users/phooze/Library/Developer/Xcode/DerivedData/Journal-bfkvfbsrkmrsjpddzfmwrstjfkzr/Build/Products/Debug-iphonesimulator/Journal.app/Journal -Xlinker -objc_abi_version -Xlinker 2 -ObjC -force_load -fobjc-arc -ftest-coverage -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=40100 -lOCMock -framework Twitter -framework MapKit -framework MobileCoreServices -framework SystemConfiguration -lxml2 -licucore -framework CoreData -framework CoreGraphics -framework CFNetwork -framework QuartzCore -framework SenTestingKit -framework UIKit -framework Foundation -o /Users/phooze/Library/Developer/Xcode/DerivedData/Journal-bfkvfbsrkmrsjpddzfmwrstjfkzr/Build/Products/Debug-iphonesimulator/JournalTests.octest/JournalTests

OCMock 指令明确要求您添加链接器标志 -- -ObjC-force_load

-force_load 需要一个值 - 请参阅 the answer to this question,它解释了如果您不想指定库名称,可以使用 -all_load

作为一个只花了 25 分钟的人,我应该再次查看 OCMock 教程——我认为该说明中的内容不是很清楚。

This blog post 有一个更好的图像,可以准确地显示您的设置应该是什么样子。

【讨论】:

  • 请注意,-all_load-force_load 在 Xcode 4.2 及更高版本的 LLVM 上不再是必需的:stackoverflow.com/a/7942924/19679。有一次,由于链接器错误而需要它们,但该问题已在最新版本的 LLVM 中得到解决。您应该能够删除 -ObjC 以外的链接器标志。
  • @BradLarson 感谢您的澄清。事情总是这样……人们添加巫术魔法来解决错误,但是当错误被修复后,没有人会绕过“互联网”并清理旧的解决方法帖子的混乱。
猜你喜欢
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多