问题链接g ++ - 4.8 Mac OSX 10.8

时间:2013-06-24 21:33:44

标签: macos gcc g++ homebrew symlink

我从自制软件中下载了gcc v4.8,这样我就可以将gcc和g ++更新为4.8而不是使用apple提供的4.2.1。

我使用以下命令安装了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++

2 个答案:

答案 0 :(得分:2)

尝试跑步:

$ hash

并检查gcc是否在列表中。如果是,您可能需要运行:

$ hash -r 

如果您使用bash或:

$ rehash

对于zsh。这会刷新散列,这为shell提供了一种方法,可以在不重新检查整个路径的情况下找到命令。

答案 1 :(得分:1)

在我看来,你的g ++符号链接指向错误的东西 尝试:

ls -l `which g++`

如果看起来没问题,看看目标是否也不是符号链接等等。

请注意,符号链接使用相对路径。如果您移动符号链接,它将不再指向相同的位置。

希望有所帮助。