OpenSSLが error while loading shared libraries libssl.so.1.1
提供: セキュリティ
スポンサーリンク
OpenSSL が ./apps/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory とエラーを出すので解決した話をまとめます。
読み方
- OpenSSL
- おーぷん えすえすえる
概要
前提ですが、 Windows の WSL の Ubuntu の環境で、 github から取得した OpenSSL コマンドをソースコードからビルドしたときに、下記のエラーに遭遇しました。ビルドしただけで、インストールもしていません。
./apps/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
なぜエラーが出るのか
プログラムを実行するときに、サーチパスから シェアードオブジェクトを検索します。 自分でビルドした OpenSSL を ldd で調べてみると libssl.so.1.1 を要求していることがわかりますが、 not found になってます。
ldd ./apps/openssl linux-vdso.so.1 => (0x00007fffc089b000) libssl.so.1.1 => not found libcrypto.so.1.1 => not found libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4da6640000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4da6260000) /lib64/ld-linux-x86-64.so.2 (0x00007f4da6a00000)
libssl.so.1.1 はそもそも存在するのか?
github からもってきたソースコードをビルドしたディレクトリに libssl.so.1.1 はありました。
$ find . -name 'libssl.so.1.1' ./libssl.so.1.1
つまり、自分でビルドした openssl コマンドに必要な libssl.so も一緒にビルドされていたということです。 自分でビルドした openssl や libssl.so はインストールしていないので、一般的なサーチパスの場所には入っていないので、 libsso.so がない (not found) と言われるのも、もっともだ、ということです。
対応方法
対応方法は、いくつかあると思います。
- 自分でビルドした openssl をインストールする
- LD_LIBRARY_PATH を指定して、openssl コマンドに、libsso.so のある場所を教えてあげる
- ldconfig に自分の libsso.so の場所を指定してしまう
環境に変更なく、テスト的な意味でやりたいのであれば、 LD_LIBRARY_PATH を指定するのが一番簡単な方法でしょう。
$ echo hoge | env LD_LIBRARY_PATH=. ./apps/openssl md5 (stdin)= c59548c3c576228486a1f0037eb16a1b
関連項目
ツイート
スポンサーリンク