Связывание с gfortran: _edata: неверная версия 21 (макс. 4) - PullRequest
0 голосов
/ 18 сентября 2018

Я работаю с системами 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<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

Неправильно ли я настроил сборку gfortran?Если нет, то как мне решить эту проблему - дополнительные FFLAGS или LDFLAGS какого-то рода?

1 Ответ

0 голосов
/ 18 сентября 2018

Хорошо, , по словам gcc-developers , это известная ошибка, вызванная использованием нового компоновщика ( gold ).

Перестройка компилятора с помощью --disable-gold решает проблему.

Обновление : исправление - каким-то образом отключение золота недостаточно. Возвращаясь к binutils-2.30, я закончил тем, что делал ...

...