我们正在使用一个需要加载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.0
and ,但由于尾随“ ”libssl.so.1.0.2
而找不到。libssl.so.1.0.2m
m
我想知道 libssl 的命名方案是什么,如果有的话?
我们真的需要提供我们自己的版本还是有更好的方法?
我们应该从libssl.so.1.0.2z
down 循环到libssl.so.1.0.2a
吗?我们应该手动扫描库路径吗?
我不知道你是怎么打开的
libssl
——我猜dlopen()
?在硬编码的目录路径列表中搜索库听起来相当脆弱——最好让动态链接器为您完成工作。也许解析的输出
ldconfig -p
值得尝试?在 Debian 系统上,我看到以下内容:在 RHEL 7.4 系统上:
请注意,在 Debian 系统上,库位于 中
/usr/lib/x86_64-linux-gnu
,而在 RHEL 系统上,库位于/lib64
(还要注意广泛变化的库名称)。除非您使用类似的输出,否则ldconfig
如果您打算“在任何 Linux 系统上工作”,您将不得不自己搜索所有这些特定于发行版的路径。诚然,目录路径已列出,/etc/ld.so.conf
但我认为使用ldconfig
可能更容易。