以下のように、必要な同伴共有ライブラリが失敗するのはなぜですか?

以下のように、必要な同伴共有ライブラリが失敗するのはなぜですか?

Debianプログラムは通常共有ライブラリ/依存関係に遅れがあるため、資格のある共有ライブラリと組み合わせて使用​​すると機能する必要があります。つまり、Archプログラム/パッケージなど、OSのローリング/クイックアップデートに基づいて同じ最新のアップデートを使用できます。

したがって、すべてのパッケージファイルをDebian OS自体にコピーしてください。たとえば、プログラムは次のようになります。光明ドットコム、その部門。にコピー/usr/local/lib

しかし、それを必要とする同伴共有ライブラリがこのように失敗するのはなぜですか?

$ LD_LIBRARY_PATH=/usr/local/lib xbright =5

xbright: relocation error: /usr/local/lib/libc.so.6: symbol _dl_audit_symbind_alt version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference

良い情報でクリア、失敗

$ xbright =5
  xbright: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by xbright)

助けてください。期待どおりに機能させるにはどうすればよいですか?

答え1

動的リンカーもCライブラリの一部であるため、コピーする必要があります。/lib64/ld-linux-x86-64.so.2Archが指している場所を確認してコピーし、次を実行して/usr/local/lib正しく機能していることを確認します。

LD_LIBRARY_PATH=/usr/local/lib /usr/local/lib/ld-2.34.so xbright =5

ld-2.34.so適切な名前に変更してください)。

以下を使用して、デフォルトでこのインタプリタを使用するようにバイナリを設定できますpatchelf

patchelf --set-interpreter /usr/local/lib/ld-2.34.so /usr/local/bin/xbright

常に設定する必要がないように設定することもRPATHできます。xbright/usr/local/libLD_LIBRARY_PATH

patchelf --set-rpath /usr/local/lib /usr/local/bin/xbright

関連情報