This commit is contained in:
88
Docs/源码升级Gcc.md
Normal file
88
Docs/源码升级Gcc.md
Normal file
@@ -0,0 +1,88 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# 源码升级Gcc
|
||||
|
||||
[Gcc源码文件下载](https://ftp.gnu.org/gnu/gcc/)
|
||||
|
||||
1. 下载源码包
|
||||
|
||||
```bash
|
||||
wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz
|
||||
```
|
||||
|
||||
2. 解压源码包
|
||||
|
||||
```bash
|
||||
tar -zxvf gcc-*.tar.gz && cd gcc-*
|
||||
```
|
||||
|
||||
3. 配置编译项
|
||||
|
||||
```bash
|
||||
./configure --prefix=/usr/local/gcc-13.2.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
|
||||
```
|
||||
|
||||
> 遇到报错:configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
|
||||
>
|
||||
> 解决方案:gcc 目录下执行如下命令即可解决
|
||||
>
|
||||
> ```bash
|
||||
> ./contrib/download_prerequisites
|
||||
> ```
|
||||
|
||||
**构建参数**
|
||||
|
||||
| 参数 | 含义 |
|
||||
| :-----------------------: | :---------------------------------------------------------: |
|
||||
| ./configure | 源代码安装软件时用于配置软件包 |
|
||||
| --enable-checking=release | 启用编译器的检查功能,但仅限于 release 模式 |
|
||||
| --enable-languages=c,c++ | 指定 GCC 将支持 C 和 C++ 编程语言 |
|
||||
| --disable-multilib | 禁用 GCC 的多架构支持,使其只会生成与主系统架构相匹配的代码 |
|
||||
|
||||
4. 开始编译
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
> 同时运行
|
||||
>
|
||||
> ```bash
|
||||
> make -j 4
|
||||
> ```
|
||||
|
||||
5. 编译安装
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
6. 替换旧版本, 移除旧版本
|
||||
|
||||
```bash
|
||||
mv /usr/bin/gcc /usr/bin/gcc.bak
|
||||
mv /usr/bin/g++ /usr/bin/g++.bak
|
||||
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
|
||||
```
|
||||
|
||||
7. 制作软连接
|
||||
|
||||
```bash
|
||||
ln -s /usr/local/gcc-13.2.0/bin/gcc /usr/bin/gcc
|
||||
ln -s /usr/local/gcc-13.2.0/bin/g++ /usr/bin/g++
|
||||
ln -s /usr/local/gcc-13.2.0/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6
|
||||
```
|
||||
|
||||
8. 查看动态库
|
||||
|
||||
```bash
|
||||
strings /usr/lib64/libstdc++.so.6 | grep CXXABI
|
||||
```
|
||||
|
||||
9. 验证版本
|
||||
|
||||
```bash
|
||||
gcc --version
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user