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

Ubuntu 20.04安装MongoDB C驱动出现OpenSSL相关报错如何解决

问题根因

OSSL_HTTP_parse_url、SSL_get1_peer_certificate是OpenSSL 3.0及以上版本才提供的接口,Ubuntu 20.04官方源提供的OpenSSL 1.1.1f本身不包含这两个接口,出现该报错的核心原因通常为以下两种:

  • 系统中存在多版本OpenSSL混用,CMake检测时读取到了3.0版本的头文件,但链接阶段调用了1.1.1f的系统库,导致接口不匹配
  • 系统自带的官方OpenSSL安装包文件损坏,部分接口定义缺失
修复步骤

1. 清理非官方OpenSSL残留

优先排查是否存在手动编译安装的其他版本OpenSSL:

  • 执行以下命令检查/usr/local目录下的OpenSSL残留:
ls /usr/local/lib | grep -E 'libssl|libcrypto'
ls /usr/local/include | grep openssl

如果有匹配输出,说明存在手动编译的OpenSSL版本,删除对应文件即可:

rm -rf /usr/local/lib/libssl* /usr/local/lib/libcrypto*
rm -rf /usr/local/include/openssl
  • 更新系统动态库缓存:
ldconfig

2. 重装官方OpenSSL包

如果确认无多余版本残留,直接重装官方包修复损坏文件:

# 更新包索引
apt update
# 强制重装OpenSSL及对应的开发包
apt install --reinstall openssl libssl-dev

3. 重新编译MongoDB C驱动

清理之前的编译缓存后重新走安装流程:

# 进入你的libmongoc编译目录下的build文件夹
cd /path/to/libmongoc/build
# 删除所有旧编译产物
rm -rf *
# 重新执行编译安装
cmake ..
make -j$(nproc)
make install
验证环境一致性

修复完成后可执行以下命令确认OpenSSL头、库版本统一:

# 查看系统OpenSSL库版本
openssl version
# 查看头文件版本
grep "OPENSSL_VERSION_TEXT" /usr/include/openssl/opensslv.h

两者输出的版本号完全一致即代表环境正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:48:03