草原_苍狼 2019-08-24 10:23 采纳率: 0%
浏览 420

openssl和mysql冲突 ERR_remove_thread_state

openssl版本:openssl-1.1.0k
mysql版本:mysql-5.7.27
静态库,编译报如下错误:
/thirdparty/mysql/lib/libmysqlclient.a(ssl.cpp.o): In function ERR_remove_thread_state':
/export/home/pb2/build/sb_0-34537258-1560179931.8/mysql-5.7.27/extra/yassl/src/ssl.cpp:1619: multiple definition of
ERR_remove_thread_state'
/home/lics/code/transfer/thirdparty/openssl/lib/libcrypto.a(err.o):err.c:(.text+0xb60): first defined here
collect2: error: ld returned 1 exit status
make[1]: [build] Error 1 (ignored)

请问有谁遇到过吗?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-11 15:50
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于 OpenSSL 和 MySQL 使用了不同的 SSL/TLS 安全协议。当两个软件使用不同的安全协议时,可能会出现冲突。

    解决方法如下:

    1. 删除 openssl 的静态库:首先,你需要删除 openssl 中的静态库文件(libcrypto.a, libssl.a 等),这将避免在你的项目中再次引用这些文件。

    2. 将 OpenSSL 版本更新到最新:你可以通过运行以下命令来安装 OpenSSL 1.1.0k 的最新版本:

      sudo yum install -y epel-release
      sudo yum install -y https://mirrors.aliyun.com/openjdk/rpm/el7/x86_64/jdk-11.0.4.2.rpm
      sudo rpm -Uvh https://mirrors.aliyun.com/repo/gpgkey/RPM-GPG-KEY-RHEL-DEV
      sudo dnf install -y openssl-devel
      
    3. 更新 MySQL 版本:确保你使用的 MySQL 版本支持最新的 SSL/TLS 协议。如果可能的话,请升级到支持 TLS 1.3 的 MySQL 版本。

    4. 在配置文件中指定正确的 SSL/TLS 版本:在 MySQL 的配置文件中添加 SSL 选项,例如:

    SET GLOBAL ssl_ciphers = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256'
    
    1. 运行测试:最后,重新构建你的应用程序,并执行一些测试以确认问题已经得到解决。
    评论

报告相同问题?