You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20虚拟机安装Thrift 0.8.0 configure报错libcrypto required解决方案

故障根因

Thrift 0.8.0 版本发布时间较早,仅适配 OpenSSL 1.0.x 及更早版本。Ubuntu 20.04 系统默认预装的是 OpenSSL 1.1.x 版本,该版本移除了旧版 BN_init 接口(替换为 BN_new),因此 configure 检测阶段无法匹配到对应符号,即便安装了 libssl-dev 包也会触发 libcrypto 缺失报错。

可行解决方案

方案1:补丁适配(推荐,无需改动系统依赖)

直接修改 Thrift 0.8.0 源码的适配逻辑,兼容高版本 OpenSSL:

  • 进入 Thrift 0.8.0 源码根目录,执行全局替换命令,把所有 BN_init 调用替换为新版兼容的 BN_new:
sed -i 's/BN_init/BN_new/g' configure
sed -i 's/BN_init/BN_new/g' lib/cpp/src/thrift/transport/TSSLSocket.cpp
  • 调整 configure 命令,删除无效的 -DMINGW 编译参数(该参数仅用于编译 Windows 平台程序,Ubuntu 原生编译无需添加),Ubuntu 20.04 系统默认 libssl 头文件和库路径无需指定到 /usr/local/ssl,正确命令参考:
LDFLAGS='-L/usr/lib/x86_64-linux-gnu -ldl' CPPFLAGS='-I/usr/include' ./configure --prefix=/usr/local/thrift --with-php --with-boost=/usr/local/boost
  • 后续正常执行 make && make install 即可完成安装。

方案2:安装独立的旧版 OpenSSL

如果补丁适配后仍有兼容性问题,可单独编译安装 OpenSSL 1.0.x 版本到独立路径,不影响系统默认 OpenSSL:

  • 下载 OpenSSL 1.0.2u 源码并编译安装到 /opt/openssl-1.0.2 路径:
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz
tar zxf openssl-1.0.2u.tar.gz && cd openssl-1.0.2u
./config shared --prefix=/opt/openssl-1.0.2
make && make install

注意:不要替换系统默认的openssl版本,否则会导致ssh、apt等系统核心工具无法正常运行

  • 编译 Thrift 时指定该旧版 OpenSSL 路径即可:
LDFLAGS='-L/opt/openssl-1.0.2/lib -ldl' CPPFLAGS='-I/opt/openssl-1.0.2/include' ./configure --prefix=/usr/local/thrift --with-php --with-boost=/usr/local/boost
  • 运行 Thrift 时若提示找不到 libcrypto 库,可临时添加环境变量:export LD_LIBRARY_PATH=/opt/openssl-1.0.2/lib:$LD_LIBRARY_PATH

方案3:升级 Thrift 版本

如果没有强制使用 Thrift 0.8.0 的特殊需求,建议升级到 Thrift 0.10.0 及以上版本,原生适配 OpenSSL 1.1.x,无需任何修改即可正常编译安装。

内容的提问来源于stack exchange,提问作者math geek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:36:03