C++ macOS上的gcc是从/opt/local而不是/usr/bin运行的

C++ macOS上的gcc是从/opt/local而不是/usr/bin运行的,c++,macos,gcc,C++,Macos,Gcc,我试图使用brew升级我的gcc版本,并使用以下方法将新版本文件复制到usr/bin: sudo ln -s /usr/local/Cellar/gcc/9.3.0/bin/c++-9 /usr/bin/c++ sudo ln -s /usr/local/Cellar/gcc/9.3.0/bin/g++-9 /usr/bin/g++ sudo ln -s /usr/local/Cellar/gcc/9.3.0/bin/gcc-9 /usr/bin/gcc sudo ln -s /usr/

我试图使用brew升级我的gcc版本,并使用以下方法将新版本文件复制到usr/bin:

sudo ln -s  /usr/local/Cellar/gcc/9.3.0/bin/c++-9 /usr/bin/c++
sudo ln -s  /usr/local/Cellar/gcc/9.3.0/bin/g++-9 /usr/bin/g++
sudo ln -s  /usr/local/Cellar/gcc/9.3.0/bin/gcc-9 /usr/bin/gcc
sudo ln -s  /usr/local/Cellar/gcc/9.3.0/bin/gcc-9 /usr/bin/cc
然后我将路径添加到.bash_概要文件,如下所示

PATH="/usr/local/Cellar/gcc/9.3.0/bin:/usr/local/Cellar/gcc/9.3.0/lib:${PATH}"
export PATH
完成所有这些之后,我运行了gcc-v,版本没有变化,我发现它给我的gcc来自/opt/local,而不是usr/bin。你知道这种情况吗? 下面的终端是计算机给我的gcc-v

COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/local/libexec/gcc/x86_64-apple-darwin16/5.4.0/lto-wrapper
Target: x86_64-apple-darwin16
Configured with: /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc5/gcc5/work/gcc-5.4.0/configure --prefix=/opt/local --build=x86_64-apple-darwin16 --enable-languages=c,c++,objc,obj-c++,lto,fortran,java --libdir=/opt/local/lib/gcc5 --includedir=/opt/local/include/gcc5 --infodir=/opt/local/share/info --mandir=/opt/local/share/man --datarootdir=/opt/local/share/gcc-5 --with-local-prefix=/opt/local --with-system-zlib --disable-nls --program-suffix=-mp-5 --with-gxx-include-dir=/opt/local/include/gcc5/c++/ --with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local --with-isl=/opt/local --enable-stage1-checking --disable-multilib --enable-lto --enable-libstdcxx-time --with-build-config=bootstrap-debug --with-as=/opt/local/bin/as --with-ld=/opt/local/bin/ld --with-ar=/opt/local/bin/ar --with-bugurl=https://trac.macports.org/newticket --with-pkgversion='MacPorts gcc5 5.4.0_0'
Thread model: posix
gcc version 5.4.0 (MacPorts gcc5 5.4.0_0) 

按顺序搜索路径。第一场比赛获胜。这与GCC无关。谢谢您的提醒!那么是否可以在opt/local中删除gcc相关文件?@JesperJuhl“是否可以在opt/local中删除gcc相关文件?”-当然可以。可以删除计算机上的任何文件。这是个好主意吗?这是一个完全不同的问题,我不想谈论这个问题。但是,如果您希望您的自定义GCC成为首选,只需将其安装位置放在路径的第一位。既然您已经经历了将simlinks添加到usr/bin的麻烦,为什么要将完整路径添加到路径?另外,在运行“gcc-v”之前,您是否重新加载了终端或“source~/.bash_profile”?修改
/usr/bin
实际上是一个糟糕的做法,通常是一个坏主意。当升级/运行/安装任何东西时,您的操作系统供应商/供应商几乎肯定会在那里找到其工具的特定版本。此外,您的操作系统供应商肯定会觉得完全有权删除/覆盖或替换其中的任何内容。你在自找麻烦。如果您想在本地修改或自定义系统范围的二进制文件,那么可以在
/usr/local/bin
进行修改。YMMV但那是我的建议。路径是按顺序搜索的。第一场比赛获胜。这与GCC无关。谢谢您的提醒!那么是否可以在opt/local中删除gcc相关文件?@JesperJuhl“是否可以在opt/local中删除gcc相关文件?”-当然可以。可以删除计算机上的任何文件。这是个好主意吗?这是一个完全不同的问题,我不想谈论这个问题。但是,如果您希望您的自定义GCC成为首选,只需将其安装位置放在路径的第一位。既然您已经经历了将simlinks添加到usr/bin的麻烦,为什么要将完整路径添加到路径?另外,在运行“gcc-v”之前,您是否重新加载了终端或“source~/.bash_profile”?修改
/usr/bin
实际上是一个糟糕的做法,通常是一个坏主意。当升级/运行/安装任何东西时,您的操作系统供应商/供应商几乎肯定会在那里找到其工具的特定版本。此外,您的操作系统供应商肯定会觉得完全有权删除/覆盖或替换其中的任何内容。你在自找麻烦。如果您想在本地修改或自定义系统范围的二进制文件,那么可以在
/usr/local/bin
进行修改。但那将是我的建议。