Linux
在客戶的 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.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 系統上,我看到以下內容:$ 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
可能更容易。