Mac 10.13.6 High Sierra 在这里。作为 C 开发新手,我正在尝试使用最新的稳定/推荐的 GCC 版本进行设置,我相信(请诚实地说)是 10.2。
当我进入终端查看已安装的内容时:
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$ gcc -dumpversion
4.2.1
Run Code Online (Sandbox Code Playgroud)
好的...很惊讶地在输出中看到 LLVM/clang 相关的内容。所以我尝试这个:
$ clang --version
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Run Code Online (Sandbox Code Playgroud)
所以它几乎就像...我两者都clang安装gcc了,但是我的clang安装已经同化了我的 GCC 安装?!否则为什么gcc --version输出引用会发出叮当声?
这是 Mac 设置的典型情况吗?
我需要做什么才能在我的计算机上正确安装 GCC 10.2?
Mar*_*ell 38
以下是一些简单的事实、陈述和观察,试图解释正在发生的事情:
Apple随macOSclang/LLVM一起提供了编译器。是一个可以解析的“前端”,以及可以编译的东西(称为“后端” )ClangCC++Objective-CLLVM
Clang/LLVM位于/Applications/Xcode.app/somewhere
Apple还发布了一个/usr/bin/gcc可以运行的clang. 我不知道他们为什么这样做 - 这对我来说似乎没有多大帮助 - 但他们没有回答我的问题
Apple 将其二进制文件(程序)放入/usr/bin. 这是macOS不可或缺的一部分,您永远不应该触摸或更改其中的任何内容 - 如果您这样做,您就是在自找麻烦。此警告也适用于 Python。
如果您想要真正的、可爱的GNU 编译器集合 (GCC),其中包括gcc、g++和编译器,恕我直言,您最好的选择是从homebrewgfortran获取它们。我不会将安装说明放在这里,因为它们可能会过时,因此您应该使用自制网站上的安装说明。
安装自制软件后,您可以使用以下命令安装GNU 编译器集合 (GCC):
brew install gcc
Run Code Online (Sandbox Code Playgroud)
之后,您将在 中拥有所有可爱的GNU 编译器集合 (GCC)工具/usr/local/bin,因此您应该将其放入您的 PATH 中,靠近开头,并且无论如何在 之前/usr/bin,使用:
export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
一般来说,您还应该在您的登录配置文件或系统登录配置文件中添加类似的行,以便您或任何其他用户每次登录时都会设置它。
让我们来看看:
ls /usr/local/bin/gcc* /usr/local/bin/g++*
/usr/local/bin/gcc-10
/usr/local/bin/g++-10
Run Code Online (Sandbox Code Playgroud)
根据版本和更新,您将可以使用以下程序:
gcc-10 # the real GNU C compiler
g++-10 # the real GNU C++compiler
gfortran # GNU fortran compiler
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式检查它们的版本:
gcc-10 -v
g++-10 -v
gfortran -v
Run Code Online (Sandbox Code Playgroud)
现在您了解了homebrew,以下是一些更简单的事实和观察:
为您提供二进制文件(程序)的人(不是操作系统的供应商)应该将他们的东西放入其中,/usr/local以表明它只是本地安装的程序,而不是核心macOS操作系统的一部分
homebrew表现良好,会安装其二进制文件(程序)/usr/local/Cellar,然后通常会与/usr/local/bin/PROGRAMCellar 建立符号链接。这些都不会干扰苹果提供的东西。
如果你想运行命令的自制/usr/local/bin版本,你应该首先在你的路径上
让我们看一下这些符号链接:
ls -l /usr/local/bin/g*10
lrwxr-xr-x 1 mark admin 31 21 Aug 16:41 /usr/local/bin/g++-10 -> ../Cellar/gcc/10.2.0/bin/g++-10
lrwxr-xr-x 1 mark admin 31 21 Aug 16:41 /usr/local/bin/gcc-10 -> ../Cellar/gcc/10.2.0/bin/gcc-10
Run Code Online (Sandbox Code Playgroud)
如果您想知道输入命令时实际运行的内容,请使用type这样的命令。
type gcc
gcc is hashed (/usr/bin/gcc)
Run Code Online (Sandbox Code Playgroud)
这告诉你,如果你运行,gcc你实际上会运行/usr/bin/gcc,我们知道它来自苹果- 因为它是在/usr/bin
现在试试这个:
type gcc-10
gcc-10 is hashed (/usr/local/bin/gcc-10)
Run Code Online (Sandbox Code Playgroud)
这告诉你,如果你运行,gcc-10你实际上会运行/usr/local/bin/gcc-10我们知道是来自自制程序的- 因为它位于/usr/local/bin
| 归档时间: |
|
| 查看次数: |
15613 次 |
| 最近记录: |