Ошибка связывания с gcc / g ++ 7.3.0 в Ubuntu 18.04

У меня есть проект, где я связываюсь с библиотекой 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

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

2

Решение

не может использоваться при создании объекта 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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]