共有ライブラリリンク時間参照再配置エラー

共有ライブラリリンク時間参照再配置エラー

私はARMシステムでカスタマイズされたÅngströmベースのLinuxディストリビューションを使用しています。パッケージマネージャで見つかったすべてのパッケージが最新バージョンではなかったため、いくつかの例外を除いて、見つかったすべてのソフトウェアを再構築しました。今、すべてのソフトウェアが最新です。通常、すべてがうまく機能しますが、インストールされているソフトウェアを更新する際にいくつかの問題があります。

たとえば、以前はOpenSSL 1.0.2lを使用し、最近はOpenSSL 1.0.2nをビルドしてインストールしました。ビルドとインストールプロセスはスムーズに行われましたが、OpenSSL共有ライブラリを使用しているアプリケーションの一部が機能しなくなるのは残念です。私が気づいたものにはカールとPHPが含まれます。以下は、影響を受けるアプリケーションの例です。

$ curl
curl: try 'curl --help' for more information
curl: relocation error: /usr/lib/libcurl.so.4: symbol SSL_COMP_free_compression_methods, version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference

私はBeyond Linux from Scratchの指示に従ってOpenSSL 1.0.2n(およびそれ以前の1.0.2l)を構築しました(ここ)。これには、パッチファイルをldスクリプトに適用してバージョン管理情報を追加することが含まれます。影響を受けるプログラムのエラーメッセージに記載されているすべての記号はパッチによって追加されたため、パッチが何か問題を引き起こしたと疑われます。

影響を受けた各プログラムを再構築すると、エラーが解決される可能性があることがわかりました。たとえば、インストールされた新しいバージョンのOpenSSL(最新バージョンも利用可能)を使用してカールを再構築しましたが、カールが機能します。影響を受けたすべてのプログラムを再構築することを望んでいますが、これは当初共有ライブラリを使用する目的を完全に崩壊させると思いました。

このバグはBLFSページに表示されるパッチが原因で発生しますか?パッチなしでOpenSSLを再構築し、OpenSSLに依存するプログラムを再構築すると、後でOpenSSLアップデートがある場合は依存プログラムを再構築する必要がなくなりますか?

関連情報