为什么我有两个版本的gcc和g++;在MacOSX中?

为什么我有两个版本的gcc和g++;在MacOSX中?,macos,gcc,g++,command-line-tool,Macos,Gcc,G++,Command Line Tool,在安装Xcode和CommandlineTools之前,我刚刚重新安装了macosxyosemite 似乎我在以下两个目录中有两个gcc和g++版本: /usr/bin(两个文件都是14kb)和 /Library/Developer/CommandLineTools/usr/bin(g++只是一个别名,gcc是19kb) 在终端中输入“which gcc”给我“/usr/bin/gcc”,输入“which g++”给我“/usr/bin/g++”,这意味着系统将只在/usr/bin中使用gcc和

在安装XcodeCommandlineTools之前,我刚刚重新安装了macosxyosemite

似乎我在以下两个目录中有两个gcc和g++版本:

  • /usr/bin(两个文件都是14kb)和
  • /Library/Developer/CommandLineTools/usr/bin(g++只是一个别名,gcc是19kb)
  • 在终端中输入“which gcc”给我“/usr/bin/gcc”,输入“which g++”给我“/usr/bin/g++”,这意味着系统将只在/usr/bin中使用gcc和g++

    因此,我的问题是:

    1。为什么我有两个版本的gcc和g++?

    2。为什么与CommandLineTools一起安装的gcc和g++未指定为默认值?

    3。如何让Mac OS X指向目录“/Library/Developer/CommandLineTools/usr/bin”中的gcc和g++“

    顺便说一句,我根据以下说明安装了CommandlineTools:

    但是,我通过键入“gcc--version”(差异高亮显示)得到了不同的输出:

    配置为:--prefix=/Application/Xcode.app/Contents/Developer/usr--配置为gxx include dir=/usr/include/c++/4.2.1 苹果LLVM版本6.0(clang-600.0.54)(基于LLVM 3.5svn) 目标:x86_64-apple-darwin14.0.0 线程模型:posix

    。。。而不是如上面的网页所示的/Library/Developer/CommandLineTools/usr


    我对MacOSX目前实际使用的是哪个gcc/g++感到非常困惑

    macosx不使用gcc(g++)。自MacOSX10.7以来,它默认为叮当声。因此,当您键入gcc或g++进行编译时,它实际上使用了Clang(cc)

    基本上当您调用'cc'或'cxx'或'c++'时,您调用的是Clang。有关Apple clang()状态的更多信息,请阅读此处

    除了@adnan kamili所说的之外,你可能想知道苹果为什么会这么做。下面是利娅·勒贝杰夫的简短回答()

    他们做出决定的一个因素当然可能是GCC的许可证。GPL 对于非自由软件,它的限制性很强。 具体而言,GPL要求提供衍生项目 他们的完整和开放源码,也根据GPL授权

    而苹果公司可以采取的合理措施是 让一些聪明的工程师来加强GCC对 苹果的一切,许可证都要求他们的作品是 在GPL下发布——这是一个大范围内的棘手问题 公司,因为这可能会迫使苹果大量收购 连接到GCC的软件也将在GPL下发布

    Clang是在更宽容的大学开放的。 伊利诺伊州许可证,允许苹果公司开发 在不发布完整源代码的情况下发出叮当声


    这不是一个编程问题。离题。