![如何将python链接到手动编译的OpenSSL而不是系统的OpenSSL](https://linux22.com/image/1567263/%E5%A6%82%E4%BD%95%E5%B0%86python%E9%93%BE%E6%8E%A5%E5%88%B0%E6%89%8B%E5%8A%A8%E7%BC%96%E8%AF%91%E7%9A%84OpenSSL%E8%80%8C%E4%B8%8D%E6%98%AF%E7%B3%BB%E7%BB%9F%E7%9A%84OpenSSL.png)
我需要手动从源代码编译 OpenSSL。我使用 Ubuntu 18。Ubuntu 18 附带的 OpenSSL 不支持我需要的特定密码。但如果我手动编译 OpenSSL,则可以启用它。我发现这个手动的。但是,我如何链接 python ssl 来使用手动安装的 OpenSSL 而不是操作系统的 OpenSSL?
答案1
您无法重新链接现有的 Python 安装,需要从源代码构建另一个 Python 发行版。构建 Python 时,您需要调整CPPFLAGS
、LDFLAGS
和LD_LIBRARY_PATH
环境变量。假设您在 中安装了自定义 OpenSSL /path/to/openssl
:
$ cd /path/with/Python/sources/unpacked/
$ export LDFLAGS="-L/path/to/openssl/lib/ -L/path/to/openssl/lib64/"
$ export LD_LIBRARY_PATH="/path/to/openssl/lib/:/path/to/openssl/lib64/"
$ export CPPFLAGS="-I/path/to/openssl/include -I/path/to/openssl/include/openssl"
$ ./configure --prefix=/path/to/custom/python/
$ make
$ make install
现在 Python/path/to/custom/python/
将使用自定义的 OpenSSL:
$ /path/to/custom/python/bin/python -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 1.1.0h 27 Mar 2018