在客户的 Linux 上查找 libssl

在客户的 Linux 上查找 libssl

我们正在使用一个需要加载libssl版本的库1.0.*。它不适用于libssl.so.1.1.我们需要它在任何 Linux 系统上工作。

我们尝试加载各种版本,这通常有效,但在一个客户的系统上只有以下内容:

/usr/lib64/libssl.so.1.1.0g
/usr/lib64/libssl.so.10
/usr/lib64/libssl.so.1.0.2m
/usr/lib64/libssl.so.1.1

我们正在尝试加载libssl.so.1.0and ,但由于尾随“ ”libssl.so.1.0.2而找不到。libssl.so.1.0.2mm

我想知道 libssl 的命名方案是什么(如果有的话)?

我们真的需要提供我们自己的版本还是有更好的方法?

我们应该从libssl.so.1.0.2z下循环到 吗libssl.so.1.0.2a?我们应该手动扫描库路径吗?

答案1

我不确定你是如何打开的libssl- 我想dlopen()

在硬编码的目录路径列表中搜索库听起来相当脆弱 - 您最好让动态链接器为您完成这项工作。也许解析 的输出ldconfig -p值得尝试?在 Debian 系统上,我看到以下内容:

$ ldconfig -p|grep ssl
libssl.so.1.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.1
libssl.so.1.0.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2

在 RHEL 7.4 系统上:

$ ldconfig -p|grep ssl
libssl3.so (libc6,x86-64) => /lib64/libssl3.so
libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10

请注意,在 Debian 系统上,库位于 中/usr/lib/x86_64-linux-gnu,而在 RHEL 系统上,库位于 中/lib64(另请注意库名称差异很大)。除非您使用类似于 的输出的内容ldconfig,否则如果您打算“在任何 Linux 系统上工作”,则必须自己搜索所有这些特定于发行版的路径。诚然,目录路径已列出,/etc/ld.so.conf但我认为使用ldconfig可能仍然更容易。

相关内容