在Mac OS X 10.7上更改C和C ++编译器

时间:2013-05-24 18:16:11

标签: macos gcc

我需要使用OpenMP和Xcode命令行工具附带gcc版本4.2.something所以我想升级到gcc版本4.8。我安装了gcc4.8。我这样做了 -

$ sudo rm /usr/bin/gcc /usr/bin/g++
$ sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.8

g ++的类似链接现在有一个在/ usr / bin中创建的gcc链接。我可以在/ usr / bin中看到gcc     $ ls -la / usr / bin

我可以在

时看到正确的符号链接
$ ls -la /usr/bin | grep gcc

它指向gcc-4.8。

但是,系统只是忽略了gcc。就好像它不存在那样。 / usr / bin在我的PATH变量中。但是,gcc [tab complete]不显示。

$ gcc
-bash: gcc: command not found

编译任何C程序现在使用位于/ usr / bin / cc中的cc。我不明白。我只是删除了gcc与xcode CLTools的当前符号链接,并创建了一个新的符号链接。考虑到我真的做得很少,我做错了什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

创建符号链接的语法不正确:ln的第一个参数是您希望链接指向的位置。

sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc

来自ln的手册页:

SYNOPSIS
     ln [-Ffhinsv] source_file [target_file]
     ln [-Ffhinsv] source_file ... target_dir

这有点令人困惑,因为“源”和“目标”可以解释为任何一种方式(即target_file是链接的目标还是ln命令的目标?)。该手册页后来澄清了这一点:

  

给定一个或两个参数,ln创建一个指向现有文件source_file的链接。如果给出了target_file,则该链接具有该名称;        target_file也可以是放置链接的目录;否则它将被放置在当前目录中。如果只有        指定了目录,链接将被发送到source_file的最后一个组件。