有一个注意事项:
如何查找默认编译器以及如何更改它?Riak 无法使用 Clang 编译。请确保您的默认 C/C++ 编译器是 GCC
macOS Catalina (10.15.4),which 命令打印:
$ which clang
/usr/bin/clang
$ which gcc
/usr/bin/gcc
如何查找默认编译器以及如何更改它?Riak 无法使用 Clang 编译。请确保您的默认 C/C++ 编译器是 GCC
$ which clang
/usr/bin/clang
$ which gcc
/usr/bin/gcc
make
默认使用的编译器名称是什么?$ mkdir junk
$ cd junk
$ > x.cpp
$ > y.c
$ make x y
c++ x.cpp -o x
cc y.c -o y
$ cd ..
$ rm -fr junk
make
使用的名称是cc
和c++
。它们不明显是clang
或clang++
,但它们也不明显是gcc
或g++
。$ which cc c++
/usr/bin/cc
/usr/bin/c++
$
cc
, c++
, gcc
, g++
, clang
和 clang++
这些名称背后真正的编译器是哪一个呢?我们可以通过获取它们的版本来确定:
$ for compiler in cc c++ gcc g++ clang clang++
> do
> which $compiler
> $compiler --version
> done
/usr/bin/cc
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/usr/bin/c++
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/usr/bin/gcc
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/usr/bin/g++
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/usr/bin/clang
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/usr/bin/clang++
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$
/usr/bin
中安装的所有版本都是同一个编译器,并且该编译器是clang
或clang++
。clang
和clang++
伪装而成。clang
伪装-安装到您的计算机上?
请注意,苹果公司已经开始将系统头文件隐藏在很远的地方(不在/usr/include
中——你不能修改文件系统的这部分,以添加指向它们所隐藏位置的符号链接):
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
(你的意思是你猜不到吗?我也是!)
一旦您在适当的位置安装了GCC,您需要确保使用“真正的”GCC而不是/usr/bin
中的“假”的GCC。为此,您需要确保“真正的”GCC的bin目录出现在您的PATH中,而不是/usr/bin
。我已经在/opt/gcc/v9.3.0
下安装了GCC 9.3.0,因此/opt/gcc/v9.3.0/bin
出现在我的PATH上,远在/usr/bin
之前。
您还需要确保riak
的配置使用正确的编译器。如果有一个./configure
脚本,请使用指定编译器的正确路径运行它。例如,我可能会使用:
./configure CC=/opt/gcc/v9.3.0/bin/gcc CXX=/opt/gcc/v9.3.0/bin/g++
相关链接(越来越旧的帖子):
对于 macOS,请按照以下步骤操作:
方法一
使用 homebrew 安装 gcc 编译器。(如果你还没有安装 homebrew ,请先安装)
brew install gcc
假设 brew 在您的系统上安装了 gcc-12 版本,请使用以下命令进行检查:
gcc-12 --version
打开终端并使用以下命令:
cd /opt/homebrew/bin
下面的命令将使用 g++-12 创建符号链接以将其与 g++ 关联。通过使用它,您可以轻松地在不同版本之间切换。
ln -s gcc-12 gcc
现在检查 gcc --version
,它将从macOS默认的clang更改为gcc。
方法2(创建别名)
打开终端并打开 .zprofile 或 .zshrc 文件
open .zprofile
在打开的文件中添加以下行,保存并关闭它。
alias gcc="gcc-13"
alias g++="g++-13"
重新启动终端,现在只需使用 gcc 或 g++ 即可正常工作。
注意:您可以按照相同的步骤更改g++,只需将gcc-12
替换为g++-12
编辑:也许在您看到这个答案时,brew会安装最新的gcc或g++版本,例如gcc-13等,请相应地修改命令。