3

我想在 OSX 山狮中编译 ac 文件。在 Xcode 4.4 中,Preferences -> Downloads 我可以安装命令行工具来做到这一点。但是在该窗格上,它建议我可以使用 xcrun 代替:

在安装之前,请注意,您可以在终端中使用 XCRUN 工具来启动编译器和嵌入在 Xcode 应用程序中的其他工具。使用 XCODE-SELECT 工具定义激活的 Xcode 版本。在终端中键入“man xcrun”以了解更多信息。

我很乐意这样做,但我无法让它找到 stdio.h。

$ xcrun gcc hello.c
hello.c:1:19: error: stdio.h: No such file or directory

通过 App Store 标准安装 Xcode 后,我的系统上肯定有这个文件:/Applications/Xcode.app/Contents/Developer//Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include /stdio.h

我尝试指定 SDK,但得到了同样的错误:

$ xcrun -sdk /Applications/Xcode.app/Contents/Developer//Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk gcc hello.c

一些谷歌搜索让我尝试在上述命令之前运行 xcode-select,但没有运气。无论如何,我只安装了一个版本的 Xcode。

$ sudo xcode-select -switch /Applications/Xcode.app

我怎样才能找到标题?

最终我放弃并安装了命令行工具,但如果知道如何使用内置的 Xcode 工具来做这件事会很好。

注意:这是我试图编译的文件:

#include <stdio.h>

int main() {
    printf("hello world!\n");
    return 0;
}
4

3 回答 3

4

您必须为编译器指定非标准的 sysroot。

使用 clang/llvm (这是新标准)可以解决问题:

xcrun clang --sysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/ -o hello hello.c 

如果您想坚持使用 gcc,只需将“clang”替换为“gcc”即可。

于 2012-08-19T08:45:18.327 回答
2

可能对此没有任何直接帮助,但是您可以为常用的 xcrun 命令设置别名,以便在其他进程调用 gcc、make、gdb、git 等时使用 Xcode 版本:

    alias gcc='xcrun gcc'

如果愿意,您可以将别名放入 .bashrc 文件中,以便它持续存在,并根据需要从 .bash_profile 中获取。

所有这些的好处是您不需要安装 Xcode 命令行工具,还可以避免使用包管理器,节省空间,降低复杂性并利用 Xcode 自动为您更新这些工具。

于 2012-08-26T06:18:16.087 回答
1

使用 xcrun --sysroot 对使用 10.8 的我不起作用。查看 clang 文档,我发现 -isysroot 是在这种情况下使用的选项。

使用:

xcrun gcc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk

或者:

xcrun clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk

对我来说,创建以下别名很有用:

alias xcrungcc='xcrun gcc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk'
alias xcrunclang='xcrun clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk'
于 2013-11-09T07:45:40.110 回答