gpt4 book ai didi

c++ - 32 位共享对象的链接问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:06 25 4
gpt4 key购买 nike

我正在尝试迁移旧版本的软件,并在 CLang-Tidy 的帮助下对代码进行了现代化改造,但我遇到了一个奇怪的链接问题:

/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/32/crtbeginT.o: direct GOT relocation R_386_GOT32X against `_ITM_deregisterTMCloneTable' without base register can not be used when making a shared object

我试图通过评论 CMakeLists.txt 中的一些 .cpp 文件来隔离问题,但我仍然无法确定问题出在哪里。

这是我的 CMakeLists.txt 部分

add_library(client SHARED
network/client/mistery.cpp
network/client/mclient.cpp
network/client/ellect.cpp
network/client/proctcppacket.cpp
network/client/ping.cpp
network/client/signals.cpp
network/client/remotecontrol.cpp
network/client/data.cpp
network/client/sensor.cpp
network/client/events.cpp
network/client/test.cpp
network/client/misteryThread.cpp
network/client/libNetwork.cpp
)

target_link_libraries(client -lssl -lcrypto -ggdb -lxml2 -lz -ldl -pthread -lstdc++ -static)
set_target_properties(client PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")

我的共享对象必须是 32 位模式。

最佳答案

我注意到我必须在不使用 target_link_libraries 中的 -static 选项的情况下进行编译和链接。因为我正在构建一个共享对象,所以我不能使用这个选项。

因此,target_link_libraries 的正确实现是:

target_link_libraries(client -lssl -lcrypto -ggdb -lxml2 -lz -ldl -pthread -lstdc++)

关于c++ - 32 位共享对象的链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58275690/

25 4 0
文章推荐: c++ - 在剪辑中复制环境的构造函数?
文章推荐: javascript - 使所有
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com