Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何确保我的默认C/C++;编译器是GCC_C++_Macos_Gcc_Clang_Riak - Fatal编程技术网

C++ 如何确保我的默认C/C++;编译器是GCC

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使用的编译器

我正在尝试从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
使用的编译器的名称是什么? 这表明
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


另见(越来越老的职位):


如果安装了make文件,我认为它足够聪明,可以选择正确的编译器。在任何情况下,为什么不试试看它是否有效?请检查此链接:这是否回答了您的问题?
./configure CC=/opt/gcc/v9.3.0/bin/gcc CXX=/opt/gcc/v9.3.0/bin/g++