0

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 リンクがあります。$ ls -la /usr/bin を実行すると、/usr/bin に gcc が表示されます

また、実行すると正しいシンボリックリンクも表示されます

$ 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 で持っていた現在のシンボリック リンクを単純に削除し、新しいシンボリック リンクを作成しました。私が本当にほとんど何もしなかったことを考えると、私は何を間違えましたか?

ありがとうございました。

4

1 に答える 1

1

シンボリック リンクを作成するための構文が正しくlnありません。最初の引数 to は、リンクが指す場所です

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それともコマンドのターゲットですか?)。マニュアルページは後でこれを明確にします:

1 つまたは 2 つの引数を指定すると、ln は既存のファイル source_file へのリンクを作成します。target_file が指定されている場合、リンクにはその名前が付けられます。target_file は、リンクを配置するディレクトリの場合もあります。それ以外の場合は、現在のディレクトリに配置されます。ディレクトリのみが指定されている場合、リンクは source_file の最後のコンポーネントに作成されます。

于 2013-05-24T18:29:26.673 に答える