如何使用安装在 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 程序?
GDB 错误消息 (GCC 4.7) (来自 macports)