Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

本例中,下载源码到$HOME/built/目录下,安装到$HOME/local/gcc-9.4.0目录下

1. 获取源码

在预计放源码的目录下,比如$HOME/built/

wget -c http://ftp.gnu.org/gnu/gcc/gcc-9.4.0/gcc-9.4.0.tar.gz
tar -zxvf gcc-9.4.0.tar.gz
cd gcc-9.4.0

2. 下载依赖

gcc源码中提供了可执行文件./contrib/download_prerequisites来干这个事情,./contrib/download_prerequisites --help可以查看使用方法

./contrib/download_prerequisites # 下载到当前目录下

3. 编译

创建和源码目录同级的编译目录gcc-build-9.4.0(创建之后gcc-build-9.4.0gcc-9.4.0源码目录是同级目录,本例中及都在$HOME/built/下),在其中执行configure

# 目前在gcc-9.4.0源码目录下
mkdir ../gcc-build-9.4.0
# 进入编译目录
cd ../gcc-build-9.4.0
../gcc-9.4.0/configure --prefix=$HOME/local/gcc-9.4.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib # prefix指定你想要安装到的目录
make -j && make install 

然后源码压缩包和源码目录以及编译目录就可以删除了

2.5 在编译之前要确保安装了texinfo

检查下makeinfo这个命令有没有,没有则是没有安装
https://iq.opengenus.org/makeinfo-command-not-found/

源码编译安装方法:

  1. download source
    wget -c http://ftp.gnu.org/gnu/texinfo/texinfo-7.0.tar.gz

  2. Unzip the download source code of teXinfo:
    tar -xvf texinfo-7.0.tar.gz
    cd texinfo-7.0

  3. Build and install teXinfo:
    ./configure –prefix=$HOME/local/texinfo-7.0
    make -j && make install

With this, teXinfo will be installed in $HOME/local/texinfo-7.0
然后源码压缩包和源码目录就可以删除了

  1. add env variable
    ~/.bashrc$HOME/.bashrc)中添加
export PATH=$PATH:$HOME/local/texinfo-7.0/bin

4. 配置环境变量

~/.bashrc$HOME/.bashrc)中添加

export PATH=$HOME/local/gcc-9.4.0/bin:$HOME/local/gcc-9.4.0/lib64:$PATH  
export LD_LIBRARY_PATH=$HOME/local/gcc-9.4.0/lib64:$HOME/local/gcc-9.4.0/lib:$LD_LIBRARY_PATH
export LD_PRELOAD=$HOME/local/gcc-9.4.0/lib64/libstdc++.so.6:$LD_PRELOAD
# export LD_PRELOAD=$HOME/local/gcc-9.4.0/lib64/libstdc++.so.6 之前博客里是这么写的,我感觉应该是拼接在前面,而不是覆盖,所以改成了上面那样

使得在当前shell生效则可以执行:

source ~/.bashrc

cmake不生效 指定指定版本gcc

cmake命令-D指明变量值:

cmake -D CMAKE_C_COMPILER=$HOME/local/gcc-9.3.0/bin/gcc -D CMAKE_CXX_COMPILER=$HOME/local/gcc-9.3.0/bin/g++ ..

修改CMakeLists.txt定义俩变量似乎没有效果:

SET(CMAKE_C_COMPILER $HOME/local/gcc-9.3.0/bin/gcc) 
SET(CMAKE_CXX_COMPILER $HOME/local/gcc-9.3.0/bin/g++) 

评论