【问题标题】:Cannot link in XCode when compiling for iPhone为 iPhone 编译时无法在 XCode 中链接
【发布时间】:2009-09-30 13:50:44
【问题描述】:

在为 iPhone 编译时,我设法搞砸了我的 XCode 项目设置。 链接时失败了

ld: warning: in /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/AddressBook.framework/AddressBook, file is not of required architecture
... (same for the other frameworks).

所以问题是它在为 iPhone 编译时尝试使用模拟器框架。

当你查看实际的链接命令时:

setenv IPHONEOS_DEPLOYMENT_TARGET 3.1
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk 
-L/Users/ben/development/xcode_output/Debug-iphoneos 
-F/Users/ben/development/xcode_output/Debug-iphoneos 
-F/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/
System/Library/Frameworks 
-F/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/
System/Library/Frameworks 

可以看到模拟器框架和iPhone框架路径都提供了。 我该如何改变呢?我在设置的任何地方都没有找到它。

项目设置中的[FRAMEWORK_SEARCH_PATHS, -F]为空。

也许问题在于静态库中的链接。 该静态库的项目设置包含许多重复设置。 总是有两个相同的设置(例如,两个搜索路径块、两个 GCC-4.2 代码生成块等)看起来不正常。

问候

【问题讨论】:

  • 您的“Base SDK”构建变量的值是多少? (右键单击目标和“获取信息”)。您还可以在 Build Info 中搜索有趣的字符串:iPhone、Simulator、3.0、3.1。您能否发布“重复设置”的屏幕截图?这个静态库是您项目中的另一个目标吗?

标签: iphone ios xcode xcodebuild


【解决方案1】:

我设法解决这个问题的唯一方法是创建一个新项目并重新开始:-(

【讨论】:

    【解决方案2】:

    ld:警告:在 /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/AddressBook.framework /AddressBook,文件不是必需的架构...(其他框架相同)。

    您的设备构建对吗?不是模拟器? 找到相同的框架,但在设备下。导入时检查整个文件路径。

    【讨论】:

      【解决方案3】:

      检查目标的框架搜索路径。如果其中有指向 Simulator SDK 的显式路径,请将其删除。

      【讨论】:

      • 记住,目标设置,而不是项目设置。
      【解决方案4】:

      我认为问题在于我链接的静态库有两个用于 iPhone 和模拟器的目标。我已将其更改为只有一个目标,这似乎解决了问题。

      问候

      【讨论】:

        【解决方案5】:

        我发现当我通过导航到 /Developer/platforms/.../Frameworks 以“旧方式”将框架添加到我的项目时,它在我的目标设置中添加了框架路径搜索列表的完整路径。这意味着我所有的框架都突然失效了。确保搜索列表中没有完整路径,并且您应该能够修复您的项目而无需创建新项目。

        [编辑] 经过进一步检查,我发现 cdespinoza 已经回答了这个问题 :)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多