1

我正在使用 RHEL6 系统,但需要使用 C++11(甚至 C++14)功能移植代码。这迫使我手动构建 gcc-8.2,安装在私有前缀 ( /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
/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

我是否错误地配置了构建 gfortran?如果没有,我该如何解决这个问题——额外的FFLAGSLDFLAGS某种形式的?

4

1 回答 1

2

好的,根据 gcc-developers 的说法,这是一个由使用新链接器 ( gold )触发的已知错误。

重建编译器套装--disable-gold解决了这个问题。

更新:更正——不知何故,禁用金币还不够好。回到 binutils-2.30 是我最终要做的......

于 2018-09-18T14:58:52.107 回答