我想在OSX山狮中编译一个c文件。在Xcode 4.4中,首选项 - >下载我可以安装命令行工具来做到这一点。但是在那个窗格上,它告诉我我可以使用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;
}
答案 0 :(得分: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”。
答案 1 :(得分:2)
可能没有任何直接帮助,但您可以为常用的xcrun命令设置别名,以便在其他进程调用gcode,make,gdb,git等时使用Xcode版本:
alias gcc='xcrun gcc'
如果您愿意,可以将别名放入.bashrc文件中,以便它可以保留,并根据需要从.bash_profile获取。
所有这一切的优点是您不需要安装Xcode命令行工具,也可以避免使用包管理器,节省空间,降低复杂性并利用Xcode自动为您更新这些工具。
答案 2 :(得分: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'