【Linux

您所在的位置:网站首页 安装指定版本的gcc 【Linux

【Linux

#【Linux| 来源: 网络整理| 查看: 265

文章目录 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源)编译器: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++98C++11完全支持从GCC4.8.1版本开始完全支持-std=c++11 or -std=gnu++11C++14完全支持从GCC 6.1版本开始完全支持-std=c++14 or -std=gnu++14C++17完全支持从GCC 5版本开始到GCC7版本-std=c++17 or -std=gnu++17C++20完全支持从GCC 8版本开始陆续支持C++20特性-std=c++20 or -std=gnu++20C++23未完全支持从GCC 11版本开始支持C++23特性-std=c++2b or -std=gnu++2b

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

七、★最后

以上内容都是经过实战验证过的,关于调用gcc版本的问题,作者建议能使用默认版本(gcc4.8.5)就不要调用更高的版本,在实际的工作中并不是所有的环境都会有高版本被安装的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3