Linux:コンパイルされた共有ライブラリを編集する方法はありますか?
DT_SYMBOLIC flag
具体的には、コンパイル済みのバイナリ共有ライブラリにを追加する方法を探していますか?
これが私がこれを求めている理由です:
私たちのアプリケーションはで構成されています
- 独自のライブラリ(静的libXXX.a)
- 一部のサードパーティライブラリ(バイナリのみの共有ライブラリlibYYY.so)
これまでのところ、アプリケーションはすべて問題ありません。
これで、独自の静的* libXXX.aライブラリを共有ライブラリバージョン(libXXX.so)に置き換えました。
すべてが正常にコンパイルおよびリンクされます。
しかし、今アプリケーションを実行すると、アプリケーションが起動し、予想される多くの処理を実行します。その後、途中でクラッシュします。gdbバックトレースは、クラッシュが一部のサードパーティ共有ライブラリで発生することを示しています。
私はSOFを検索して、ここで興味深い記事を見つけました。
私が言及しているヒントは
... add the DT_SYMBOLIC flag to the dynamic section ...
それが本当に役立つとは思えませんが、試してみる価値があると思います。
DT_SYMBOLIC flag
すでにコンパイル/リンクされている共有ライブラリにを追加する方法はありますか?
環境:g++v4.2.4およびbinutilsv20を使用したdebianlenny64ビット。
編集:solarisには。と呼ばれるプログラムがありelfedit
ます。Linuxに似たものはありますか?