我需要使用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的当前符号链接,并创建了一个新的符号链接。考虑到我真的做得很少,我做错了什么?
谢谢。
答案 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的最后一个组件。