お客様の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.0ロードしようとしていますが、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-gnuRHELシステムではライブラリがにあります/lib64(ライブラリ名も非常に異なります)。の出力などを使用しないldconfig限り、「すべてのLinuxシステムで作業する」場合は、これらの配布固有のすべてのパスを直接検索する必要があります。もちろん、ディレクトリパスがリストされていますが、おそらくまだ使いやすいと/etc/ld.so.conf思います。ldconfig

おすすめ記事