You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

链接ATLAS数学库时出现undefined reference to '_gfortran_transpose_r8'错误

解决链接ATLAS时_gfortran_transpose_r8未定义的问题

这个错误本质是链接器找不到GNU Fortran的内部运行时函数符号,大概率是链接顺序不对或者编译环境不匹配导致的,给你几个可行的解决办法:

  • 调整链接命令的库顺序
    Fortran的链接规则很严格,依赖库需要放在被依赖的目标文件之后。你的当前命令里缺少了gfortran运行时库的显式链接,而且顺序可能不对。修改后的命令应该是:

    gfortran -o $EXE $OBJ libgamess-xmvb.a -L/usr/lib64/atlas -llf77blas -latlas -lgfortran
    

    把-lgfortran放在最后,确保链接器能从gfortran运行时库中找到_gfortran_transpose_r8这类内部符号。

  • 确认使用的是devtoolset-7的gfortran
    有时候系统默认的gcc/gfortran版本和devtoolset-7的版本不一致,会导致符号不兼容。先确保你已经激活了devtoolset-7环境:

    source scl_source enable devtoolset-7
    

    或者直接使用devtoolset-7中gfortran的绝对路径来编译链接:

    /opt/rh/devtoolset-7/root/usr/bin/gfortran -o $EXE $OBJ libgamess-xmvb.a -L/usr/lib64/atlas -llf77blas -latlas -lgfortran
    
  • 检查ATLAS库的编译环境
    如果上面两步都没用,可能是你用的ATLAS库是用系统默认的gcc编译的,和devtoolset-7的gfortran不兼容。可以尝试用devtoolset-7的编译器重新编译ATLAS,或者查找对应版本的ATLAS预编译库。

另外可以用nm命令做个小调试,确认gfortran运行时库中确实包含这个符号:

nm -D /opt/rh/devtoolset-7/root/usr/lib64/libgfortran.so | grep _gfortran_transpose_r8

如果输出中能看到这个符号,说明库是正确的,只需要调整链接顺序即可。

内容的提问来源于stack exchange,提问作者nyprog75

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:05:22