专业的编程技术博客社区

网站首页 > 博客文章 正文

还在为“gcc>=5.0 is needed”发愁吗?

baijin 2024-09-12 11:06:25 博客文章 5 ℃ 0 评论

1.gcc-7编译器的安装

还在为centos7自带的gcc版本太低而苦恼吗?Centos7默认的GNU编译器不支持C++11,因此GROMACS2020等软件就无法顺利安装。那么在别的电脑上编译好了拷贝过来行不行呢?GLIBC的版本问题又很难解决。Centos的devtoolset听起来很香?编译GPU cuda代码时又可能出现莫名其妙的错误。

庚子计算提供了一种无风险自动升级到gcc-7的方法。参考资料为国家超级计算济南中心《CMAQ 软件在新集群机器指南》。原来的安装步骤有点繁琐,因此庚子计算提供了一个一键安装脚本,只需运行该脚本后给定一个安装目录,就会自动在给定的目录下安装gcc-7,安装完成后会生成一个环境变量脚本,source这个变量脚本,即可使用新版本的gcc-7。

升级gcc尽管会生成新的GLIBC,但是编译软件及运行软件时并不需要将新版本的GLIBC替换系统的版本,因此没有任何风险。使用该编译器编译的程序可以在本机以及集群中运行。同时对于权限没有要求,普通用户也可以在自己的目录下编译该gcc。

默认生成的是一个GNU编译套件,包含gcc,g++,以及gfortran。经过测试后,该版本的gcc能与openmpi3,nvcc等软件结合良好。该脚本已经在centos6、centos7以及Ubuntu16上测试通过。编译时需要系统内已经有一个gcc编译器以及libtool工具,一般的发行版默认带有。但是如果系统的编译器版本太高,比如gcc-9,就不能编译该版本gcc-7,当然,也没有必要编译。

脚本分为在线和离线版。离线版本包含了安装过程中所需要的软件包(链接:https://pan.baidu.com/s/1bZmHfSatOusc5hWebhL_kw

提取码:wdyx),而在线版(https://github.com/tamaswells/GMX_tools/blob/master/install_online.sh)会在线从网页上下载所需要的软件包,然后自动安装。

使用方法:

下载gcc-7-source.tar.gz后,

tar -zxvf gcc-7-source.tar.gz

cd gcc-7-source

bash install.sh

脚本会提醒输入一个安装目录:

Input installation directory for gcc-7--->/mygcc-7

如果没有权限使用该目录,会报出错误。接下来提示安装后如后使用这个编译器:

To use gcc-7 after installation: source /mygcc-7/env.sh hit ENTER to continue!

回车后开始安装,安装完成后只需要source /mygcc-7/env.sh 即可使用新版本的编译器进行程序的编译。如果使用该编译器编译的软件调用了libgcc这样的库(比如编译GROMACS),运行时也是需要source这个环境变量。

gcc的编译需要很长的时间,经常超过两个小时,因此还可以使用PBS、SLURM提交自动安装的脚本,只需在排队脚本里写上以下命令即可。

(echo "/path_for_gcc-7";echo ) | bash install.sh

2.GROMACS2020安装

主要参考教程来自于 http://sobereva.com/457

为了使用新版本的编译器,需要在cmake前指定编译器选项,当然编译gromacs不需要使用fortran,但是这种方式在需要使用fortran程序时有用。

source /mygcc-7/env.sh

CC=gcc CXX=g++ FC=gfortran F77=gfortran cmake…….

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表