gcc、g++的安装与版本管理
本文最后更新于 2024年12月19日 晚上
本文主要分享了在Linux下gcc、g++库的安装与版本管理。
查看版本
猜测:例如,
/usr/bin/
目录下有3个gcc
,分别是gcc
、gcc-7
和gcc-10
,三者都是软链接。意思是当前系统中有gcc
的版本为7和10两种可以指定给gcc
默认使用的版本,指定的方式就是把gcc
的软链接指向gcc-7
或gcc-10
。
1 |
|
安装
命令行安装
安装依赖
1 |
|
安装gcc、g++
1 |
|
如果终端提示找不到:
1 |
|
源码编译
-
安装依赖:
1
2
3
4sudo apt update
sudo apt upgrade
sudo apt install build-essential
sudo apt install gcc g++ # 系统一个gcc和g++也没有的话可能会报错? -
下载指定版本的源码,例如:http://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
-
解压:
1
2cd yourdownload/
tar -xzvf gcc-7.5.0.tar.gz -
下载依赖:
gcc-7.5.0
根目录下的README
文档提示在./INSTALL/index.html
下提供了详细的安装教程。1
2cd gcc-7.5.0
./contrib/download_prerequisites如果下载失败,可以离线下载,具体需要下载的依赖可以查看
download_prerequisites
脚本。下载完成后,将文件放在gcc-9.2.0
根目录下。 -
编译安装:
1
2
3
4mkdir build
cd build
./configure -h # 可以查看详细的配置帮助
../configure --enable-languages=c,c++ --disable-multilib --enable-checking=release # 如果要编译多个gcc版本后面做版本管理,建议添加--prefix参数来指定安装路径(而不是使用默认路径),例如:--prefix=/usr/local/gcc/gcc750By default,
make install
will install all the files inusr/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
4sudo make -j8 # 可以使用nproc来查看CPU核心数。编译的时间蛮长的,耐心等待。
sudo make install
# Libraries have been installed in:
# /usr/local/lib/../lib64 -
修改软链接:
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# .bashrc
export PATH=$PATH:/home/xxx/gcc-5.5.0/bin:/home/ronglei/gcc-5.5.0/lib64
export 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 |
|
当切换使用了其他版本的gcc时,请务必保持g的版本和gcc版本的一致性,否则用cmake配置出来的项目遇到c代码还是会用之前版本的gcc。
在配置完优先级之后,通过查询当前gcc、g++版本的方式来验证所期望的版本是否已成为默认版本。
1 |
|
对应使用源码编译的方法
同源码编译的第6步相同,修改软链接即可。
参考链接
Ubuntu高版本如何安装低版本GCC (以Ubuntu 20安装GCC5为例)