说明

一般Linux系统自带或公共的GCC版本都很低,如目前我们的服务器版本的GCC还停留在gcc-4.9.3,而官网已到达9.2版本(下载http://ftp.gnu.org/gnu/gcc/

,有些项目编译时需要更高版本的GCC,这时就需要自己额外安装一个了。

网上关于非 root用户的教程有很多,但大多数都很旧且不靠谱,我找到了几个比较实用的,总结一下,亲测有效。

安装GCC主要依赖三个库:GMP, MPFRMPC,另还有个ISL库(不知是否是必需)。之前的旧版本可能需要手动依次安装这些依赖库,但较新的版本其实只需要在GCC目录下运行./contrib/download_prerequisites命令就可以自动下载这几个组件,也不用担心版本问题。

另外一点和其他软件不同的地方在于,GCC不能直接在其源码中编译,而是在它的目录下新建一个文件夹,然后进入这个文件夹配置并编译安装。了解了这两点,安装GCC就一路畅通,不过编译很慢,耗时2小时以上。

安装

假设我现在的路径为:/path/to/software

wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
tar -xvf gcc-9.1.0.tar.gz
mkdir gcc9 #作为安装路径
cd gcc-9.1.0
./contrib/download_prerequisites
#等待安装好依赖
mkdir gcc-9.1.0 #作为编译路径,不能直接在源码中编译
../configure --disable-checking --enable-languages=c,c++ --disable-multilib --prefix=/path/to/software/gcc9 --enable-threads=posix
#经测试,用此gcc版本编译R时,会报错无Fortran语言,因此这里加入该语言,gcc编译的语言还有很多,可以写all,但会耗时,更多内容参考官方文档。
#../configure --disable-checking --enable-languages=c,c++,fortran --disable-multilib --prefix=/path/to/software/gcc9 --enable-threads=posix
make -j32 && make install

安装成功应该包括以下文件目录:

添加到环境变量,就能覆盖旧版本了。

#路径要在环境变量前
export PATH=/path/to/software/gcc9/bin:/path/to/software/gcc9/lib64:$PATH
export LD_LIBRARY_PATH=/path/to/software/gcc9/lib/:$LD_LIBRARY_PATH

补充环境变量设置

1.gcc/g++等程序本身的路径
export PATH=$PATH:/install/bin
#注:/install为安装目录,下同 2.gcc头文件路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/install/include 3.g++头文件路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/install/include 4.动态链接库路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/install/lib64 5.静态库路径
export LIBRARY_PATH=$LIBRARY_PATH:/install/lib

GCC编译过程

共四步,以编译C语言程序(.c)为例:

  • 预编译:预处理生成.i文件。
  • 编译:编译成汇编语言,生成.S文件。
  • 汇编:汇编后生成目标文件.o文件。
  • 链接:将各个模块的.o文件链接起来生成一个可执行文件。

Ref: http://www.xieqiang.site/2017/07/31/install-gcc-5.4-without-root/

https://blog.csdn.net/u011719045/article/details/82317695

https://www.cnblogs.com/freeopen/p/5482902.html

https://www.cnblogs.com/jack-hzm/p/9978440.html

[Linux] 非root安装GCC9.1.0的更多相关文章

  1. Linux非root安装Python3以及解决SSL问题

    说明 接上一篇. [Linux]非root安装Python3及其包管理 上一篇虽然成功安装了Python3及一些常用的模块,但因为一直装不上SSL模块,导致一些包无法安装,尝试了不少方法都失败了(网上 ...

  2. [linux] 非root安装Python2及其模块

    需求 系统自带的python2版本太低,且没有想要的模块,非root用户无法安装.有些模块是python2写的,无法用python3,所以自己下载一个高版本的python2,可以自由下载模块. 实现 ...

  3. [Linux] 非root安装Lefse软件及其数据分析

    说明 Lefse软件是宏组学物种研究常用软件,一般大家用在线版本即可.但要搭建在Linux集群环境中有点烦,记录一下折腾过程. 安装 这个软件是python2写的,因此假设我已经安装好了较高版本的py ...

  4. 【Linux】非root安装Python3及其包管理

    1. Python 3.8.1安装 源码安装常规操作: wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz tar -xv ...

  5. [Linux]非root的R环境被conda破坏后如何恢复?

    记录说明 这篇文章本来是用来记录Linux非root环境下安装PMCMRplus包折腾过程,但后来试过了各种方法安装不上这个R包后,我换上了Miniconda来安装.经前人提醒,一开始安装Minico ...

  6. zzw原创_非root安装fastDFS

    zzw原创_非root安装fastDFS fastDFS 想要非root安装,没找到资料,分析了一下安装脚本,原来作者是留了安装路径的,但没有放出来. 1.解包 [bdc@svr001 setup]$ ...

  7. nginx非root安装

    nginx非root安装 唯一需要解决的就是指定安装目录 这里使用nginx相关包如下 nginx-1.14.0.tar.gz 安装需要依赖如下2个包 pcre-8.42.tar.gz zlib-1. ...

  8. linux非root用户下安装软件,搭建生产环境

    之前的用实验室的服务器,因为某些原因,使用的用户没有root权限.linux的非root用户很多软件无法安装,非常的不方便.我的方法是使用brew来代替系统的包管理工具.brew是最先用在mac上的包 ...

  9. 【tf.keras】Linux 非 root 用户安装 CUDA 和 cuDNN

    TensorFlow 2.0 for Linux 使用时报错:(cuDNN 版本低了) E tensorflow/stream_executor/cuda/cuda_dnn.cc:319] Loade ...

随机推荐

  1. 如何配置log4Net

    之前曾经用过几次,但是每次都是用完就忘了,下次再用的时候要baidu半天,这次弄通之后直接记下来. 步骤如下. 1. 安装log4Net,直接用NuGet, Install-Package log4N ...

  2. 解决git clone慢问题

    解决git clone慢 关于Git克隆或是上传代码龟速的问题真是让人很恼火,这里对于网上的两种解决方案进行摘录. 利用码云克隆github项目 亲测有效 进入码云,新建一个仓库: 在创建的最后选择导 ...

  3. Noip模拟62 2021.9.26

    T1 Set 真就随机化拿了$90$?? 不过还是有依据的,毕竟这道题出解的几率很大,随出答案的概率也极大 所以不妨打一个随机化 1 #include<bits/stdc++.h> 2 # ...

  4. vs编译问题总结

    编译遇到MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the ...

  5. Linux零基础之shell基础编程入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  6. MySql数据库索引-聚集索引和辅助索引

    InnoDB存储引擎索引: B+树索引:不能找到一个给定键值的具体行,能找到的只是被查找数据行所在的页.然后把页加载到内存,在查询所要的数据. 全文索引: 哈希索引:InnoDB会根据表的使用情况自动 ...

  7. ELK集群之kibana(4)

    kibane安装及基础使用 Kibana的安装 Kibana包含前端展示.es操作简化 yum localinstall kibana-7.6.2-x86_64.rpm -y Kibana配置修改ki ...

  8. Git使用教程之初级入门命令行(二)

    一.Git 操作流程图 1.git --help 查看帮助 Administrator@PC-xiaobing MINGW64 /d/Git (master) $ git --help usage: ...

  9. ESP32-IDF安装并在VSCode上编译Hello World

    ESP32-IDF安装 准备工作 安装python 3 安装方法参考链接:https://blog.csdn.net/hg_qry/article/details/106415252 安装git 安装 ...

  10. JS中如何将yyyy-MM-dd HH:mm:ss格式的字符串转成Date类型

    var deadline = '2019-04-11 13:11:00';   var result = new Date(deadline.replace(/-/g, '/'));