2011-09-07 103 views
4

对于这种开发很新颖。想知道是否有人能指出我正确的方向。据我可以看到,使用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 build 2335.15.00)。我需要4.6.1版本!Mac OS X Lion上的GNU GCC 4.6(.1)编译器

+1

哪位gcc?我不认为你已经使用了你编译的gcc。尝试指定完整路径。 –

+1

Dyno Fu可能是对的。做一个'哪个gcc'来看你实际使用哪一个。 –

+0

您是否已将GCC配置为在自定义位置安装?覆盖系统的GCC通常是一个坏主意(显然你没有)。如果您已将其配置为使用自定义安装位置,请查看该位置(例如/ opt/bin或/ usr/local/bin)是否包含'gcc'。 – 2011-09-07 05:08:15

回答

3

有三种可能的可能性:

  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,则您需要通过其全名执行gcc(例如/opt/local/bin/gcc),或者修改您的$PATH以使包含新gcc的目录早于现有gcc的目录。假设您正常安装了MacPorts,那么应该已经为您完成了 - 通过修改您的~/.bash_profile启动文件,MacPorts将/opt/local/bin放在$PATH之前,而不是/usr/bin

如果#3,那么找出可执行文件的名称。几乎可以肯定的是一个以gcc为前缀的名字,所以如果你输入gcc然后再按Tab键两次,Bash会给你一个以gcc开头的所有命令的列表。很有可能它被命名为likw gcc-4.6gcc-mp-4.6

+0

我建议在'/ usr/local'中安装一个自定义的gcc(通过给'。/ configure'配置'--prefix =/usr/local')并检查你的'$ PATH'来确保'/ usr/local/bin'在'/ usr/bin'之前。另外,为了显示你的shell可以看到的所有gccs,使用命令'type -a gcc',它将显示所有名为'gcc'的命令的路径。如果没有'-a'选项,它会向你显示如果你在命令行输入'gcc'就会执行的那个选项。 –

+0

好的,谢谢你们俩的帮助。我跑了类型-a gcc并找到了2个版本。我想使用/ usr/local/bin/gcc中的第二个。当我执行/ usr/local/bin/gcc -v时,它显示为4.6.1。我怎样才能修改我的$ PATH文件使其默认为第一个? –

+0

其实,我修改了$ PATH文件,它看起来像这样'在/ usr/local/bin目录 在/ usr/bin中 /bin中 /usr/sbin目录 /sbin' 但是当我做GCC --version我仍然有4.2.1 –