我可以在MacOS X 10.11上使用指向实际gcc/g++的gcc/g++
Can I have gcc/g++ on MacOS X 10.11 pointing to the ACTUAL gcc/g++?
这真的很烦人。出于某种原因,在MacOS X 10.11上(可能也在以前的版本上)有gcc
和g++
命令(在/usr/bin
中,它们不是别名),当使用-v
参数执行时,会给出:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.2.0
Thread model: posix
所以看起来他们实际上是在执行苹果的clang和clang++编译器。现在,当我从终端和通过makefile调用这些命令时,我真的需要我的计算机来执行gcc和g++。
原因有二:
- 我喜欢让我的电脑做我要求它做的事
- 显然,clang++使用与g++不同的c++标准库编译东西,这给我在编译和链接我的东西与针对CppUnit的
g++-5
(通过自制软件安装的实际g++)时带来了问题
有人知道gcc
和g++
实际调用gcc和g++的最佳方式是什么吗?
在您的PATH中,在/usr/bin
之前,包含一个名为gcc
的指向/…/bin/gcc-5
的符号链接的目录。
据我所知,最新的Mac OS X不允许您更改/usr
,因此这种保守的解决方案是唯一可用的。
当我从终端和通过makefile调用这些命令时。
如果您在.profile
中调整PATH变量,这两种情况都将涵盖在内。
Apple实际上并没有提供gcc
或g++
,尽管(也许只是被误导了)他们制作别名来假装clang
是一样的。
您可以使用MacPorts安装gcc
和g++
(也可以使用自制软件)。我使用MacPorts,它将其可执行文件放在/opt/local/bin
中。
使用MacPorts,我可以看到这些当前可用的端口(必须编译才能在机器上工作的程序),使用命令
port list |grep gcc
gcc410 @5-20140817 lang/gcc410
gcc43 @4.3.6 lang/gcc43
gcc44 @4.4.7 lang/gcc44
gcc45 @4.5.4 lang/gcc45
gcc46 @4.6.4 lang/gcc46
gcc47 @4.7.4 lang/gcc47
gcc48 @4.8.5 lang/gcc48
gcc49 @4.9.3 lang/gcc49
gcc5 @5.2.0 lang/gcc5
gcc6 @6-20151129 lang/gcc6
gccxml-devel @20150423 lang/gccxml-devel
gcc_select @0.1 sysutils/gcc_select
gccmakedep @1.0.3 x11/gccmakedep
根据其网页,brew
也会做类似的事情,但会安装到/usr/local/bin
中。
当我安装MacPorts时,它的安装程序更新了我的~/.profile
,并将其添加到更新PATH
:
# MacPorts Installer addition on 2015-10-03_at_14:17:30: adding an appropriate PATH variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts.
来自MacPorts的这些端口中的每一个都安装了具有不同名称的gcc
,并且port
脚本具有建立符号链接的功能select
,例如从gcc
到gcc49
。CCD_ 28也有类似之处。根据How can I brew link a specific version?,你会使用
brew switch gcc-package-name package-version
例如,(猜测有效名称)
brew switch gcc 4.9
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 奇怪的结构&GCC&clang(void*返回类型)
- GCC本机矩阵运算库
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- gcc和c++17的过载解析失败
- 数据成员SFINAE的C++17测试:gcc vs clang
- GCC对可能有效的代码抛出init list生存期警告
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用gcc从静态链接的文件中查找可选符号
- 普通环路未使用gcc 4.8.5自动矢量化
- 有了gcc,是否可以链接库,但前提是它存在
- 在clang++预处理器中确定gcc工具链版本
- 为什么 gcc 编译这个而 msvc 没有
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何使用Clang/GCC在Mac上为C/C++设置VSCode
- 一位朋友将模板函数缩写为clang和gcc