Solaris Elfedit:Linuxに似たようなものはありますか? (共有ライブラリエディター)?
-
24-09-2019 - |
質問
Linux:コンパイルされた共有ライブラリを編集する方法はありますか?
具体的には、追加する方法を検索しています DT_SYMBOLIC flag
すでにコンパイルされたバイナリ共有ライブラリで?
これが私がこれを求めている理由です:
当社のアプリケーションは構成されています
- 私たち自身のライブラリ(静的 libxxx.a)
- いくつかのサードパーティLibs(バイナリのみの共有 ライブラリlibyyy.so)
これまでのところ、アプリケーションではすべて問題ありません。
今、私は私たち自身を置き換えました 静的* libxxx.a共有ライブラリバージョンを備えたライブラリ(libxxx.so)。
すべてが正常にコンパイルしてリンクします。
しかし、アプリケーションを実行すると、起動して予想される処理が多くなり、半分の方法でクラッシュします。 GDBバックトレースは、クラッシュがサードパーティの共有ライブラリの一部で発生することを示しています。
私はSOFを検索して、興味深い記事を見つけました ここ.
私が言及しているヒントはです
... add the DT_SYMBOLIC flag to the dynamic section ...
私はそれが本当に助けになるとは思わないが、試してみる価値があるかもしれないと思う。
どのように私が追加できるか DT_SYMBOLIC flag
すでに編集/リンクされている共有ライブラリで?
環境: :G ++ V4.2.4およびBinutils V20を備えたDebian Lenny 64ビット。
編集: :solarisには、呼ばれるプログラムがあります elfedit
. 。 Linuxに似たものはありますか?
解決
一方、Lは呼ばれるツールを見つけました elfsh
. 。これは、ELFオブジェクト、バイナリ、共有ライブラリを調べて編集するためのインタラクティブなシェルです。
プロジェクトページについては、こちらをご覧ください。 http://www.eresi-project.org
残念ながら、それはあまり安定していないようです。私は多くのクラッシュを経験しました elfsh
自体。
他のヒント
それが単なる旗の場合、痛みを伴うアプローチは、HEXエディターでELFヘッダーを微調整することです。
しかし、サードパーティのLIBがクラッシュしている場合、私は個人的に物事の反対側を見ています。
Ldd
と
ld_debug = libsをエクスポートします
あなたの友達はここにいますか。
ランタイムローダーがロードされた後に共有Libsをinging libs()dlopen()3パーティのライブで十分かもしれません。