【问题标题】:How to I make an iPad app compile on a device using LLVM GCC?如何在使用 LLVM GCC 的设备上编译 iPad 应用程序?
【发布时间】:2011-03-30 16:57:50
【问题描述】:

我将我的应用程序设置为使用编译器版本下 Target>Build Settings 中的 LLVM GCC 4.2,它适用于模拟器。

当我将“方案”切换到 iPad 时,它会发出与使用 GCC 时相同的警告,所以我假设它现在正在 GCC 下编译。但是“C/C++ 编译器版本”目标仍然设置为 LLVM GCC 4.2(iOS 默认除外,它是 GCC 4.2,我无法更改)。

为什么它不再使用 LLVM GCC 进行编译,我该如何更改它以使其在 iPad 下运行?

编辑:我遇到的错误与访问超类的实例变量有关。如果您没有将其写为 [self iVarName],则 GCC 会出错,而如果您仅使用 iVarName,则 LLVM GCC 可以正常编译。

【问题讨论】:

  • 你清理过这个目标吗?你能举一个你试图通过这种方式避免的错误的例子吗?
  • 我相信我已经清理了目标。该错误与引用超类的实例变量有关。将错误添加到我的问题中。
  • 您是否偶然运行了 32 位模拟器?我的猜测是您在 iPad 上使用 LLVM/GCC,但请记住 iPad 使用的是现代运行时。听起来您的代码正在做现代运行时不允许的事情。也许使用超类 ivar 来合成属性?
  • 我完全像这个问题一样使用它并且也解决了它:stackoverflow.com/questions/3957288/… 如果 iPad 使用的是 LLVM/GCC,那么我相信它不会出现这个错误 - 但不幸的是它确实.我不确定我是否使用的是 32 位模拟器。我必须在星期一回来工作时检查。 iPad 是 32 位还是 64 位?
  • iPad 是 32 位的,但它使用类似于 64 位 Mac 的“现代”运行时。我的建议是发布你得到的实际代码和错误,有人可以解决这个潜在问题。例如,如果您尝试 @synthesize 尝试包装超类 ivar 的子类中的属性,则不能直接在现代运行时中执行此操作。

标签: ipad compiler-construction xcode4 llvm-gcc


【解决方案1】:

LLVM GCC 是带有 GCC 编译器的 LLVM 预处理器,因此您应该会看到相同的错误消息(由于 LLVM,IDE 中还会出现更多错误消息)。您可以尝试 LLVM Compiler 2.0,但目前它有一些错误。要设置编译器,请选择左上角的项目,点击 Build Settings 选项卡并更改编译器。

【讨论】:

  • "LLVM GCC 是带有 GCC 编译器的 LLVM 预处理器,因此您应该会看到相同的错误消息(由于 LLVM,IDE 中还会出现更多错误消息)。"我没有……事实上 LLVM GCC 没有显示 GCC 的错误。当我使用 iPad 设备时,它会抛出 GCC 所做的错误,而 LLVM GCC 没有,即使我将编译器设置为 LLVM GCC。请阅读问题。
  • 情况正好相反。 “LLVM GCC 4.2”实际上是与 LLVM 后端代码生成器配合的 GCC 前端。
猜你喜欢
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 2011-09-27
  • 2018-08-31
  • 2022-07-19
  • 2015-05-28
  • 2013-12-02
相关资源
最近更新 更多