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
ロードしようとしていますが、libssl.so.1.0.2
後に続く " "のために見つかりません。libssl.so.1.0.2m
m
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