1

Apple から提供された 4.2.1 を使用する代わりに、gcc と g++ を 4.8 に更新できるように、homebrew から gcc v4.8 をダウンロードしました。

次のコマンドで gcc48 をインストールしました。

$brew install gcc48 --enable-all-languages

これにより、必要なすべての依存関係がインストールされ、実行すると、

$gcc-4.8 -v

私は得る:


Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc48/4.8.1/gcc/libexec/gcc/x86_64-apple-darwin12.4.0/4.8.1/lto-wrapper
Target: x86_64-apple-darwin12.4.0
Configured with: ../configure --build=x86_64-apple-darwin12.4.0 --prefix=/usr/local/Cellar/gcc48/4.8.1/gcc --datarootdir=/usr/local/Cellar/gcc48/4.8.1/share --bindir=/usr/local/Cellar/gcc48/4.8.1/bin --enable-languages=c,c++,fortran,java,objc,obj-c++ --program-suffix=-4.8 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-cloog=/usr/local/opt/cloog --with-isl=/usr/local/opt/isl --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-plugin --enable-lto --disable-werror --disable-nls --with-ecj-jar=/usr/local/opt/ecj/share/java/ecj.jar --disable-multilib
Thread model: posix
gcc version 4.8.1 (GCC) 

を使用してシンボリックリンクを作成しました

$ln -s gcc-4.8 gcc

/usr/local/bin フォルダーにいる間、シンボリックリンクを作成し、

$gcc -v

次と同じ出力が得られます。

$gcc-4.8 -v

g++-4.8 で同じことを試してみたところ、シンボリック リンクが作成されました。

$ln -s g++-4.8 g++

エラーはありませんでした。しかし今、私がするとき

$g++ -v

私は得る:

g++-4.8: error trying to exec '/usr/local/bin/../Cellar/gcc48/4.8.1/bin/i686-apple-darwin11-llvm-g++-4.2': execvp: No such file or directory

ここに私の $PATH があります:

/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.3/bin:/Developer/Intel/ispc-v1.3.0-osx:/Developer/NVIDIA/CUDA-5.0/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin

何らかの理由で 4.2 を探しているようですが、その理由がわかりません! gcc では問題なく動作しましたが、g++ の何が問題なのかよくわかりません。

which g++

戻り値

/usr/local/bin/g++
4

2 に答える 2

2

実行してみてください:

$ hash

そして、gcc がリストにあるかどうかを確認します。その場合は、次を実行する必要があります。

$ hash -r 

bash または:

$ rehash

zsh用。これによりハッシュが更新され、毎回パス全体を再チェックすることなく、シェルがコマンドを見つける方法が提供されます。

于 2013-10-09T05:51:56.010 に答える
1

g++ シンボリック リンクが間違ったものを指しているように見えます。
試す:

ls -l `which g++`

そして、それが問題ないように見える場合は、ターゲットがシンボリックリンクではないかどうかなどを確認してください.

シンボル リンクは相対パスを使用することに注意してください。シンボリック リンクを移動すると、同じ場所を指しなくなります。

それが役立つことを願っています。

于 2013-06-26T00:48:31.550 に答える