如何使用安装在 macports 中的 gcc?

Posted

技术标签:

【中文标题】如何使用安装在 macports 中的 gcc?【英文标题】:How to use the gcc installed in macports? 【发布时间】:2012-01-11 18:11:58 【问题描述】:

我安装了 gcc 4.6。来自 macports(用于支持 C++0x)。但是当我检查“gcc --version”时,它显示的是旧版本。 macports安装的较新的gcc如何使用?

【问题讨论】:

Update GCC on OSX 的可能重复项 另请参阅 MacPorts wiki 上的 Using the Right Compiler。 【参考方案1】:

您可以使用port select 控制/opt/local/bin/gcc 中的符号链接。您可以使用port select --list gcc 查看可用版本。以 mp- 作为前缀列出的任何内容都是指 MacPorts 自己的端口,gcc42 和 llvm-gcc42 指的是 Apple 随 Xcode 一起提供的编译器。

我的系统示例:

$ port select --list gcc
Available versions for gcc:
    gcc42
    llvm-gcc42
    mp-gcc45
    none (active)
$ sudo port select --set gcc mp-gcc45
Password:
Selecting 'mp-gcc45' for 'gcc' succeeded. 'mp-gcc45' is now active.

之后,打开一个新的终端窗口或发出 hash -r 以使 bash 识别更改。

【讨论】:

我已经这样做了,当我输入 port select --list gcc 时,它说 mp-gcc47 处于活动状态。但是,当我执行gcc --version 时,它仍然说它使用的是4.2 版...我尝试打开一个新终端并输入hash -r。知道为什么吗? 检查您的 PATH,可能在 /opt/local/bin 之前还有其他 gcc(或符号链接)。也可能是你的 shell 中的一些别名或函数。尝试 'type -a gcc' 来查看 bash 用于查找的内容。 当我执行type -a gcc 时,我得到两行:“gcc is /usr/bin/gcc gcc is /opt/local/bin/gcc”。当我打印我的 PATH 时,我得到 ".:/opt/local/var/macports:/usr/local/bin:/sw/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr /local/hallamsoft:/opt/local/bin:/usr/local/git/bin:/usr/texbin:/usr/X11/bin"。抱歉,我不完全确定这两个是什么意思,但我确实将 Macports 放在了我的道路上。 抱歉,您肯定没有将 MacPorts 放在首位。仔细观察路径,前面有 /opt/local/var/macports,但实际上不包含任何二进制文件。 /opt/local/bin 在列表的后面,在 /usr/bin 之后。这就是为什么 bash 从那里拿起 gcc 的原因。 (另外你不应该在你的 PATH 中列出“.”,这样做是一个有害的漏洞)。【参考方案2】:

我记得它类似于g++-mp-4.6。我相信将环境变量 CXX 设置为就足够了。

【讨论】:

那行得通。有没有办法默认使用它,这样我就不必更改所有的 make 文件。 为什么这被接受为最佳答案,而 Raim 的答案是正确的?【参考方案3】:

只要确保 macports 的路径在您的 $PATH 中排在第一位即可。或者使用gcc-mp-4.6 或类似的东西。

【讨论】:

@jli,来自/usr/bin的那个?听起来不是个好主意:) @MichaelKrelin-hacker 您仍然需要如上所述设置活动 gcc。 这是我的问题,也是这个问题的一个很好的答案。我已经使用了端口选择,当 gcc --version 总是报告旧版本时,我感到很困惑。这完全是一个 $PATH 问题。

以上是关于如何使用安装在 macports 中的 gcc?的主要内容,如果未能解决你的问题,请参考以下文章

使用安装了 GCC 4.9 的 MacPorts 调试符号错误?

如何在 MacPorts gcc 4.5 中调试 C++0x 程序?

如何在 Mac 上安装 GCC

GDB 错误消息 (GCC 4.7) (来自 macports)

在不安装 Xcode 的情况下将 GCC 安装到 Mac OS X Leopard

macports安装后如何启动spyder