当我试图通过MongoDB安装CMake 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"我在Ubuntu20.04上,我的OpenSSL版本是OpenSSL 1.1.1f,Ubuntu说它是最新的。我在MongoDB的官方C驱动程序设置上遵循方向。如果我的OpenSSL包不知怎么坏了,我该如何修复呢?
当我尝试使用来自Docker的Ubuntu20.04映像并在容器上运行它时,我可以用同一个OpenSSL包很好地编译它。
发布于 2021-10-25 20:51:57
我不知道为什么,但是在网站(cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..)上用sudo执行cmake配置部分解决了这个问题。也许它让CMake找到了正确的OpenSSL版本。我没有在OpenSSL上执行任何更新。
发布于 2021-10-15 09:20:06
一般的建议是:只要有可能,就坚持使用默认值(apt-get install libmongoc-1.0-0)。
不确定您正在尝试构建什么/如何构建,但根据证书 (是我的):
SSL_get0_peer_certificate()和SSL_get1_peer_certificate()添加在3.0.0中。SSL_get_peer_certificate()在3.0.0中被否决。
OSSL_HTTP_parse_url也是如此。
因此,您需要(更新的) OpenSSL 3.0 (不知道为什么没有在安装URL中指定)。
很可能您必须自己构建它( --prefix=%OPENSSL30_INSTALL_DIR% )--确保设置它并将它(%OPENSSL30_INSTALL_DIR%)传递给(libmongoc的)配置工具。
https://stackoverflow.com/questions/69581227
复制相似问题