【问题标题】:Changing Compiler to llvm-clang on existing iPhone Project在现有 iPhone 项目上将编译器更改为 llvm-clang
【发布时间】:2010-11-27 15:01:46
【问题描述】:

当我在现有项目中将编译器版本切换到 Clang llvm 1.0 时,我在预编译 *.pch 文件时收到以下构建错误:

error: can't exec '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2' (No such file or directory)

是否需要更改其他设置才能使我的项目与新编译器一起使用?

(我确实尝试过清理所有目标)


更新:

澄清一下:

由于新的编译器实际上确实适用于新项目,问题不在于我的系统缺少任何东西。

此外,Xcode 甚至不应该试图找到 llvm-gcc-4.2,因为我从那个编译器切换到了新的 Clang llvm 1.0。这就是让我相信还有另一个设置需要更改的原因。


感谢 fbereto 的建议。真正的答案在于 cmets。

【问题讨论】:

    标签: iphone cocoa-touch xcode


    【解决方案1】:

    如果您查看错误指定的路径,您将找不到 iPhone 设备的 LLVM 编译器 (llvm-gcc-4.2):

    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
    

    话虽如此,确实适用于 iPhone 模拟器:

    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/
    

    所有这一切都表明,虽然可以在 LLVM 下为模拟器编译您的 iPhone 应用程序,但设备本身不存在等效工具。

    (答案在下面的 cmets 中详细说明。)

    【讨论】:

    • 新项目没有问题,它们运行良好并且确实“拥有所有正确的文件”。事实上,它根本不应该在寻找 gcc,而只是 Clang llvm 编译器。当我尝试更改编译器时,这只是现有项目的问题。
    • 补充:我不能说为什么旧的旧版 gcc 编译器不会在文件夹中,但不应该影响问题(我认为)。
    • 您是否尝试过对新旧项目之间的 xcodeproject 进行比较?也许那里会有关于为什么两者之间的编译器设置不同的线索。
    • 你说得对,我找到了线索。差异显示唯一不同的是 ROOTSDK (BaseSDK),它是 3.0 而不是 3.1。我改变了它并且它起作用了。奇怪的是,即使我是针对 3.1 构建的,BaseSDK 仍然会产生错误。谢谢! (除非您编辑答案,否则我不会让我投票给您)
    • 那么这是否会将 iPhoneOS 编译器也更改为 LLVM?那么当我将 BaseSDK 设置为 iPhoneSimulator3.1 并将编译器设置为 LLVM-GCC 或 LLVM-Clang 时,我会得到优化的代码吗?我问是因为stackoverflow.com/questions/1525510/… 不是这样。
    猜你喜欢
    • 2012-12-16
    • 2023-03-27
    • 1970-01-01
    • 2020-01-19
    • 2021-06-17
    • 1970-01-01
    • 2021-09-30
    • 2011-02-02
    • 2012-02-27
    相关资源
    最近更新 更多