Linux

在客戶的 Linux 上查找 libssl

  • February 1, 2018

我們正在使用一個需要載入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.2m``m

我想知道 libssl 的命名方案是什麼,如果有的話?

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

我們應該從libssl.so.1.0.2zdown 循環到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可能更容易。

引用自:https://unix.stackexchange.com/questions/421153