gcc编译记录

注意
本文最后更新于 2024-12-04,文中内容可能已过时。

原文:https://www.codenong.com/cs106399531/

  1. 加入并更新下载源(否则在sudo时可能找不到4.8版本)

bash

sudo vim /etc/apt/sources.list   
  1. 在sources.list文件的最下面添加如下代码

bash

deb http://dk.archive.ubuntu.com/ubuntu/ xenial main  
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
  1. 更新源

text

sudo apt-get update
  1. 查看是否已经有gcc-4.8的下载源

bash

apt-cache policy gcc-4.8    
  1. 安装gcc g++

bash

sudo apt-get install gcc-4.8  
sudo apt-get install g++-4.8  
  1. 更新默认gcc、g++(注意指令最后的20不能丢)。这个是为了设置系统gcc默认使用的版本,优先级最高表示最先使用。

bash

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20  
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20  
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50  
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 50   
  1. 如果需要更改gcc的版本

bash

sudo update-alternatives --config gcc  

image-20210712123542276

  1. 查看当前gcc版本

bash

gcc -v
  1. 下载源码并解压。

text

wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz  
tar -xvf gcc-9.3.0.tar.gz  
cd gcc-9.3.0
  1. 安装必要的工具。

text

./contrib/download_prerequisites
  1. 创建文件夹并编译。

text

mkdir gcc-build  
cd gcc-build  
../configure --prefix=/home/rui/software/myInstalled/gcc-930 --disable-multilib --enable-languages=c,c++  
make -j64
make install 
  1. 启用新的gcc。将如下的内容添加到环境变量文件~/.bashrc或者~/.zshrc中。

text

export PATH=/home/rui/software/myInstalled/gcc-930/bin:$PATH  
export LD_LIBRARY_PATH=/home/rui/software/myInstalled/gcc-930/lib:$LD_LIBRARY_PATH  
export MANPATH=home/rui/software/myInstalled/gcc-930/share/man:$MANPATH
  1. 验证。

text

gcc -v
  1. make时如下错误

bash

./../gcc-aarch64-sve-acle-branch/gcc/hwint.h:62:5: error: ## error "Unable to find a suitable type for HOST_WIDE_INT"
    ## error "Unable to find a suitable type for HOST_WIDE_INT"
     ^
In file included from ../../gcc-aarch64-sve-acle-branch/gcc/hash-table.h:243:0,
                 from ../../gcc-aarch64-sve-acle-branch/gcc/coretypes.h:441,
                 from ../../gcc-aarch64-sve-acle-branch/gcc/c/c-lang.c:23:
../../gcc-aarch64-sve-acle-branch/gcc/statistics.h:25:2: error: ## error GATHER_STATISTICS must be defined
 ## error GATHER_STATISTICS must be defined

解决办法:去除CPLUS_INCLUDE_PATH设置

bash

export CPLUS_INCLUDE_PATH=
  1. zstd.h: No such file or director

bash

sudo apt install -y  libzstd-dev