質問: macports gccselectエラーがi686を実行しようとしています-apple-darwin11-llvm-gcc-4.2 私はosx 10.7(lion)に取り組んでいます。 macportsからgcc4.7をインストールしました:sudo port install gcc47 正常に動作しているようです。$ /opt/local/bin/gcc-mp-4.7 -v (...) gcc version 4.7.0 (gcc) 今、私はポート選択を使用してデフォルトのコンパイラを変更しようとしています:$ sudo port select gcc mp-gcc47 selecting 'mp-gcc47' for 'gcc' succeeded. 'mp-gcc47' is now active. gccバイナリを/ opt/local/bin/gccにコピーします。これは正しく機能します。$ /opt/local/bin/gcc -v (...) gcc version 4.7.0 (gcc) また、デフォルトのgccを変更します。$ which gcc /opt/local/bin/gcc ただし、このデフォルトを実行しても機能しません。$ gcc -v gcc-mp-4.7: error trying to exec '/opt/local/bin/i686-apple-darwin11-llvm-gcc-4.2': execvp: no such file or directory このバイナリ「i686-apple-darwin11-llvm-gcc-4.2」は、appleが提供する元のgccバージョンです。なぜ/ opt/local/binでそれを調べようとするのか、あるいはなぜそれを実行しようとするのかさえわかりません。シンボリックリンクを作成すると、単にこのバイナリが呼び出されますが、これは私が望むものではありません。$ sudo ln -s /usr/bin/i686-apple-darwin11-llvm-gcc-4.2 /opt/local/bin $ gcc -v (...) gcc version 4.2.1 (based on apple inc. build 5658) (llvm build 2335.15.00) 「gcc」を呼び出すだけで、gccを正しく機能させるために、それを解決する方法は?私の知る限り、古いos xにはgcc_selectツールがありましたが、私のシステムにはありません。
回答: おそらく、bashがgccハッシュされているためです。実行$ hash どのコマンドがハッシュされているかを確認します。/usr/bin/gccがリストに表示されている場合は、$ hash gcc gccを再ハッシュします。その後、hashを実行すると/ opt/local/bin/gccが表示され、gccを実行するとmacportsバージョンが実行されます。もちろん選択した場合に限ります。/ b2s編集:zshユーザーの場合、$ rehashを実行して、ハッシュ全体を更新します。