У меня есть проект, где я связываюсь с библиотекой 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
Эта проблема, возможно, является дубликатом, но я не смог перевести решения других подобных проблем в мою проблему.
не может использоваться при создании объекта 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
Других решений пока нет …