在 CentOS 上遇到 Fortran 编译器冲突(例如 gfortran 与 ifort、系统自带 gfortran 与自行安装的版本、或多版本 GCC 的 gfortran 冲突),通常按下面几类情况来解决。
which gfortran
gfortran --version
which ifort
ifort --version
rpm -qa | grep gfortran
ls /usr/bin/gfortran*
ls /opt/*/bin/gfortran*
现象
/usr/bin/gfortran 和 /usr/local/bin/gfortran 都存在which gfortran 指向错误版本解决办法
# 查看 PATH 顺序
echo $PATH
确保你想用的放在前面,例如:
export PATH=/usr/local/bin:$PATH
或临时指定:
/usr/local/bin/gfortran test.f90
现象
gfortranifort解决办法 在编译时显式指定:
export FC=ifort
# 或
export FC=gfortran
CMake 示例:
cmake -DCMAKE_Fortran_COMPILER=gfortran ..
CentOS 常见情况:
gcc 4.8devtoolset-7 / 9 / 11查看可用版本
scl -l
启用指定版本
scl enable devtoolset-11 bash
这样 gfortran 会指向对应版本,不会冲突。
例如:
file /usr/bin/gfortran conflicts with file from package xxx
解决办法
sudo yum remove gcc-gfortran
# 或
sudo rpm -e xxx-gfortran
✅ 优先使用系统包管理器
sudo yum install gcc-gfortran
✅ 需要新版本用 devtoolset
sudo yum install centos-release-scl
sudo yum install devtoolset-11-gcc-gfortran
scl enable devtoolset-11 bash
✅ 编译软件时显式指定 FC
export FC=gfortran
你可以把下面信息贴出来,我可以精准帮你:
which gfortran 和 gfortran --version这样能直接给你可执行的命令。