./python:加载共享库时出错:libssl.so.1.1:无法打开共享对象文件:没有这样的文件或目录

2023-11-23

我需要在 Ubuntu 16.04 中尝试使用 openssl-1.1.1 的 python 3.7。 python 和 openssl 版本都是预发布的。遵循有关如何统计地将 openssl 链接到 python 的说明以前的帖子,我下载了源代码openssl-1.1.1。 然后导航到 openssl 的源代码并执行:

./config
sudo make
sudo make install

然后,编辑Modules/Setup.dist取消注释以下行:

SSL=/usr/local/ssl
_ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto

然后下载蟒蛇3.7源代码。然后,导航到源代码并执行:

./configure
make
make install

我执行后make install我在终端输出末尾收到此错误:

./python: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
generate-posix-vars failed
Makefile:596: recipe for target 'pybuilddir.txt' failed
make: *** [pybuilddir.txt] Error 1

我不知道问题是什么以及我需要做什么。


这与(应该)无关Python or OpenSSL版本。

Python构建过程,包括启动新构建的解释器时的一些步骤,并尝试加载一些新构建的模块 - 包括扩展模块(写在C实际上是共享对象 (.sos)).

When an .so加载后,加载器必须(递归地)找到所有.so文件.so需要(取决于),否则无法加载。

Python有一些模块(例如_ssl*.so, _hashlib*.so)取决于OpenSSL libs。自从你建立了你的OpenSSL1.1.1 (the lib名称与系统默认的名称不同:通常1.0.*),加载器将无法使用默认的。

您需要做的是指示加载程序(检查[Man7]:LD.SO(8)了解更多详情)在哪里寻找“您的”OpenSSL libs(位于/usr/local/ssl/lib)。一种方法是将他们的路径添加到${LD_LIBRARY_PATH} env var(在建造之前Python):

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/ssl/lib
./configure
make
make install

您可能还想看看[Python.Docs]:配置 Python - 库选项 (--with-openssl, --with-openssl-rpath).

值得一读(可能):

  • [SO]:如何为Python打包的libcrypto和libssl启用FIPS模式? (@CristiFati 的回答)

  • [SO]:如何使用 SSL 在 RHEL 上编译 python3? SSL无法导入(@CristiFati的回答)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

./python:加载共享库时出错:libssl.so.1.1:无法打开共享对象文件:没有这样的文件或目录 的相关文章

随机推荐