非root用户编译安装GCC

非root用户编译安装GCC

参考资料

  1. 源码下载地址
  2. 非root权限下源码安装GCC)
  3. linux 没有root权限的用户安装GCC
  4. GCC编译器下载和安装教程(针对Linux发行版)
  5. mpc-0.8.1下载地址

编译安装GCC

  1. 下载GCC及其依赖的源码

这里以gcc-6.5.0为例,下载解压。tar -zxcf gcc-6.5.0.tar.gz ,进入目录cd gcc-6.5.0/contrib/,查看文件cat download_prerequisites,查看依赖的版本号 image-20200729163234221

1
2
3
MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1

然后在镜像网站下载指定版本依赖,其中mpc0.8.1在国内镜像网站没有找到,可以直接在这里下载。 解压命令

1
2
3
tar -zxvf gmp-4.3.2.tar.gz
tar -zxvf mpc-0.8.1.tar.gz
tar -zxvf mpfr-2.4.2.tar.gz
  1. 编译安装

根据参考资料,编译安装有两种方式, 一种是linux 没有root权限的用户安装GCC,对gcc和依赖依次编译安装,这样做需要注意依赖的安装顺序。

首先安装gmp、之后安装mpfr、最后安装mpc,因为它们之间有依赖关系。

并且依赖项存在依赖时,还需要在编译时加上with选项。另一种是一起编译。

把这三个依赖包拷贝到gcc源代码目录一块编译

首先在gcc-6.5.0新建文件夹mpfr、gmp和mpc,然后将它们复制gcc源目录下。

1
2
3
mv gmp-4.3.2 gcc-6.5.0/gmp
mv mpfr-2.4.2 gcc-6.5.0/mpfr
mv mpc-0.8.1 gcc-6.5.0/mpc

进入gcc-6.5.0目录,即cd gcc-6.5.0。 然后执行以下命令,分别生成makefile,编译,将文件复制到指定目录。

1
2
3
4
5
6
#生成MakeFile,换成立自己的绝对路径
./configure --prefix=/home/ljj/.local --enable-checking=release --enable-languages=c,c++ --disable-multilib
#编译,开启4个线程
make -j4
#拷贝到.local目录
make install
  1. 修改环境变量

此时执行gcc --version显示的是 7.4.0. 修改~/.bashrc文件,在文件末尾添加

1
export PATH=/home/ljj/.local/bin:$PATH

执行source ~/.bashrc,使修改生效. 再次执行gcc --version,显示的是6.5.0.