GCC 11发布啦,本脚本在之前GCC 10的基础上做了稍许更新 。增加了用于rpmbuild的打包文件。
由于GCC从5开始对版本号进行重新规范,所以这里的编译脚本以后以主版本号为准。
GCC 11的大致(C/C++)内容如下:
- 编译GCC时需要工具链支持 C++11(之前是C++98),即如果使用GCC,至少要GCC 4.8以上
- 一些调试信息相关的位置变化和选项变化(
-gsplit-dwarf
等) - 移除一些老平台支持
- 覆盖率工具,
gov
的一些选项变化 ThreadSanitizer
支持多种运行时- 提示源代码中的“列”时,支持多字节字符集
- 引入
Hardware-assisted AddressSanitizer
支持 - DWARF调试信息版本升级到 DWARF version 5
- 一些编译优化的提升(向量化、条件语句转switch,跨过程调用)
- 一些链接优化,优化速度和内存占用
- Profile优化
- [C] 增加一些新的属性和warning
- [C] C2X的一些新功能
- [C++] 默认使用 C++17
- [C++] 优化
--enable-cheaders=c_std
标记为不推荐使用,转而使用--enable-cheaders=c_global
。(行为一样) - [C++] 继续增加C++20功能的实现
- [C++] 部分C++23的功能
详见: https://gcc.gnu.org/gcc-11/changes.html
- 支持 ISO C++ 11 的编译器(GCC 4.8及以上)
- C标准库及头文件
- 用于创建Ada编译器的GNAT
- 支持POSIX的shell或GNU bash
- POSIX或SVR4的 awk工具
- GNU binutils
- gzip 版本1.2.4及以上 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org 下载 )
- bzip2 版本 1.0.2及以上 (此处可下载 http://www.bzip.org/)
- GNU make 工具 版本3.80及以上 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org 下载 )
- GNU tar工具 版本1.14及以上 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org 下载 )
- perl 版本5.6.1-5.6.24 (此处可下载 http://www.perl.org/)
- tar或zip和unzip工具 (此处可下载 http://www.info-zip.org)
- gmp库 版本4.3.2及以上 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org 下载 )
- mpfr库 版本3.1.0及以上 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org 下载 )
- mpc库 版本1.0.1及以上 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org 下载 )
- isl 版本 0.15及以上 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org 中gcc目录中的infrastructure目录下载 )
- zstd
- awk
- m4
- automake
- autoconf
- gettext
- gperf
- cmake
CentOS 7 & CentOS 8
- m4 latest
- autoconf latest
- automake 1.16.5
- libtool 2.4.7
- pkgconfig 0.29.2
- gmp 6.2.1
- mpfr 4.1.0
- mpc 1.2.1
- isl 0.18
- libatomic_ops 7.6.12
- bdw-gc 8.0.6
- zstd 1.5.2
- openssl 3.0.2
- libexpat 2.4.8
- libxcrypt 4.4.28
- gdbm latest
- readline 8.1.2
- gcc 11.3.0
- binutils 2.38
- python 3.9.12 [按需]
- gdb 11.2
- global 6.6.8
- lz4 1.9.3 [非必须]
- zlib 1.2.11 [非必须]
- libffi 3.4.2 [非必须]
- ncurses 6.3 [非必须]
- (所有的库都会被安装在**$PREFEX_DIR**里)
给特定用户安装 gdb的pretty-printer 用以友好打印stdc++的stl容器
- 在执行 install.sh 脚本前安装 ncurses-devel 和 python-devel, 用于编译gdb和开启python功能
- gdb载入后可使用
so [安装目录]/load-libstdc++-gdb-printers.py
手动加载gdb的pretty printers
- 2021-05-06 Created
- 2021-06-23 Update
- m4: latest, optional
- libexpat: 2.4.1
- libxcrypt: 4.4.23
- zstd: 1.5.0
- 2021-07-28 Update
- gcc: 11.2.0
- python: 3.9.6
- global: 6.6.7
- libffi: 3.4.2
- binutils: 2.37
- automake: 1.16.4
- 2021-01-21 Update
- automake: 1.16.5
- isl: 0.24
- libatomic_ops: 7.6.12
- bdwgc: 8.0.6
- openssl: 3.0.1
- ncurses: 6.3
- libexpat: 2.4.3
- libxcrypt: 4.4.27
- python: 3.10.2
- gdb: 11.2
- global: 6.6.8
- zstd: 1.5.2
- 2022-04-13 Update
- libtool: 2.4.7
- binutils: 2.38
- openssl: 3.0.2
- libexpat: 2.4.8
- libxcrypt: 4.4.28
- python: 3.9.12(distcc不支持3.10,回滚到3.9)
- 2022-04-17 Update
- 软链接 openssl 库的输出目录。
某些工具写死了用
<PREFIX>/lib
来查找库。但是openssl 3.0 开始输出目录为<PREFIX>/lib64
。 - 允许指定GNU源镜像
- 软链接 openssl 库的输出目录。
- 2022-04-27 Update
- gcc: 11.3.0
- 增加 readline: 8.1.2 (python 内置模块依赖项)