64ビットRHELで32ビットコンパイルされた共有オブジェクト(.so)ファイルを使用する方法は?

64ビットRHELで32ビットコンパイルされた共有オブジェクト(.so)ファイルを使用する方法は?

RHEL 6.4でコンパイルされた32ビットアプリケーションには、共有オブジェクトファイルlibfault.soがあります。アプリケーションの起動時にこのファイルをプリロードしたいと思います。私はそれを/usr/local/lib/ディレクトリに置きました。

ただし、アプリケーションの起動中に次のエラーが発生します。

ERROR: ld.so: object 'libfault.so' from LD_PRELOAD cannot be preloaded: ignored.

ただし、libfault.soを64ビットにコンパイルして/usr/local/lib64/に配置すると、エラーは発生しません。しかし、私のアプリケーションは32ビット用にコンパイルされたため、ファイルは期待した機能を実行しません。

ベストアンサー1

ロードするライブラリを探すときは、環境変数を使用して動的$LD_LIBRARY_PATHローダーの検索パスをオーバーライドできます。

単一のアプリケーションに対してこの操作を一時的に実行するには、次のように呼び出すことができます。

$ LD_LIBRARY_PATH=/usr/local/lib <your executable here>

この変数をエクスポートすると、シェルインスタンスをより恒久的に変更できます。

$ export LD_LIBRARY_PATH=/usr/local/lib

32ビット.soストレージの場所に対応できるように、必要に応じて上記のパスを調整します。

おすすめ記事