1 添加软件源
Plain
sudo gedit /ect/apt/source.list
在末尾添加以下内容
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
2 安装公钥
由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
Shell
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
3 安装 gcc-5 g+±5
Shell
sudo apt-get install gcc-5 g++-5 -y
4 更换优先级
因为安装了多个gcc , 系统默认使用的与想使用的不一致, 就需要指定他们的优先级
Shell
# 查看gcc 版本
ls /usr/bin/gcc*
# 指定优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
# 选择版本版本
sudo update-alternatives --config gcc
# 用相同的方法更换g++版本
Shell
xiaole@ubt:~$ ls /usr/bin/gcc*
/usr/bin/gcc /usr/bin/gcc-9 /usr/bin/gcc-ar-5 /usr/bin/gcc-nm /usr/bin/gcc-nm-9 /usr/bin/gcc-ranlib-5
/usr/bin/gcc-5 /usr/bin/gcc-ar /usr/bin/gcc-ar-9 /usr/bin/gcc-nm-5 /usr/bin/gcc-ranlib /usr/bin/gcc-ranlib-9
xiaole@ubt:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50
update-alternatives: 使用 /usr/bin/gcc-9 来在自动模式中提供 /usr/bin/gcc (gcc)
xiaole@ubt:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
xiaole@ubt:~$ sudo update-alternatives --config gcc
有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/gcc-9 50 自动模式
1 /usr/bin/gcc-5 50 手动模式
2 /usr/bin/gcc-9 50 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:1
update-alternatives: 使用 /usr/bin/gcc-5 来在手动模式中提供 /usr/bin/gcc (gcc)
xiaole@ubt:~$
xiaole@ubt:~$ ls /usr/bin/g++*
/usr/bin/g++ /usr/bin/g++-5 /usr/bin/g++-9
xiaole@ubt:~$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 50
update-alternatives: 使用 /usr/bin/g++-9 来在自动模式中提供 /usr/bin/g++ (g++)
xiaole@ubt:~$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
xiaole@ubt:~$ sudo update-alternatives --config g++
有 2 个候选项可用于替换 g++ (提供 /usr/bin/g++)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/g++-9 50 自动模式
1 /usr/bin/g++-5 50 手动模式
2 /usr/bin/g++-9 50 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:1
update-alternatives: 使用 /usr/bin/g++-5 来在手动模式中提供 /usr/bin/g++ (g++)
xiaole@ubt:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.12' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
5 软件安装终端记录
Shell
xiaole@ubt:~$ sudo apt-get update
获取:1 http://mirrors.aliyun.com/ubuntu xenial InRelease [247 kB]
命中:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease
命中:3 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates InRelease
获取:4 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease [99.8 kB]
命中:5 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-backports InRelease
错误:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
命中:6 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-security InRelease
获取:7 http://mirrors.aliyun.com/ubuntu xenial-security InRelease [99.8 kB]
错误:4 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
错误:7 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
正在读取软件包列表... 完成
W: GPG 错误:http://mirrors.aliyun.com/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
E: 仓库 "http://mirrors.aliyun.com/ubuntu xenial InRelease" 没有数字签名。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
W: GPG 错误:http://mirrors.aliyun.com/ubuntu xenial-updates InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
E: 仓库 "http://mirrors.aliyun.com/ubuntu xenial-updates InRelease" 没有数字签名。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
W: GPG 错误:http://mirrors.aliyun.com/ubuntu xenial-security InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
E: 仓库 "http://mirrors.aliyun.com/ubuntu xenial-security InRelease" 没有数字签名。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
xiaole@ubt:~$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
Executing: /tmp/apt-key-gpghome.RftvAUahZx/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
gpg: 密钥 3B4FE6ACC0B21F32:公钥 "Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>" 已导入
gpg: 处理的总数:1
gpg: 已导入:1
xiaole@ubt:~$ sudo apt-get update
获取:1 http://mirrors.aliyun.com/ubuntu xenial InRelease [247 kB]
获取:2 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease [99.8 kB]
获取:3 http://mirrors.aliyun.com/ubuntu xenial-security InRelease [99.8 kB]
命中:4 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease
命中:5 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates InRelease
命中:6 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-backports InRelease
命中:7 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-security InRelease
获取:8 http://mirrors.aliyun.com/ubuntu xenial/main Sources [868 kB]
获取:9 http://mirrors.aliyun.com/ubuntu xenial/universe Sources [7,728 kB]
获取:10 http://mirrors.aliyun.com/ubuntu xenial/main i386 Packages [1,196 kB]
获取:11 http://mirrors.aliyun.com/ubuntu xenial/main amd64 Packages [1,201 kB]
获取:12 http://mirrors.aliyun.com/ubuntu xenial/main Translation-en [568 kB]
获取:13 http://mirrors.aliyun.com/ubuntu xenial/main Translation-zh_CN [74.8 kB]
获取:14 http://mirrors.aliyun.com/ubuntu xenial/main amd64 DEP-11 Metadata [733 kB]
获取:15 http://mirrors.aliyun.com/ubuntu xenial/main DEP-11 64x64 Icons [409 kB]
获取:16 http://mirrors.aliyun.com/ubuntu xenial/universe amd64 Packages [7,532 kB]
获取:17 http://mirrors.aliyun.com/ubuntu xenial/universe i386 Packages [7,512 kB]
获取:18 http://mirrors.aliyun.com/ubuntu xenial/universe Translation-zh_CN [172 kB]
获取:19 http://mirrors.aliyun.com/ubuntu xenial/universe Translation-en [4,354 kB]
获取:20 http://mirrors.aliyun.com/ubuntu xenial/universe amd64 DEP-11 Metadata [3,410 kB]
获取:21 http://mirrors.aliyun.com/ubuntu xenial/universe DEP-11 64x64 Icons [7,448 kB]
获取:22 http://mirrors.aliyun.com/ubuntu xenial-updates/universe Sources [445 kB]
获取:23 http://mirrors.aliyun.com/ubuntu xenial-updates/main Sources [537 kB]
获取:24 http://mirrors.aliyun.com/ubuntu xenial-updates/main i386 Packages [1,525 kB]
获取:25 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 Packages [2,049 kB]
获取:26 http://mirrors.aliyun.com/ubuntu xenial-updates/main Translation-en [461 kB]
获取:27 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 DEP-11 Metadata [327 kB]
获取:28 http://mirrors.aliyun.com/ubuntu xenial-updates/main DEP-11 48x48 Icons [27.5 kB]
获取:29 http://mirrors.aliyun.com/ubuntu xenial-updates/main DEP-11 64x64 Icons [258 kB]
获取:30 http://mirrors.aliyun.com/ubuntu xenial-updates/main DEP-11 64x64@2 Icons [29 B]
获取:31 http://mirrors.aliyun.com/ubuntu xenial-updates/universe amd64 Packages [1,220 kB]
获取:32 http://mirrors.aliyun.com/ubuntu xenial-updates/universe i386 Packages [1,087 kB]
获取:33 http://mirrors.aliyun.com/ubuntu xenial-updates/universe Translation-en [359 kB]
获取:34 http://mirrors.aliyun.com/ubuntu xenial-updates/universe amd64 DEP-11 Metadata [280 kB]
获取:35 http://mirrors.aliyun.com/ubuntu xenial-updates/universe DEP-11 48x48 Icons [35.3 kB]
获取:36 http://mirrors.aliyun.com/ubuntu xenial-updates/universe DEP-11 64x64 Icons [442 kB]
获取:37 http://mirrors.aliyun.com/ubuntu xenial-updates/universe DEP-11 64x64@2 Icons [29 B]
获取:38 http://mirrors.aliyun.com/ubuntu xenial-security/main Sources [252 kB]
获取:39 http://mirrors.aliyun.com/ubuntu xenial-security/universe Sources [211 kB]
获取:40 http://mirrors.aliyun.com/ubuntu xenial-security/main amd64 Packages [1,648 kB]
获取:41 http://mirrors.aliyun.com/ubuntu xenial-security/main i386 Packages [1,160 kB]
获取:42 http://mirrors.aliyun.com/ubuntu xenial-security/main Translation-en [360 kB]
获取:43 http://mirrors.aliyun.com/ubuntu xenial-security/main amd64 DEP-11 Metadata [93.7 kB]
获取:44 http://mirrors.aliyun.com/ubuntu xenial-security/main DEP-11 48x48 Icons [27.5 kB]
获取:45 http://mirrors.aliyun.com/ubuntu xenial-security/main DEP-11 64x64 Icons [116 kB]
获取:46 http://mirrors.aliyun.com/ubuntu xenial-security/main DEP-11 64x64@2 Icons [29 B]
获取:47 http://mirrors.aliyun.com/ubuntu xenial-security/universe i386 Packages [665 kB]
获取:48 http://mirrors.aliyun.com/ubuntu xenial-security/universe amd64 Packages [786 kB]
获取:49 http://mirrors.aliyun.com/ubuntu xenial-security/universe Translation-en [226 kB]
获取:50 http://mirrors.aliyun.com/ubuntu xenial-security/universe amd64 DEP-11 Metadata [130 kB]
获取:51 http://mirrors.aliyun.com/ubuntu xenial-security/universe DEP-11 48x48 Icons [9,163 B]
获取:52 http://mirrors.aliyun.com/ubuntu xenial-security/universe DEP-11 64x64 Icons [206 kB]
获取:53 http://mirrors.aliyun.com/ubuntu xenial-security/universe DEP-11 64x64@2 Icons [29 B]
已下载 58.1 MB,耗时 1分 5秒 (896 kB/s)
Can not add an empty (zero-length) key to the cache
正在读取软件包列表... 完成
xiaole@ubt:~$
xiaole@ubt:~$ sudo apt-get install gcc-5 g++-5 -y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
linux-headers-5.15.0-67-generic linux-hwe-5.15-headers-5.15.0-67 linux-image-5.15.0-67-generic linux-modules-5.15.0-67-generic linux-modules-extra-5.15.0-67-generic
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
cpp-5 gcc-5-base gcc-7-base libasan2 libcilkrts5 libgcc-5-dev libisl15 libmpfr4 libmpx0 libstdc++-5-dev libubsan0
建议安装:
gcc-5-locales g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg
libquadmath0-dbg libstdc++-5-doc
下列【新】软件包将被安装:
cpp-5 g++-5 gcc-5 gcc-5-base gcc-7-base libasan2 libcilkrts5 libgcc-5-dev libisl15 libmpfr4 libmpx0 libstdc++-5-dev libubsan0
升级了 0 个软件包,新安装了 13 个软件包,要卸载 0 个软件包,有 98 个软件包未被升级。
需要下载 29.7 MB 的归档。
解压缩后会消耗 102 MB 的额外空间。
获取:1 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 gcc-5-base amd64 5.4.0-6ubuntu1~16.04.12 [17.4 kB]
获取:2 http://mirrors.aliyun.com/ubuntu xenial/main amd64 libisl15 amd64 0.16.1-1 [524 kB]
获取:3 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 gcc-7-base amd64 7.5.0-6ubuntu2 [18.5 kB]
获取:4 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 libubsan0 amd64 7.5.0-6ubuntu2 [126 kB]
获取:5 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 libcilkrts5 amd64 7.5.0-6ubuntu2 [42.7 kB]
获取:6 http://mirrors.aliyun.com/ubuntu xenial/main amd64 libmpfr4 amd64 3.1.4-1 [191 kB]
获取:7 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 cpp-5 amd64 5.4.0-6ubuntu1~16.04.12 [7,783 kB]
获取:8 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 libasan2 amd64 5.4.0-6ubuntu1~16.04.12 [265 kB]
获取:9 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 libmpx0 amd64 5.4.0-6ubuntu1~16.04.12 [9,762 B]
获取:10 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 libgcc-5-dev amd64 5.4.0-6ubuntu1~16.04.12 [2,239 kB]
获取:11 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 gcc-5 amd64 5.4.0-6ubuntu1~16.04.12 [8,612 kB]
获取:12 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 libstdc++-5-dev amd64 5.4.0-6ubuntu1~16.04.12 [1,428 kB]
获取:13 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 g++-5 amd64 5.4.0-6ubuntu1~16.04.12 [8,430 kB]
已下载 29.7 MB,耗时 31秒 (945 kB/s)
正在选中未选择的软件包 gcc-5-base:amd64。
(正在读取数据库 ... 系统当前共安装有 286746 个文件和目录。)
准备解压 .../00-gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb ...
正在解压 gcc-5-base:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在选中未选择的软件包 libisl15:amd64。
准备解压 .../01-libisl15_0.16.1-1_amd64.deb ...
正在解压 libisl15:amd64 (0.16.1-1) ...
正在选中未选择的软件包 libmpfr4:amd64。
准备解压 .../02-libmpfr4_3.1.4-1_amd64.deb ...
正在解压 libmpfr4:amd64 (3.1.4-1) ...
正在选中未选择的软件包 cpp-5。
准备解压 .../03-cpp-5_5.4.0-6ubuntu1~16.04.12_amd64.deb ...
正在解压 cpp-5 (5.4.0-6ubuntu1~16.04.12) ...
正在选中未选择的软件包 libasan2:amd64。
准备解压 .../04-libasan2_5.4.0-6ubuntu1~16.04.12_amd64.deb ...
正在解压 libasan2:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在选中未选择的软件包 gcc-7-base:amd64。
准备解压 .../05-gcc-7-base_7.5.0-6ubuntu2_amd64.deb ...
正在解压 gcc-7-base:amd64 (7.5.0-6ubuntu2) ...
正在选中未选择的软件包 libubsan0:amd64。
准备解压 .../06-libubsan0_7.5.0-6ubuntu2_amd64.deb ...
正在解压 libubsan0:amd64 (7.5.0-6ubuntu2) ...
正在选中未选择的软件包 libcilkrts5:amd64。
准备解压 .../07-libcilkrts5_7.5.0-6ubuntu2_amd64.deb ...
正在解压 libcilkrts5:amd64 (7.5.0-6ubuntu2) ...
正在选中未选择的软件包 libmpx0:amd64。
准备解压 .../08-libmpx0_5.4.0-6ubuntu1~16.04.12_amd64.deb ...
正在解压 libmpx0:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在选中未选择的软件包 libgcc-5-dev:amd64。
准备解压 .../09-libgcc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb ...
正在解压 libgcc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在选中未选择的软件包 gcc-5。
准备解压 .../10-gcc-5_5.4.0-6ubuntu1~16.04.12_amd64.deb ...
正在解压 gcc-5 (5.4.0-6ubuntu1~16.04.12) ...
正在选中未选择的软件包 libstdc++-5-dev:amd64。
准备解压 .../11-libstdc++-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb ...
正在解压 libstdc++-5-dev:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在选中未选择的软件包 g++-5。
准备解压 .../12-g++-5_5.4.0-6ubuntu1~16.04.12_amd64.deb ...
正在解压 g++-5 (5.4.0-6ubuntu1~16.04.12) ...
正在设置 libmpfr4:amd64 (3.1.4-1) ...
正在设置 libisl15:amd64 (0.16.1-1) ...
正在设置 gcc-7-base:amd64 (7.5.0-6ubuntu2) ...
正在设置 gcc-5-base:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在设置 libcilkrts5:amd64 (7.5.0-6ubuntu2) ...
正在设置 libubsan0:amd64 (7.5.0-6ubuntu2) ...
正在设置 libmpx0:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在设置 cpp-5 (5.4.0-6ubuntu1~16.04.12) ...
正在设置 libasan2:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在设置 libgcc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在设置 libstdc++-5-dev:amd64 (5.4.0-6ubuntu1~16.04.12) ...
正在设置 gcc-5 (5.4.0-6ubuntu1~16.04.12) ...
正在设置 g++-5 (5.4.0-6ubuntu1~16.04.12) ...
正在处理用于 man-db (2.9.1-1) 的触发器 ...
正在处理用于 libc-bin (2.31-0ubuntu9.9) 的触发器 ...
xiaole@ubt:~$