您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用自定义openssl版本编译python时的Coredump

使用自定义openssl版本编译python时的Coredump

How can I fix this, or at least investigate what is going on ?
...
export LDFLAGS='-L/data2/soft/openssl/lib -L/data2/local/lib/'
export LD_LIBRARY_PATH="/data2/soft/openssl/lib:/data2/local/lib/

我也经常遇到这些问题,因为我避免了Debian,Ubuntu,Fedora等发行的残废版本的OpenSSL。例如,Ubuntu附带了一个禁用TLSv1.1和TLS v1.2的OpenSSL(请参阅Ubuntu 12.04 LTS:OpenSSL降级版本,不支持TLS 1.2)。

您可能加载了错误版本的OpenSSL库。如果你能在调试器下得到了行为不端的程序,问题info shared,看看哪个libcryptolibssl你实际上是加载。

ldd可能也有帮助。在Pyhton可执行文件上运行它ldd /data2/soft/python3/python。我只能说它“可能”有所帮助,因为OpenSSL是二进制兼容的,因此您可能只会看到对它的依赖libcrypto.so.1.0.0(例如,otool -L在Mac OS X上使用)。在下面,我使用rpath强制链接到中的库/usr/local/ssl/lib/

$ ldd my-test.exe 
    linux-vdso.so.1 =>  (0x00007fffd61ff000)
    libssl.so.1.0.0 => /usr/local/ssl/lib/libssl.so.1.0.0 (0x00007f151528e000)
    libcrypto.so.1.0.0 => /usr/local/ssl/lib/libcrypto.so.1.0.0 (0x00007f1514e74000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1514c42000)
    ...

作为解决方法,您可以尝试添加rpath

LDFLAGS='-L/data2/soft/openssl/lib -L/data2/local/lib/ -Wl,-rpath,/data2/soft/openssl/lib'

更好的解决方法链接到OpenSSL库的静态版本,以避免所有这些问题。我相信你可以做到这一点:-Bstatic -lssl -lcrypto -Bdynamic -ldl

就个人而言,-Bstatic由于不同的一次性问题,我什至不使用。我打开Makefile,删除的所有实例-lssl-lcrypto,并向归档文件添加完整路径以消除所有歧义。例如/data2/soft/openssl/lib/libssl.a/data2/soft/openssl/lib/libcrypto.a

请注意rpathMac OS X上不支持an。MacOS X需要采取??更多极端措施,因为链接器也不支持-Bstatic。您必须使用完整路径技巧。

openssl was built with ./config shared --openssldir=/data2/soft/openssl

另一件事…在Fedora上,还不足以指定shared。您还需要添加以下内容

export CFLAGS="-fPIC"

否则,将不会构建共享库。如果未构建1.0.1f共享库,则可能是发行版提供的下层版本。您可以使用以下命令检查 安装 之前 构建的内容

./config shared --openssldir=/data2/soft/openssl
make all

# Verify artifacts
find . -iname -libcrypto.*
find . -iname -libssl.*

# Proceed if OK
sudo make install

最后,请确保 所有 Python的依赖项也都使用您的OpenSSL版本,而不是系统的OpenSSL版本。

我最近在我的程序使用OpenSSL时遇到了这个问题;但是我的程序也使用libeventlibevent使用了系统版本的OpenSSL。我通过重建libevent并强制将其静态链接到我的OpenSSL版本来修复它。

python 2022/1/1 18:38:26 有250人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶