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

Macos 问题链接g++-4.8 Mac OSX 10.8,macos,gcc,g++,homebrew,symlink,Macos,Gcc,G++,Homebrew,Symlink,我从自制软件中下载了gcc v4.8,以便将gcc和g++更新为4.8,而不是使用苹果提供的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 v4.8,以便将gcc和g++更新为4.8,而不是使用苹果提供的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) 
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
我使用

$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
我得到:


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) 
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++

在我看来,您的g++符号链接指向了错误的对象。
尝试:

如果看起来还可以,看看目标是否也不是符号链接,等等

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

希望有帮助。

试试跑步:

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

$ hash -r 
如果使用bash或:

$ rehash

对于zsh。这将刷新散列,它为shell提供了一种查找命令的方法,而无需每次重新检查整个路径。

我尝试了
ls-l
哪个g++
,这给了我以下信息:
lrwxr-xr-x1 root wheel 4月16日10:54/usr/bin/g++->llvm-g++-4.2
,它也是一个符号链接。但这不是默认的吗?是的。。。这是有道理的。但正如您从上面的path变量中看到的,我在/usr/local/bin之前有/usr/bin。那么这不应该覆盖吗?现在还没有。当我在
/usr/local/bin
为g++创建一个符号链接时,我得到了上面提到的错误。我很抱歉。我删除了符号链接,因为它导致了问题。当我重新创建一个符号链接并运行
g++-v
时,我得到了相同的错误:
g++-4.8:尝试执行'/usr/local/bin/./cillar/gcc48/4.8.1/bin/i686-apple-darwin11-llvm-g++-4.2'时出错:
g++-4.8