gpt4 book ai didi

c++ - openssl libcrypto.a 和 libmysqlclient.a 关于 `ERR_remove_thread_state' 的多重定义

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:59 25 4
gpt4 key购买 nike

当我编译 C++ 服务器并链接 openssl-1.0.2 libcrypto.a 和 libmysqlclient.a 时,`ERR_remove_thread_state' 的多重定义有问题。这是错误:

/usr/local/openssl-1.0.2/lib/libcrypto.a(err.o): In function `ERR_remove_thread_state':
err.c:(.text+0x1ac0): multiple definition of `ERR_remove_thread_state'
/usr/lib/x86_64-linux-gnu/libmysqlclient.a(ssl.cpp.o):(.text+0x1df0): first defined here

最佳答案

不清楚你在问什么,所以我会解释错误的含义。

这是链接器告诉您名称 ERR_remove_thread_state 定义在两个不同的地方:err.ossl.cpp.o .

它还告诉你 err.olibcrypto.o 中,而 ssl.cpp.olibmysqlclient 中.a.

所以本质上,它是在告诉您,通过静态链接到 libcrypto 和 MySQL 客户端库,您会导致它混淆应该调用哪个函数。

编辑:您可以通过多种方式解决此问题:

  1. 将 libcrypto 升级到 1.1.1(在撰写本文时仍处于测试阶段),因为它看起来像 ERR_remove_thread_state 在 1.1.0 中被弃用,并在之后被删除。

  2. 在没有 SSL 的情况下构建您自己的 MySQL 版本,以避免在 libmysqlclient.a 中没有该代码的链接错误。

关于c++ - openssl libcrypto.a 和 libmysqlclient.a 关于 `ERR_remove_thread_state' 的多重定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51645217/

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