<ブロック引用>
Linux
既存のライブラリへのパスをカスタム パスに置き換えます
これがあなた自身のライブラリである場合、おそらく次のようにリンクします:
$ cc -o prog1 -l/full/path/to/libABC.so prog1.o
適切な代わりに:
$ cc -o prog1 -L/full/path/to/ -lABC prog1.o
最初のアプローチは、アプリケーションが正確にそのライブラリを必要とし、そのライブラリのみが必要であり、オーバーライドが不可能であることを Linux リンカに伝えます。 2 番目のアプローチは、システムのどこかにインストールされるライブラリがアプリケーションに必要であることを示します。デフォルトのライブラリ パスまたは $LD_LIBRARY_PATH (実行時に検索されます) で指定されたパスのいずれかにインストールされます。 -L はリンク時にのみ使用されます。
それ以外の場合は、ELF にパッチを適用する代わりに、シンボリック リンクを使用してライブラリを置き換えることができるかどうかを最初に確認してください。これは通常のトリックです:後で実行可能ファイルを変更するのは難しいですが、シンボリック リンク ポイントの場所を変更するのは非常に簡単です。
patchelf
あなたが望むものです
$ patchelf --replace-needed LIB_ORIGIN LIB_NEW ELF_FILE
効果を見るには
$ readelf -d ELF_FILE
ツールのインストールは簡単です:
$ sudo apt-get install patchelf readelf