C++ 如何确保我的默认C/C++;编译器是GCC
我正在尝试从macOS()上的源代码安装Riak 请注意: Riak不会使用Clang编译。请确保您的默认设置为 C/C++编译器是GCC 如何确定哪个编译器是默认编译器以及如何更改它 macOS Catalina(10.15.4),该命令打印:C++ 如何确保我的默认C/C++;编译器是GCC,c++,macos,gcc,clang,riak,C++,Macos,Gcc,Clang,Riak,我正在尝试从macOS()上的源代码安装Riak 请注意: Riak不会使用Clang编译。请确保您的默认设置为 C/C++编译器是GCC 如何确定哪个编译器是默认编译器以及如何更改它 macOS Catalina(10.15.4),该命令打印: $ which clang /usr/bin/clang $ which gcc /usr/bin/gcc 在macOS Catalina(以及之前的版本,也很可能是后续版本)上,有两个方面的问题和一些建议的解决方案 默认情况下,make使用的编译器
$ which clang
/usr/bin/clang
$ which gcc
/usr/bin/gcc
在macOS Catalina(以及之前的版本,也很可能是后续版本)上,有两个方面的问题和一些建议的解决方案
默认情况下,make
使用的编译器的名称是什么?
这表明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++
$ which cc c++
/usr/bin/cc
/usr/bin/c++
$
这是在macOS Mojave 10.14.6和XCode 11.3.1的机器上运行的。最新版本的XCode-11.4.1仅在Catalina上可用。但是,一般的结论是一样的——所有的C和C++编译器都是真的<代码> CLAN<代码> > >代码> CLAN++/CONT>伪装。
如何将GNU GCC安装到您的机器上?
你如何把一个真正的GNU GCC——一个真正的GCC,而不是伪装成叮当声——放到你的机器上
- 用于安装GCC(我没有检查GCC的当前版本)
- 或者使用(同样,我没有检查GCC的当前版本)
- 如果你喜欢冒险,那就自己动手吧(但我还没有在Catalina上成功构建GCC 9.3.0;我在macOS Mojave 10.14.x上构建了一个GCC 9.2.0,但它在Catalina上运行正常-需要一个环境变量来定位头文件)
- 也许-它列出了GCC 8.4将于2020年提供;我不知道更新的版本
/usr/include
-您不能修改文件系统的该部分以添加符号链接到它们隐藏的位置):
(你是说你猜不到?我也猜不到!)
如何更改默认编译器?
一旦在适当的地方安装了GCC,就需要确保在/usr/bin
中使用“真实”的GCC,而不是“虚假”的GCC。通过确保“真实”GCC的bin目录出现在/usr/bin
之前的路径上,部分实现了这一点。我在/opt/GCC/v9.3.0
下安装了GCC 9.3.0,因此/opt/GCC/v9.3.0/bin
在/usr/bin
之前很久就出现在我的路径上
您还需要确保riak
(正在安装的软件)的配置使用正确的编译器。如果有/configure
脚本,请使用为编译器指定的正确路径运行它。例如,我可以使用:
./configure CC=/opt/gcc/v9.3.0/bin/gcc CXX=/opt/gcc/v9.3.0/bin/g++
还可以将这些值设置为环境变量
如果它使用cmake
或其他一些配置包,则需要参考安装说明。通常是README
,有时是INSTALL
另见(越来越老的职位):
./configure CC=/opt/gcc/v9.3.0/bin/gcc CXX=/opt/gcc/v9.3.0/bin/g++