Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';链接CXX可执行文件worldserver';失败_C++_Cmake_Clang_Jemalloc_Azerothcore - Fatal编程技术网

C++ ';链接CXX可执行文件worldserver';失败

C++ ';链接CXX可执行文件worldserver';失败,c++,cmake,clang,jemalloc,azerothcore,C++,Cmake,Clang,Jemalloc,Azerothcore,在cmake已预编译失败后,以99%的编译率链接CXX可执行文件worldserver [ 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

在cmake已预编译失败后,以99%的编译率链接CXX可执行文件worldserver

[ 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
等等

错误是:

我正在运行最新的Ubuntu,并试图通过SSH安装最新的AzerothCore(无自动安装程序)

期望:一切都会顺利进行。
实际:二进制文件甚至不会被创建。

只是想知道您是否设置了正确的路径

我看到你在用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```

错误消息
重新定位R_X86_64_32S。。。制作饼图对象时不能使用;使用-fPIC进行重新编译
表明项目很可能包含未编译为PIC代码的libjemalloc.a的预编译库。由于Ubuntu最近切换到默认编译位置独立的可执行文件,使用默认的工具链设置,所有进入可执行文件的对象都必须在PIC模式下编译


我可能会与您试图构建的项目的维护人员联系,并将此兼容性问题通知他们。同时,您可以通过将
CMAKE\u EXE\u LINKER\u FLAGS
设置为
-无饼图
(例如,在
ccmake
CMAKE gui
中编辑变量-您可能必须启用“高级变量”的显示来解决此问题-或者在cmake命令行上使用类似于
cmake/path/to/source-DCMAKE\u EXE\u LINKER\u FLAGS=-no pie
)的内容指定它。请注意,这确实会在一定程度上降低生成的可执行文件的安全性,因为这样内核将无法对基本可执行文件应用地址空间随机化。

您的编译器名称和版本是什么?在CMakeLists.txt文件中,是否有任何明显的方法来设置包含“-fPIC”的编译标志?是
CMAKE_INSTALL_PREFIX
set吗?@FrancescoBorzi我目前使用的
sudo apt get INSTALL git CMAKE make gcc g++clang libmysqlclient dev libssl dev libbz2 dev libreadline dev libncurses dev mysql server libace-6.*libace dev
@Barbz_YHOOL我设置了
DCMAKE\u INSTALL\u PREFIX
,是的。你能发布你的cmake的输出吗?我刚刚更新了我的Ubuntu,重新启动了我的机器,并试图重新编译整个项目。我无法复制这个问题。