我可以在 MacOS X 10.11 上让 gcc/g++ 指向 ACTUAL 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
所以看起来他们实际上执行了 apple 的 clang 和 clang++ 编译器。现在,当我从终端和通过 makefile 调用这些命令时,我真的需要我的计算机执行 gcc 和 g++。
原因有二:
- 我喜欢让我的电脑按照我的要求去做。
- 显然 clang++ 使用与 g++ 不同的 c++ 标准库编译东西,这导致我在编译和 link 我的东西时遇到问题
g++-5
(ACTUAL g++,通过自制软件安装)针对 CppUnit。
有人知道让 gcc
和 g++
实际调用 gcc 和 g++ 的最佳方法是什么吗?
在您的 PATH 中,在 /usr/bin
之前,包含一个名为 gcc
的符号 link 指向 /…/bin/gcc-5
.
的目录
最新的 Mac OS X 不让你改变 /usr
,据我所知,所以这个保守的解决方案是唯一可用的。
when I invoke those commands, both from the terminal and through makefiles.
如果您在 .profile
中调整 PATH 变量,这两种情况都会被涵盖。
Apple 实际上并没有提供 gcc
或 g++
,尽管(可能只是被误导了)他们使用别名来假装 clang
是相同的。
您可以 安装 gcc
和 g++
与 MacPorts (also with homebrew)。我使用 MacPorts,它将其可执行文件放在 /opt/local/bin
.
使用 MacPorts,我看到这些当前可用的 ports(必须编译才能在自己的机器上运行的程序),使用此命令
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
,它建立一个符号 link,例如,从 gcc
到 gcc49
。 brew
有类似的东西。根据 How can I brew link a specific version?,您将使用
brew switch gcc-package-name package-version
例如,(猜测有效名称)
brew switch gcc 4.9
这真的很烦人。出于某种原因,在 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
所以看起来他们实际上执行了 apple 的 clang 和 clang++ 编译器。现在,当我从终端和通过 makefile 调用这些命令时,我真的需要我的计算机执行 gcc 和 g++。
原因有二:
- 我喜欢让我的电脑按照我的要求去做。
- 显然 clang++ 使用与 g++ 不同的 c++ 标准库编译东西,这导致我在编译和 link 我的东西时遇到问题
g++-5
(ACTUAL g++,通过自制软件安装)针对 CppUnit。
有人知道让 gcc
和 g++
实际调用 gcc 和 g++ 的最佳方法是什么吗?
在您的 PATH 中,在 /usr/bin
之前,包含一个名为 gcc
的符号 link 指向 /…/bin/gcc-5
.
最新的 Mac OS X 不让你改变 /usr
,据我所知,所以这个保守的解决方案是唯一可用的。
when I invoke those commands, both from the terminal and through makefiles.
如果您在 .profile
中调整 PATH 变量,这两种情况都会被涵盖。
Apple 实际上并没有提供 gcc
或 g++
,尽管(可能只是被误导了)他们使用别名来假装 clang
是相同的。
您可以 安装 gcc
和 g++
与 MacPorts (also with homebrew)。我使用 MacPorts,它将其可执行文件放在 /opt/local/bin
.
使用 MacPorts,我看到这些当前可用的 ports(必须编译才能在自己的机器上运行的程序),使用此命令
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
,它建立一个符号 link,例如,从 gcc
到 gcc49
。 brew
有类似的东西。根据 How can I brew link a specific version?,您将使用
brew switch gcc-package-name package-version
例如,(猜测有效名称)
brew switch gcc 4.9