«Связывание CXX исполняемого сервера мира» завершается неудачно - PullRequest
0 голосов
/ 11 февраля 2019

Связывание исполняемого сервера CXX с 99% компиляцией после сбоя предварительно скомпилированного cmake.

[ 99%] Linking CXX executable worldserver
/usr/bin/ld: ../../../deps/jemalloc/libjemalloc.a(jemalloc.c.o): relocation R_X86_64_32S against symbol `sz_size2index_tab' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: ../../../deps/jemalloc/libjemalloc.a(large.c.o): relocation R_X86_64_32S against symbol `sz_size2index_tab' can not be used when making a PIE object; recompile with -fPIC

и т. Д.

Ошибка: https://pastebin.com/pVEkzzNs

IЯ использую последнюю версию Ubuntu и пытаюсь установить последнюю версию AzerothCore для каждого SSH (без автоустановщика).

Ожидается: все должно работать хорошо.Фактически: двоичные файлы даже не создаются.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Сообщение об ошибке 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).Обратите внимание, что это несколько снижает безопасность получаемого исполняемого файла, так как тогда ядро ​​не сможет применить рандомизацию адресного пространства к базовому исполняемому файлу.

0 голосов
/ 12 февраля 2019

Просто интересно, правильно ли вы указали путь.

Я вижу, вы используете root?Для компиляции для пользователя.

root@core /home/users/tide/wow/source/build # cmake ../ -DCMAKE_INSTALL_PREFIX=/home/users/tide/wow/server -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILERT=/usr/bin/clang++ -DTOOLS=0 -DWITH_WARNINGS=1 -DSCRIPTS=1

Просто интересно, вы уверены, что путь не такой, как этот.

root@core /home/tide/wow/source/build # cmake ../ -DCMAKE_INSTALL_PREFIX=/home/tide/wow/server -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILERT=/usr/bin/clang++ -DTOOLS=0 -DWITH_WARNINGS=1 -DSCRIPTS=1```
...