文章目录

  • Linux-centos7.9系统GNU编译器套件(gcc/g++/gfortran)离线编译安装
    • 一、★GNU编译器套件定义
    • 二、★GNU-GCC编译环境说明
    • 三、★GNU-GCC编译安装
      • 3.1 依赖软件包安装
      • 3.2 gcc-7.5版本编译安装
    • 四、★GNU-GCC环境导入
      • 4.1 个人主机环境
      • 4.2 HPC集群环境
      • 4.3 gcc版本验证
    • 五、★GNU-GCC使用情景
      • 5.1 仅有GNU编译器套件
      • 5.2 GNU编译套件和INTEL编译器共存
    • 六、★GNU-GCC支持C++特性
    • 七、★最后

Linux-centos7.9系统GNU编译器套件(gcc/g++/gfortran)离线编译安装


本篇文章主要讲解在centos7.9系统中,如何源码编译GNU编译器套件下GCC7.5,并正确的导入用户环境,以及同时存在GCC编译器和INTEL编译器时如何指定哪种编译器。

一、★GNU编译器套件定义


GNU编译器套件包括C、C++、 Objective-C、 Fortran、java、Go等语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)

GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)

二、★GNU-GCC编译环境说明


  • Linux系统:centos7.9离线(已配置离线YUM源)
    Centos7.9_YUM源离线配置链接
  • 编译器:GCC4.8.5(系统默认安装版本)
  • GCC软件版本:gcc-7.5.0.tar.gz
  • 依赖软件包版本:gmp-6.1.0.tar.bz2 isl-0.16.1.tar.bz2 mpc-1.0.3.tar.gz mpfr-3.1.4.tar.bz2

注意! 不同版本的gcc编译的时候,依赖的三方包软件的版本都不太一样,所以一定要安装对应的版本

gcc-7.5源码包及对应三方库源码包

三、★GNU-GCC编译安装


3.1 依赖软件包安装
# 联网安装模式
tar -zxvf gcc-7.5.0.tar.gz
cd gcc-7.5.0
./contrib/download_prerequisites # 自动安装依赖库
# 离线安装模式,主备好4个依赖软件包
tar -zxvf gcc-7.5.0.tar.gz
cd gcc-7.5.0
cp gmp-6.1.0.tar.bz2 isl-0.16.1.tar.bz2 mpc-1.0.3.tar.gz mpfr-3.1.4.tar.bz2 ./ # 复制依赖包到gcc目录
./contrib/download_prerequisites

注意! gcc依赖包不需要解压,直接放到gcc-7.5.0目录中即可。作者也看到有很多人把四个依赖包单独编译安装,这样不仅麻烦还容易出错,其实在gcc源码包中就有安装依赖包的脚本文件,如上执行运行脚本即可轻松安装4个依赖软件包。

3.2 gcc-7.5版本编译安装
# 软件版本:gcc-7.5.0.tar.gz
cd gcc-7.5.0
./configure --enable-bootstrap --enable-shared --enable-threads=posix \
--enable-checking=release --with-system-zlib --enable-__cxa_atexit \
--disable-libunwind-exceptions --enable-gnu-unique-object \
--enable-linker-build-id --with-linker-hash-style=gnu \
--enable-languages=c,c++,fortran --enable-plugin \
--enable-initfini-array --disable-libgcj \
--enable-gnu-indirect-function --with-tune=generic \
--disable-multilib --prefix=指定gcc安装路径
make -j 8
make install

注意! gcc编译强烈建议要指定安装路径,也就是呀加上参数–prefix=,因为在cenos7系统中,有默认的gcc版本4.8.5,如果选择默认安装,在后面转换gcc版本的时候就会出现问题。在进行make编译时,强烈建议调用多核,这样可以更快的编译完成。如果只调用单核,编译过程可能需要2小时左右。

四、★GNU-GCC环境导入


4.1 个人主机环境
vim ~/.bashrc # 打开个人环境配置文件.bashrc,增加如下命令,保存退出
export PATH=指定gcc安装路径/bin:$PATH
export LD_LIBRARY_PATH=指定gcc安装路径/lib64:$LD_LIBRARY_PATH
source ~/.bashrc # 立即生效
4.2 HPC集群环境
module avail  # 确定当前是否安装Environment Modules软件包,如果有可以看到环境配置文件路径
cd /当前环境的路径/modules5/modulefiles # 进入到自己Environment Modules中的配置目录中
mkdir gcc;cd gcc
vim 7.5  # 新建文件,以gcc的版本号为名字加以区分,增加如下命令,保存退出
#%Module1.0
## Module file created by author
conflict gcc
proc ModulesHelp { } {puts stderr "by gcc 4.8.5"
}
prepend-path PATH "指定gcc的安装路径/bin"
prepend-path LD_LIBRARY_PATH "指定gcc的安装路径/lib64"
module avail # 查看gcc环境是否已配置正确
module load gcc/7.5.0  #导入gcc环境
4.3 gcc版本验证

当gcc编译安装好后,加载到当前环境,通过命令查看是否加载正确,同时查看版本信息。

# 三个命令的版本信息应该一样,如下图所示
gcc -v
g++ -v
gfortran -v

五、★GNU-GCC使用情景


5.1 仅有GNU编译器套件

当系统环境中,只有GNU编译器的时候,但有不同版本。这个时候确定使用哪个版本,就加载哪个版本进行编译,同时要保证当前的源码统一使用同一版本。因为使用不同版本GCC编译下的源码,运行的时候需要对应版本GCC环境。

5.2 GNU编译套件和INTEL编译器共存

当系统中同时存在GNU编译套件和INTEL编译器的时候,那么在源码编译的时候就使用命令参数指定使用GNU编译套件下的GCC,如下所示:

# 指定GNU-gcc编译器
CC=gcc CXX=g++ FC=gfortran  cmake .. -DCMAKE_INSTALL_PREFIX=指定安装路径
make
make install
# 指定INTEL编译器
CC=icc CXX=icpc FC=ifort  cmake .. -DCMAKE_INSTALL_PREFIX=指定安装路径
make
make install

六、★GNU-GCC支持C++特性


C++版本 GCC版本支持情况 GCC版本 指定版本的命令标志
C++98 完全支持 从GCC 6.1之前版本的默认模式 -std=c++98 or -std=gnu++98
C++11 完全支持 从GCC4.8.1版本开始完全支持 -std=c++11 or -std=gnu++11
C++14 完全支持 从GCC 6.1版本开始完全支持 -std=c++14 or -std=gnu++14
C++17 完全支持 从GCC 5版本开始到GCC7版本 -std=c++17 or -std=gnu++17
C++20 完全支持 从GCC 8版本开始陆续支持C++20特性 -std=c++20 or -std=gnu++20
C++23 未完全支持 从GCC 11版本开始支持C++23特性 -std=c++2b or -std=gnu++2b

注意! gcc版本很多,什么时候需要使用老版本,什么时候又需要调用新版本呢?这个取决于需要编译的源码程序。当编译的源码比较老旧的时候,c++新特性不高于c++11的时候用默认4.8.5的版本就可以,反之如果编译的时候出现很多编译器导致的错误类型,那么就要考虑调用更高版本的GCC。

七、★最后


以上内容都是经过实战验证过的,关于调用gcc版本的问题,作者建议能使用默认版本(gcc4.8.5)就不要调用更高的版本,在实际的工作中并不是所有的环境都会有高版本被安装的。
(●’◡’●)最后感谢屏幕另一端你的支持。

【Linux-GNU编译器套件(gcc/g++/gfortran)离线编译安装】相关推荐

  1. gcc (GNU编译器套件)

    2019独角兽企业重金招聘Python工程师标准>>> GNU编译器套件(GNU Compiler Collection)包括 C. C++. Objective-C. Fortra ...

  2. GCC(GNU Compiler Collection,GNU编译器套件)

    文章目录 1. GCC 主要软件包 2. GCC 编译过程 2.1 GCC 编译过程 2.2 GCC 单步完成编译 3.GCC 常用 选项和参数 4.C/C++ 程序 常用文件名后缀 5. 链接 可分 ...

  3. 浅析Linux开发工具之gcc/g++

    在windows开发平台,我们用惯了vc.vs等IDE(集成开发环境),在编译好源代码之后,按下相应按钮,IDE就会为我们完成编译,链接的过程.然而在Linux平台下,却没有这么方便的开发环境,很多事 ...

  4. mysql5.5.8编译安装_Mysql应用linux下mysql 5.5.8 源码编译安装

    <MysqL应用linux下MysqL 5.5.8 源码编译安装>要点: 本文介绍了MysqL应用linux下MysqL 5.5.8 源码编译安装,希望对您有用.如果有疑问,可以联系我们. ...

  5. linux安装f77编译器,CentOS下安装gcc /g++ /gfortran /g77 编译器

    完全新手入门的角度,学习CentOS..版本centos 6.2x86_64 由于手头有CentOS 6.2的安装光盘,所以采用的是rpm包来安装gcc编译器,这样免去来下载安装包的步骤..(其他的安 ...

  6. linux系统下载编译器,gcc for linux|GNU Compiler Collection(gcc编译器)下载v4.9.1 linux版 - 欧普软件下载...

    GNU Compiler Collection简称GCC编译器,基于Linux系统推出的一款功能强大的编译器,主要用于编译C, C++, Objective-C, Fortran, Java等语言,小 ...

  7. 不同的编译器:GCC G++ C C++的区别

    gcc 是c的编译器,g++是c++的编译器.cc一般是一个符号连接,指向gcc.CC一般是makefile里面的一个名字,具体是什么根据实际情况决定. gcc和g++都是GNU(组织)的一个编译器. ...

  8. 【学习笔记之Linux】工具之gcc/g++

    背景知识:   gcc/g++是一个编译器,注意区分编译器和编辑器,vim是是编辑器.简单的说,编辑器是我们敲代码的工具,我们在编辑器上写出我们需要实现的功能:编译器负责实现功能,把我们写的高级语言编 ...

  9. 【Linux修炼】6.gcc/g++及Makefile【工具篇】

    每一个不曾起舞的日子,都是对生命的辜负. Linux-gcc/g++及Makefile 本节目标 程序的翻译过程 1.程序的翻译过程 2. 理解选项的含义 3. 动态链接和静态链接 Linux项目自动 ...

最新文章

  1. 解决:”ssh-keygen 不是内部或外部命令“ 的问题
  2. C++面试题--(五)
  3. CSS3学习笔记-字体和文字
  4. SpringBoot+Swagger2.7.0实现汉化(2.8.0不行)
  5. 科大星云诗社动态20201118
  6. Git之常用命令的综合使用和示例分析
  7. 统信软件用一年时间跨越式发展说明了一件事
  8. python3.5 连接mysql_python3.5 連接mysql本地數據庫
  9. Android中使用FragmentManager获得控件
  10. 三阶魔方还原步骤图_五阶魔方还原教程——层先法
  11. yate怎样调出彩色的log日志实时调试信息
  12. kali-Linux局域网渗透之Win2008
  13. 2019.07.22--自我总结--分析问题三W原则+做事PDCA法则
  14. 串口服务器调试助手使用教程,串口服务器如何配置及串口调试6大技巧
  15. python qt5开发实例_python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
  16. 秘鲁蓝莓国际农民丰收节贸易会-·万祥军:谋定对华市场准入
  17. TinyG 入门06
  18. Ride测试用例报 Suite xxxx contains no tests matching name
  19. php mpm,PHP使用Apache中的ab测试网站的压力性能及mpm介绍
  20. (六)Activiti之实现学生请假流程

热门文章

  1. 关于职场,你需要不断拼搏
  2. 有关shape文件的说明
  3. 计算机软件研究方法与技术路线,研究方法与技术路线
  4. 近期Centos7下常用指令(1)
  5. uni-app云开发的网盘助手微信小程序源码
  6. 东梓关富春江畔有感  文/江湖一劍客
  7. 股权融资的A、B、C、D轮
  8. 回文数,用scratch编程实现回文数
  9. ESP8266多任务处理---Ticker库
  10. I2C协议研读(九):十位寻址