gpt4 book ai didi

c++ - “链接 CXX 可执行世界服务器”失败

转载 作者:搜寻专家 更新时间:2023-10-31 02:03:53 27 4
gpt4 key购买 nike

在 cmake 已经预编译失败后,在 99% 编译时链接 CXX 可执行世界服务器。

[ 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

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

预期:一切都应该运行良好。实际情况:甚至没有创建二进制文件。

最佳答案

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

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

关于c++ - “链接 CXX 可执行世界服务器”失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54637025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com