MongoDB C 驱动程序在安装时出现关于 OpenSSL 的奇怪错误
MongoDB C driver gives strange error about OpenSSL while installing
当我尝试通过 CMake 安装 MongoDB C 驱动程序时,在编译过程中它给出了这样的错误:
libmongoc-1.0.so.0.0.0: undefined reference to "OSSL_HTTP_parse_url"
libmongoc-1.0.so.0.0.0: undefined reference to "SSL_get1_peer_certificate"
我使用的是 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 执行任何更新。
当我尝试通过 CMake 安装 MongoDB C 驱动程序时,在编译过程中它给出了这样的错误:
libmongoc-1.0.so.0.0.0: undefined reference to "OSSL_HTTP_parse_url"
libmongoc-1.0.so.0.0.0: undefined reference to "SSL_get1_peer_certificate"
我使用的是 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 执行任何更新。