如何在Scientific Linux 7上更新GFortran?更新gcc后GFortran未同步
我来帮你搞定这个问题——在Scientific Linux 7上,我们可以通过**Software Collections (SCL)**来安装与GCC同步的新版GFortran,而且这种方式不会替换系统默认的编译器套件,完美满足你"仅针对此应用使用"的需求。以下是具体步骤:
1. 先确认当前版本差异
先执行下面的命令,明确当前GCC和GFortran的版本差异:
gcc --version gfortran --version
2. 启用Software Collections仓库
Scientific Linux 7兼容CentOS的SCL仓库,我们先安装必要的支持包:
sudo yum install scl-utils centos-release-scl
3. 安装同步版本的GCC/GFortran套件
SCL提供了多个版本的devtoolset(包含同步版本的GCC、GFortran等编译工具),你可以根据需求选择版本(比如devtoolset-11对应GCC 11,devtoolset-9对应GCC 9)。以安装devtoolset-11为例:
sudo yum install devtoolset-11-gcc-gfortran
这个包会自动安装同版本的GCC和GFortran,保证两者版本完全同步。
4. 临时启用新版编译工具(仅针对当前会话)
安装完成后,不需要替换系统默认的编译器,只需要在编译你的应用前,执行下面的命令启用新版套件:
scl enable devtoolset-11 bash
此时在这个终端会话里,gcc和gfortran都会变成你安装的新版本,你可以再次执行版本检查命令确认。接下来就可以正常编译你的应用了,其他终端会话不受影响。
5. (可选)在编译脚本中自动启用
如果你的应用有编译脚本,可以在脚本开头加入下面的命令,每次运行脚本时自动启用新版工具:
source scl_source enable devtoolset-11
为什么系统默认的GFortran没同步更新?
Scientific Linux 7的默认软件仓库里,GCC/GFortran的版本停留在较旧的4.8.5,yum默认更新不会提升大版本。如果你之前更新GCC是通过第三方仓库,很可能只更新了GCC主包而遗漏了GFortran;而devtoolset作为官方提供的编译器套件,会保证GCC和GFortran版本完全一致,同时隔离于系统默认工具,不会破坏系统稳定性。
内容的提问来源于stack exchange,提问作者lori

