gcc编译记录

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

  1. 加入并更新下载源(否则在sudo时可能找不到4.8版本) sudo vim /etc/apt/sources.list
  2. 在sources.list文件的最下面添加如下代码 deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
    deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
  3. 更新源

text

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

    apt-cache policy gcc-4.8

  2. 安装gcc g++

    sudo apt-get install gcc-4.8
    sudo apt-get install g++-4.8

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

    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

  4. 如果需要更改gcc的版本

    sudo update-alternatives –config gcc

    image-20210712123542276

  5. 查看当前gcc版本

    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