Ошибка связывания с gcc / g ++ 7.3.0 в Ubuntu 18.04 - PullRequest
0 голосов
/ 07 мая 2018

У меня есть проект, где я связываюсь с библиотекой BLAS, используя флаг -lcblas. Раньше он нормально компилировался, пока не обновил мою систему до Ubuntu 18.04 и GCC 7.3.0. В любом случае, команда компиляции -

g++ -o @$ benchmark.o mine.o -lcblas

, что приводит к ошибке

/usr/bin/x86_64-linux-gnu-ld: benchmark.o: relocation R_X86_64_32 against `.bss' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: final link failed: Nonrepresentable section on output

Эта проблема, возможно, является дубликатом, но я не смог перевести решения других подобных проблем в мою проблему.

1 Ответ

0 голосов
/ 08 мая 2018

нельзя использовать при создании объекта PIE; перекомпилировать с -fPIC

Ubuntu 18.04: g ++ - 5 (5.5), g ++ - 6, g ++ - 7 - все настроены с PIE по умолчанию.

Либо используйте g++ -no-pie -o ... .., либо используйте g ++ - 4.8: sudo apt install g ++ - 4.8. Ссылка Как настроить gcc на использование -no-pie по умолчанию?


Дополнительный компилятор для Ubuntu 16.04 и 18.04 → «Без пирога» g ++ 54 : gcc54-c++_5.4.0-ubuntu16_amd64.deb → Предоставляет / usr / bin / {gcc54, g ++ 54, gfortran54}. Ссылка: https://drive.google.com/file/d/1ptHLaZXImpeMzq4xuuGGn5VjrvxNSop3/view?usp=sharing

Больше GCC (без пирога) https://drive.google.com/drive/folders/1xVEATaYAwqvseBzYxKDzJoZ4-Hc_XOJm?usp=sharing

...