Сообщение об ошибке relocation R_X86_64_32S ... can not be used when making a PIE object; recompile with -fPIC
указывает, что, скорее всего, проект включает в себя предварительно скомпилированные библиотеки для libjemalloc.a
, которые не скомпилированы в виде кода PIC.Поскольку Ubuntu недавно переключился на компиляцию независимых от позиции исполняемых файлов по умолчанию, с настройками цепочки инструментов по умолчанию все объекты, входящие в исполняемый файл, должны быть скомпилированы в режиме PIC.
Я, вероятно, свяжусь с сопровождающим (и)проекта, который вы пытаетесь построить, и уведомите их об этой проблеме совместимости.Тем временем вы можете обойти эту проблему, установив CMAKE_EXE_LINKER_FLAGS
на -no-pie
(например, отредактируйте переменную в ccmake
или cmake-gui
- вам, вероятно, придется включить отображение «расширенных переменных» - илиукажите это в командной строке cmake, используя что-то вроде cmake /path/to/source -DCMAKE_EXE_LINKER_FLAGS=-no-pie
).Обратите внимание, что это несколько снижает безопасность получаемого исполняемого файла, так как тогда ядро не сможет применить рандомизацию адресного пространства к базовому исполняемому файлу.