我正在使用RHEL6系统,但需要使用C++11(甚至C++14(功能移植代码。这迫使我手动构建 gcc-8.2,安装在私有前缀 (/prod/pfe/local
下(。这在/prod/pfe/local/bin
下创建了许多可执行文件:gcc,g++,ld和gfortran。
我现在正在尝试构建CBLAS,它使用上面的gfortran。构建库(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?如果没有,我该如何解决这个问题 - 额外的FFLAGS
或某种LDFLAGS
?
好的,根据 gcc 开发人员的说法,这是一个由使用新链接器(黄金(触发的已知错误。
使用--disable-gold
重新构建编译器套装可以解决此问题。
更新:修正 - 不知何故,禁用黄金还不够好。回到 binutils-2.30 是我最终所做的......