【问题标题】:GNU GCC 4.6(.1) compiler on Mac OS X LionMac OS X Lion 上的 GNU GCC 4.6(.1) 编译器
【发布时间】:2011-11-11 20:13:25
【问题描述】:

对这种发展来说还很陌生。想知道是否有人可以指出我正确的方向。据我所知,使用 MacPorts 有一个错误,它不起作用。然而,我正在阅读并看到这个:http://beardedcodewarrior.net/2011/07/25/building-gcc-4-6-1-on-mac-os-x-lion/ 但仍然无法让它工作。当我为 gcc 执行 make 时,需要 3 个多小时才能完成,然后执行 sudo make install 后,它成功完成,但是当我尝试 gcc --version 时,它仍然显示 gcc 版本 4.2.1(基于 Apple Inc. build 5658)(LLVM 内部版本 2335.15.00)。我需要4.6.1版本!

【问题讨论】:

  • 哪个 gcc?我认为您没有使用过您编译的 gcc。尝试指定完整路径。
  • Dyno Fu 可能是对的。发送which gcc 以查看您实际使用的是哪一个。
  • 您是否已将 GCC 配置为安装在自定义位置?覆盖系统的 GCC(显然你没有)通常是个坏主意。如果您已将其配置为使用自定义安装位置,请查看该位置(例如 /opt/bin 或 /usr/local/bin)是否包含 gcc
  • 由于 Mac OS X 默认使用 bash 而不是 tcshcsh,我会强烈推荐 bash 内置命令 type而不是whichwhich 命令使用csh 设置(例如.cshrc 文件)而不是bash 设置(例如.bashrc)来设置其搜索路径。使用help type 查看所有选项。

标签: c++ macos gcc gnu osx-lion


【解决方案1】:

有三种可能:

  1. 它安装正确,并进入了您的 $PATH 中比您之前的 GCC 安装更早的目录,但 Bash 的内部哈希表条目仍指向旧的 GCC。
  2. 它安装正确,但进入 $PATH 中的目录比之前的 GCC 安装晚。
  3. 安装正确,但可执行文件未命名为gcc

如果 #1,只需运行命令 hash -r 并重试。为了避免频繁的$PATH 查找,Bash 使用哈希表将可执行文件名称映射到可执行文件位置。当您在$PATH 中较早地安装一个与$PATH 中的一个名称相同的新可执行文件时,Bash 不知道它。运行hash -r 表示“清除您的哈希表”。或者,您可以运行 hash -d gcc 说“忘记哈希表中的 gcc”。

如果是#2,那么您要么需要按其全名(例如/opt/local/bin/gcc)执行 gcc,要么修改您的 $PATH 以使包含新 gcc 的目录早于现有 gcc 的目录。假设您正常安装了 MacPorts,这应该已经为您完成了 - MacPorts 通过修改您的 ~/.bash_profile 启动文件将 /opt/local/bin 放在您的 $PATH 中,而不是 /usr/bin

如果是#3,那么找出可执行文件的名称。几乎可以肯定它的名称以 gcc 为前缀,因此如果您键入 gcc 然后按两次 tab 键,Bash 将为您提供所有以 gcc 开头的命令的列表。它很可能被命名为 gcc-4.6gcc-mp-4.6

【讨论】:

  • 我建议在/usr/local 中安装一个自定义gcc(通过将--prefix=/usr/local 标志给./configure)并检查您的$PATH 以确保/usr/local/bin 出现在/usr/bin 之前.此外,要显示 all 您的 shell 可以看到的 gcc,请使用命令 type -a gcc,它将显示所有名为 gcc 的命令的路径。如果没有 -a 选项,它将只显示如果您在命令行上键入 gcc 将执行的选项。
  • 好的,谢谢你们到目前为止的帮助。我运行 type -a gcc 并找到了 2 个版本。我想使用 /usr/local/bin/gcc 中的第二个。当我执行 /usr/local/bin/gcc -v 时,它显示为 4.6.1。如何修改我的 $PATH 文件以使其默认为第一个?
  • 实际上,我修改了我的 $PATH 文件,它看起来像这样 /usr/local/bin /usr/bin /bin /usr/sbin /sbin 但是当我执行 GCC --version 时,我仍然有 4.2.1
  • @Bert:which gcc 的输出是什么?你跑过hash -r吗?
  • 哈,你看看那个。一小时后我回到我的电脑前,现在它可以工作了。我什至跑了hash -r 很多次都无济于事。诡异的。感谢您和其他评论者的建议,它现在适用于 4.6.1!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 2014-02-18
  • 1970-01-01
相关资源
最近更新 更多