猜测:例如,
/usr/bin/
目录下有3个
gcc
,分别是
gcc
、
gcc-7
和
gcc-10
,三者都是软链接。意思是当前系统中有
gcc
的版本为7和10两种可以指定给
gcc
默认使用的版本,指定的方式就是把
gcc
的软链接指向
gcc-7
或
gcc-10
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
gcc -v gcc-10 -v ls /usr/bin/gcc* ll /usr/bin/gcc* g++ -v g++-10 -v ls /usr/bin/g++* ll /usr/bin/g++*
命令行安装
1 2 3
sudo apt update sudo apt upgrade sudo apt install build-essential
安装gcc、g++
1 2 3 4 5 6
sudo apt-get install gcc sudo apt-get install gcc-4.8 sudo apt-get install g++ sudo apt-get install g++-4.8
如果终端提示找不到:
1 2 3 4 5 6 7 8
apt-cache policy gcc-5 sudo apt-get install gcc-5=5.5.0-12ubuntu1 apt-cache policy g++-5 sudo apt-get install g++-5=5.5.0-12ubuntu1
安装依赖:
1 2 3 4
sudo apt update sudo apt upgrade sudo apt install build-essential sudo apt install gcc g++
下载指定版本的源码,例如:
http://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
1 2
cd yourdownload/ tar -xzvf gcc-7.5.0.tar.gz
下载依赖:
gcc-7.5.0
根目录下的
README
文档提示在
./INSTALL/index.html
下提供了详细的安装教程。
1 2
cd gcc-7.5.0 ./contrib/download_prerequisites
如果下载失败,可以离线下载,具体需要下载的依赖可以查看
download_prerequisites
脚本。下载完成后,将文件放在
gcc-9.2.0
根目录下。
编译安装:
1 2 3 4
mkdir buildcd build ./configure -h ../configure --enable-languages=c,c++ --disable-multilib --enable-checking=release
By default,
make install
will install all the files in
usr/local/bin/
,
usr/local/lib
etc. You can specify an installation prefix other than
/usr/local
using
--prefix
for instance
--prefix=$HOME
.
1 2 3 4
sudo make -j8 sudo make install
修改软链接:
1 2 3 4 5 6 7 8 9 10 11 12
sudo rm /usr/bin/gcc sudo rm /usr/bin/g++ sudo rm /usr/bin/gcc-ar sudo rm /usr/bin/gcc-nm sudo rm /usr/bin/gcc-ranlib sudo ln -s /usr/local/bin/gcc /usr/bin/gcc sudo ln -s /usr/local/bin/gcc-ar /usr/bin/gcc-ar sudo ln -s /usr/local/bin/gcc-nm /usr/bin/gcc-nm sudo ln -s /usr/local/bin/gcc-ranlib /usr/bin/gcc-ranlib sudo ln -s /usr/local/bin/g++ /usr/bin/g++
也可以不用修改软链接,而是直接在
.bashrc
里指定环境变量?
例如,当编译命令为:
1
../configure --disable-checking --enable-languages=c,c++ --disable-multilib --prefix=/home/xxx/gcc-5.5.0 --enable-threads=posix
时,在
~/.bashrc
文件内添加语句:
1 2 3
export PATH=$PATH :/home/xxx/gcc-5.5.0/bin:/home/ronglei/gcc-5.5.0/lib64export LD_LIBRARY_PATH=$LD_LIBRARY_PATH :/home/xxx/gcc-5.5.0/lib/
查看版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.5.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure -enable-languages=c,c++ -disable-multilib -enable-checking=release Thread model: posix gcc version 7.5.0 (GCC) $ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.5.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure -enable-languages=c,c++ -disable-multilib -enable-checking=release Thread model: posix gcc version 7.5.0 (GCC)
对应使用命令行安装的方法
在安装好多个版本后,使用
update-alternatives
命令为每个 GCC 版本设置优先级。Ubuntu 系统会默认使用优先级最高的版本,如果有需要,可以随时更改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 sudo update-alternatives --config gcc sudo update-alternatives --remove gcc /usr/bin/gcc-4.8 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 50 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100 sudo update-alternatives --config g++ sudo update-alternatives --remove g++ /usr/bin/g++-4.8
当切换使用了其他版本的gcc时,请务必保持g
的版本和gcc版本的一致性,否则用cmake配置出来的项目遇到c
代码还是会用之前版本的gcc。
在配置完优先级之后,通过查询当前gcc、g++版本的方式来验证所期望的版本是否已成为默认版本。
1 2 3
sudo update-alternatives --display gcc sudo update-alternatives --display g++
对应使用源码编译的方法
同
源码编译
的第6步相同,修改软链接即可。
【Linux 基础】gcc、g++多版本间的切换
如何在 Ubuntu 中安装和切换多版本 GCC 编译器
Ubuntu高版本如何安装低版本GCC (以Ubuntu 20安装GCC5为例)
Linux纯命令行以源码编译安装gcc(2024年2月5日)
linux gcc-9.2.0 源码编译
ubuntu系统以源码方式安装gcc