为什么安装Xcode命令行工具会改变什么’gcc –version’报告

最近我通过AppStore将OS 10.9上的 Xcode更新到5.0.1版本.在我看来,这个更新还更新了命令行工具,例如运行gcc -version生成的
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

但是answers here on SE表示不是这种情况,需要单独下载和安装命令行工具.我做到了这一点,最终得到了相同的工具版本,但有微妙的差异.例如,现在运行运行gcc -version生成

gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

这是事情应该如何工作 – 这是否表示当前Xcode命令行工具的预期行为,或者是通过直接下载安装(与通过AppStore与Xcode一起安装;如果还有可能的话)安装是特别的)?

和/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c /4.2.1更改的/usr/include / c /4.2.1?

解决方法

我会用列表结构我的答案,以便您得到全面的图片,您的主要问题的答案在最后一个列表项目中得出结论:

>由于小牛,默认的编译器套件是Clang / LLVM而不是GNU GCC. gcc和g的同义词分别指向Clang和Clang,以保持向后兼容性,并且由于Clang与GCC非常向后兼容,所以没有理由不这样做.
>自从XCode 6以来,XCode自动捆绑在主安装中的命令行开发工具,并为XCode捆绑.app包.默认框架和工具包也是如此.目前完整的命令行开发还没有完全运行,只是启用了XCode开发.
>但是,为了在命令行中成功开发,必须在终端应用程序中执行xcode-select -install并按照说明进行操作.
>鉴于SDK现在已经捆绑并组织在XCode.app包中的目录结构中,您注意到的gxx-include-dir中的更改是由于现在,/usr/include现在只是一个软链接适当的地方具体包括:

$ls -l /usr/include

lrwxr-xr-x 1 root wheel 112 Feb 2 19:08 /usr/include -> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/

最后一点不一定是坏事,现在可以使用xcode-select(1)命令来管理活动的SDK.我希望这可以澄清一些令人困惑的事情,因为所有这些(相当大的)变化都是以经典的苹果时尚推出的,完全和彻底的沉默.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...