我正在使用 RHEL6 系统,但需要使用 C++11(甚至 C++14)功能移植代码。这迫使我手动构建 gcc-8.2,安装在私有(private)前缀 ( /prod/pfe/local
) 下。这在 /prod/pfe/local/bin
下创建了许多可执行文件: gcc、g++、ld 和 gfortran。
我现在正在尝试构建使用上述 gfortran 的 CBLAS。构建库 ( cblas_LINUX.a
) 工作正常,但创建可执行文件失败并出现标题中引用的神秘错误:
gfortran -o xscblat1 c_sblat1.o c_sblas1.o ../lib/cblas_LINUX.a<br/>
/prod/pfe/local/lib/gcc/x86_64-pc-linux-gnu/8/../../../../x86_64-pc-linux-gnu/bin/ld: /prod/pfe/local/lib/gcc/x86_64-pc-linux-gnu/8/../../../../lib64/libgfortran.so: _edata: invalid version 21 (max 4)
/prod/pfe/local/lib/gcc/x86_64-pc-linux-gnu/8/../../../../x86_64-pc-linux-gnu/bin/ld: /prod/pfe/local/lib/gcc/x86_64-pc-linux-gnu/8/../../../../lib64/libgfortran.so: error adding symbols: bad value
我是否错误地配置了 build gfortran?如果没有,我该如何解决这个问题——附加FFLAGS
或 LDFLAGS
某种形式的?
最佳答案
好的,according to the gcc-developers , 这是使用新链接器 ( gold ) 触发的已知错误。
用 --disable-gold
重建编译器套件解决了这个问题。
更新:更正——不知何故,禁用黄金还不够好。回到 binutils-2.30 是我最终做的......
关于linux - 与 gfortran 链接 : _edata: invalid version 21 (max 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52375981/