我们知道,关于 GCC 在 CentOS 下通过 yum 安装默认版本号,CentOS 5 是 4.1.2;CentOS 6 是 4.4.7;CentOS 7 是 4.8.3。很多时候在编译安装软件都需要高版本的 GCC,否则就会报错。那么如何升级 GCC 的版本呢?

首先要确认升级到的 GCC 版本号。目前 GCC 的最新版已经到了 9.1(2019-05-03),而 CentOS 7 则依然使用其 4.8,所以基于兼容性考虑,可以选择升级到 4.8.5。GCC 官网:https://gcc.gnu.org。

需要注意,编译安装 GCC 内存不小于 1GB,Swap 不小于 1GB,硬盘最低不小于 10GB,否则极有可能会中途报错退出。编译安装完后,目录 gcc-4.8.5 将会有 5GB 之多。

1. 下载源码

$ wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz

2. 下载依赖包

编译安装 GCC 需要依赖 mpc,mpfr,gmp,isl 包。前四个包是 GNU 软件,使用 GCC 源码里自带脚本可以轻松下载;最后一个 isl 不是 GNU 项目,需要我们手动去下载。

$ tar zxf gcc-4.8.5.tar.gz$ cd gcc-4.8.5$ ./contrib/download_prerequisites--2019-06-06 16:18:09--  ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2           => “mpfr-2.4.2.tar.bz2”Resolving gcc.gnu.org... 209.132.180.131Connecting to gcc.gnu.org|209.132.180.131|:21... connected.Logging in as anonymous ... Logged in!==> SYST ... done.    ==> PWD ... done.==> TYPE I ... done.  ==> CWD (1) /pub/gcc/infrastructure ... done.==> SIZE mpfr-2.4.2.tar.bz2 ... 1077886==> PASV ... done.    ==> RETR mpfr-2.4.2.tar.bz2 ... done.Length: 1077886 (1.0M) (unauthoritative)

100%[=================================================================================>] 1,077,886    249K/s   in 4.2s

2019-06-06 16:18:19 (249 KB/s) - “mpfr-2.4.2.tar.bz2” saved [1077886]

--2019-06-06 16:18:20--  ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2           => “gmp-4.3.2.tar.bz2”Resolving gcc.gnu.org... 209.132.180.131Connecting to gcc.gnu.org|209.132.180.131|:21... connected.Logging in as anonymous ... Logged in!==> SYST ... done.    ==> PWD ... done.==> TYPE I ... done.  ==> CWD (1) /pub/gcc/infrastructure ... done.==> SIZE gmp-4.3.2.tar.bz2 ... 1897483==> PASV ... done.    ==> RETR gmp-4.3.2.tar.bz2 ... done.Length: 1897483 (1.8M) (unauthoritative)

100%[=================================================================================>] 1,897,483    210K/s   in 7.7s

2019-06-06 16:18:30 (239 KB/s) - “gmp-4.3.2.tar.bz2” saved [1897483]

--2019-06-06 16:18:31--  ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz           => “mpc-0.8.1.tar.gz”Resolving gcc.gnu.org... 209.132.180.131Connecting to gcc.gnu.org|209.132.180.131|:21... connected.Logging in as anonymous ... Logged in!==> SYST ... done.    ==> PWD ... done.==> TYPE I ... done.  ==> CWD (1) /pub/gcc/infrastructure ... done.==> SIZE mpc-0.8.1.tar.gz ... 544950==> PASV ... done.    ==> RETR mpc-0.8.1.tar.gz ... done.Length: 544950 (532K) (unauthoritative)

100%[=================================================================================>] 544,950      286K/s   in 1.9s

2019-06-06 16:18:35 (286 KB/s) - “mpc-0.8.1.tar.gz” saved [544950]

$ wget http://isl.gforge.inria.fr/isl-0.14.tar.gz$ tar zvxf isl-0.14.tar.gz$ ln -s lsl isl-0.14

在此脚本里可以看到依赖包的版本号依次是 mpc-0.8.1mpfr-2.4.2gmp-4.3.2;另外我们下载 isl-0.14

3. 编译安装

为了避免在编译过程中,受原来系统自定义的一堆环境影响,建议先 unset 这些环境设置:

$ unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE

参考:《g++ 4.7.1 compilation error : conflicting types for 'strsignal'》

完整编译安装步骤如下:

$ mkdir gcc-build-4.8.5$ cd gcc-build-4.8.5$ unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE$ ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib --prefix=/Bioinfo/SoftWare/gcc-4.8.5$ make $ make install.....----------------------------------------------------------------------Libraries have been installed in:   /Bioinfo/SoftWare/gcc-4.8.5/lib/../lib64

If you ever happen to want to link against installed librariesin a given directory, LIBDIR, you must either use libtool, andspecify the full pathname of the library, or use the `-LLIBDIR'flag during linking and do at least one of the following:   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable     during execution   - add LIBDIR to the `LD_RUN_PATH' environment variable     during linking   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries formore information, such as the ld(1) and ld.so(8) manual pages.----------------------------------------------------------------------......

如果需要重新 configure 或在 make 中途出错需要退出,最好把当前目录下的所有东西都删除干净。可以执行下面指令清空 编译目录下的相关文件,包括 makefile:

$ make distclean

4. 配置环境变量

GCC 安装完成后,需要包新安装的 gcc 添加到 PATH 个人相应的 LD_LIBRARY_PATH

export PATH=/Bioinfo/SoftWare/gcc-4.8.5/bin:$PATHexport LD_LIBRARY_PATH=/Bioinfo/SoftWare/gcc-4.8.5/lib64:$LD_LIBRARY_PATH

如果不想把新装 GCC 添加到 ~/.bashrc 中的 PATH 和 LD_LIBRARY_PATH 让它永久起作用,但是在安装软件时又想使用新安装的高级版本的 GCC 来编译软件,可以:

  • 在软件编译前先执行上面两个 export 语句,再执行后面的编译安装命令;

  • 或者在软件编译安装时直接在编译参数中添加 gcc/g++ 和其动态库的路径就可以。

到这里新版本的 GCC 就已经安装完了,在下一篇文章中我们将会跟大家分享一下怎么使用新版本的 GCC 在 Linux 下源码编译安装最新版本的 R-3.6.0。

5. 参考资料

  1. 秋水逸冰,《在CentOS下编译安装GCC》,WorldPress Blog

  2. Martin Drozdik, etc.,《How can I understand these dreadful errors when building gcc-4.8.2》, Stack Overflow

  3. ljpwinxp,《Centos 6.9 编译安装gcc 4.8.5》,51CTO

  4. 代码日志,《c – 构建gcc-4.8.2时如何理解这些可怕的错误》, 个人博客

  5. Benjamin Berhault, 《Build and Install the Last GCC on RHEL/CentOS 7》,Ben's Jekyll Blog

——The  End——

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

非 root 用户手动编译安装 GCC相关推荐

  1. 一文读懂 非root用户正确编译安装 protobuf —— 附 CMakeLists.txt 配置

    ❤️ protobuf 如果没有正确编译安装和使用,很容易遇到一堆的相关依赖报错 ❤️ 本文带大家有效解决 C++ 工程中 正确编译安装和使用 protobuf

  2. 【最佳实践】瀚高数据库安全版v4.5.7非root用户运行的安装配置

    瀚高数据库安全版v4.5.7非root用户运行配置 大家都知道的瀚高数据库安全版都是使用root安装并以root来运行的,之所以是默认只能用root安装是因为有些特殊环境下必须使用root.抛开这些特 ...

  3. 安装cuda 非root_linux非root用户下安装软件,搭建生产环境

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

  4. Linux下软件安装 非root用户安装软件的一般流程

    Linux下的软件安装 Linux下的软件安装,实质上有如下四种,"正规"程度依次递减: 使用标准的yum/apt/yast包管理程序安装 比如:sudo apt-get inst ...

  5. 手机安装python3.5_zzw_非root用户安装python3.5

    目的:不想改变linux 自带的python,只想要用特定的非root用户运行特定版本的python 1.进入非root用户 2.新建一个python3.5的安装目录 [a4_csbdc@bdc816 ...

  6. 源代码安装-非ROOT用户安装软件的方法

    0.    前言 如果你没有sudo权限,则很多程序是无法使用别人编译好的文件安装的. 还有时候,没有对应你的主机配置的安装包,这时候需要我们自己下载最原始的源代码,然后进行编译安装. 这样安装的程序 ...

  7. 非root安装php nginx,非root用户安装nginx

    众所周知,apache的80端口为系统保留端口,如果通过其他非root用户启动,会报错如下: nginx: [emerg] bind() to 0.0.0.0:80 failed(13: Permis ...

  8. 非root用户安装nginx

    众所周知,apache的80端口为系统保留端口,如果通过其他非root用户启动,会报错如下: nginx: [emerg] bind() to 0.0.0.0:80 failed(13: Permis ...

  9. 非root用户安装软件

    下面简要说一下Linux下非root用户安装软件的一般流程: 1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar - ...

最新文章

  1. 改变UITextField PlaceHolder的字体和颜色,不影响正常输入
  2. 阿里妈妈技术团队5篇论文入选 SIGIR 2022!
  3. hdu 4409 Family Name List LCA +stl
  4. JAVA基础——时间Date类型转换
  5. javascript的DOM、BOM操作
  6. Java JDK1.8新特性之四大函数式接口
  7. tomcat集群的failover机制
  8. 深度学习(deep learning)优化调参细节(trick)
  9. Java匹马行天下之学编程的起点——高级语言大锅烩
  10. arm的bin二进制代码分析
  11. vue前端信息详情页模板梳理
  12. 【ES实战】ES-Hadoop中的配置项说明
  13. 【Pytorch官方教程】从零开始自己搭建RNN1 - 字母级RNN的生成任务
  14. [魔改整合] [Mod整合包] [1.12.2][Mod整合包]幸运贪婪超级整合-超多好玩的mod
  15. Kali忘记密码的重置方法
  16. 关于链表的讨论报告-第三小组
  17. 日文配列键盘修改和映射自定义
  18. springboot多数据源如何配置驼峰映射或配置文件不起作用的问题
  19. 直方图均衡化、自适应直方图均衡化
  20. scada与MySQL连接_SCADA系统关系数据库转储

热门文章

  1. 【C语言初学必看】猜数字游戏背后的知识
  2. 嵌入式计算机是专用计算机吗,什么是嵌入式计算机?
  3. 大数据导论第十三周、十四周课件以及课后作业
  4. Python+Selenium自动搜索基金业协会指定企业名单,抓取指定信息并保存到数据库...
  5. python 获取昨天的时间
  6. 程序员之天梯排行榜,你在哪一级?
  7. virualbox andirodx86
  8. 软考信息安全工程师学习笔记六(未完待续)
  9. linux开发板lcd按压,嵌入式Linux裸机开发(十五)——LCD
  10. 关于音乐制作的一些网站