問題:libssl.so.1.0.0
と libcrypto.so.1.0.0
利用可能なバージョン情報がありません警告/エラー。
多くの調査、時間と労力を費やした後 (数週間かかりました)、最終的に私がやったことは次のとおりです...
自分のバージョンの openssl 1.0.1h のソース コードを抽出したディレクトリに (他のバージョンでも動作するはずです)、openssl.ld
というファイルを作成します。
このファイルにこれを入れてください...
OPENSSL_1.0.0 {
global:
*;
};
保存してください。入力してください...
make clean
(確実に新しく始めるためです。)
さて、本当に気が遠くなるような部分です...
./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions
それから...
make
make test
make install
ldconfig
これで問題は解決するはずです (とても簡単です。パッチを適用する必要はありません)。
このソリューションを 32 ビット バージョンと 64 ビット バージョンの両方の Debian Wheezy に適用しました。そして、観察を行いました。 64 ビット バージョンは自動的に新しい libssl.so.1.0.0
にデフォルト設定されます と libcrypto.so.1.0.0
/usr/local/lib
で作成されるファイル ディレクトリ。 32 ビット版にはありません。そのため、最初は Debian Wheezy の 32 ビット バージョンではこの問題は発生しないと考えていましたが、32 ビット バージョンを取得して /usr/local/lib
で新しい openssl ライブラリを使用すると問題が発生します。 dir.
ldd
の使用 バイナリが使用しているライブラリをテストするコマンドは、これを理解する上でも非常に貴重でした.
<ブロック引用>
openssl をコンパイルしてインストールしました。その後、apt-get で ssh をインストールしました。
これらはおそらく OpenSSL の 2 つの異なるバージョンです。 1.0.0 は 1.0.1、1.0.2 などとバイナリ互換であるため、おそらく問題ありません (ただし、1.1.0 とはバイナリ互換ではありません)。
あなたの ssh
おそらく /usr/lib/x86_64-linux-gnu/
のバージョンの OpenSSL を使用しています . LD_PRELOAD
を使用する必要があります OpenSSL のバージョンが使用されていることを確認します (もちろん、バイナリ互換性があることを前提としています)。
LD_PRELOAD
を使用したくない場合 友達と、ssh
をビルドします。 ソースから。必ず rpath
を指定してください リンカーがシステムのバージョンではなく、OpenSSL のバージョンを使用するようにします。つまり、あなたの LDFLAGS
-Wl,-rpath,<path to your openssl>
のようなものを含める必要があります .これは、通常の -lcrypto
に加えて 、 -lssl
と -L<path to your openssl>
.
Mac OS X を使用している場合は、-Bstatic
などのリンカー オプションを使用することをお勧めします。 および -rpath
黙って無視されます。 OS X は 0.9.8 を提供するため、互換性のないバイナリが原因で不可解なクラッシュが発生します。
バージョン情報がありません
バージョン情報がないのでわかりません。 ssh
OPENSSL_VERSION_NUMBER
のいずれかを使用できます コンパイル時または SSLeay
/SSLeay_version
実行時に。 OPENSSL_VERSION_NUMBER(3)
を参照 詳細はこちら
このエラーを修正する方法は?
おそらく私の読み違いかもしれませんが、投稿のどこにもエラーは見当たりません。