MongoDB C 驱动程序在安装时出现关于 OpenSSL 的奇怪错误

MongoDB C driver gives strange error about OpenSSL while installing

当我尝试通过 CMake 安装 MongoDB C 驱动程序时,在编译过程中它给出了这样的错误:

我使用的是 Ubuntu 20.04,我的 OpenSSL 版本是 OpenSSL 1.1.1f,Ubuntu 说是最新的。我遵循 MongoDB's official C driver setup 上的指示。如果我的 OpenSSL 包以某种方式损坏,我该如何修复?

当我尝试使用来自 Docker 的 Ubuntu 20.04 图像并在容器上 运行 时,我可以使用相同的 OpenSSL 包编译它。

一般建议是:尽可能坚持使用默认值 (apt-get install libmongoc-1.0-0)。

不确定您要构建什么/如何构建,但根据 [OpenSSL]: SSL_get1_peer_certificate重点 是我的):

SSL_get0_peer_certificate() and SSL_get1_peer_certificate() were added in 3.0.0. SSL_get_peer_certificate() was deprecated in 3.0.0.

OSSL_HTTP_parse_url也是如此。

所以,你需要(更新的)OpenSSL 3.0(不知道为什么安装时没有指定URL)。
很可能你必须自己构建它 ([OpenSSL.Wiki]: Compilation and Installation) - 确保设置 --prefix=%OPENSSL30_INSTALL_DIR% 并将其 (%OPENSSL30_INSTALL_DIR%) 传递给 (libmongoc's) 配置工具。

我不知道为什么,但是使用 sudo 执行网站 (cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..) 上的 cmake 配置部分解决了这个问题。也许它让 CMake 找到了正确版本的 OpenSSL。我没有对 OpenSSL 执行任何更新。