gcc10.2编译安装
crazyang Lv1

gcc10.2 安装包获取:

1
wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz

解压包并进入:

1
2
$ tar -zxvf gcc-10.2.0.tar.gz
$ cd gcc-10.2.0

安装编译所需要的依赖坏境

1
$ ./contrib/download_prerequisites

建立临时文件并进行编译安装

1
2
3
4
5
6
7
8
9
10
11
$ cd ..
$ mkdir gcc-10.2-build
$ cd gcc-10.2-build
$ ../gcc-10.2.0/configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
$ make
$ make install
#备份旧gcc二进制文件,并进行替换
$ sudo mv /usr/bin/gcc /usr/bin/gcc.bckup
$ sudo ln -s /usr/local/bin/gcc /usr/bin/gcc
$ reboot ##重启
$ gcc -v ##查看gcc/c++版本

检查动态库是否为老版本的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

如显示上面的表示是老版本的。升级 gcc 的时候,新版的 gcc 动态库并没有替换老版本 gcc 的动态库,所以这里我们需要手动进行替换升级。

先查找新版 gcc 生成的动态库位置

1
2
3
4
$ sudo find / -name "libstdc++.so*"
/home/crazyang/gcc-10.2.0-build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/crazyang/gcc-10.2.0-build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/home/crazyang/gcc-10.2.0-build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28

将新版 gcc 动态库 libstdc++.so.6.0.28 复制到 /usr/lib64 目录下:

1
$ sudo cp /home/crazyang/gcc-10.2.0-build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28 /usr/lib64/

将旧版动态库备份,然后将默认库的软链接指向最新版的 gcc 动态库:

1
2
3
4
5
6
7
$ cd /usr/lib64/
$ sudo mv libstdc++.so.6 libstdc++.so.6.backup
$ sudo ln -s libstdc++.so.6.0.28 libstdc++.so.6

$ cd /usr/local/lib64/
$ sudo mv libstdc++.so.6 libstdc++.so.6.backup
$ sudo ln -s libstdc++.so.6.0.28 libstdc++.so.6

指完之后再检查动态库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.6
GLIBC_2.4
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
__strtof_l@@GLIBC_2.2.5
symlink@@GLIBC_2.2.5
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
chdir@@GLIBC_2.2.5
fileno@@GLIBC_2.2.5
pthread_cond_destroy@@GLIBC_2.3.2

内容太长,只截取前部分,到此 gcc10 已经升级完成。

1
2
3
4
5
6
7
8
9
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/10.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-10.2.0/configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (GCC)

注意:需要重启系统。

参考链接:

  • 本文标题:gcc10.2编译安装
  • 本文作者:crazyang
  • 创建时间:2020-07-04 12:00:23
  • 本文链接:https://blog.codepeak.cn/2020/07/04/gcc10.2编译安装/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论