1

共有ライブラリのデバッグバージョンを使用する必要があります(特に、Ubuntuにインストールされたlibpcap apt-get install libpcap0.8-dbg)...実行可能ファイルをビルドし、それに対してリンクすると、すべて動作します(で検証ldd)...しかし、実行可能ファイルを実行すると、 segfault...ダイナミック リンカがライブラリを読み込めません。を使用すると、それが空objdumpであることがわかります:Dynamic section

$objdump -p libpcap.so.1.1.1
...
Dynamic section:

$

ELF 共有オブジェクトでは、いくつかのフィールドが必須であると思いますDynamic section...では、なぜこのセクションが空なのですか? 正しくロードするための別の方法があるのでしょうか?

4

2 に答える 2

2

正直なところ、私は Ubuntu を使用していませんが、AFAIK デバッグ パッケージには完全なバージョンのライブラリやバイナリが含まれておらず、それらからデバッグ情報が取り除かれているだけです。これらは、eu-strip または同様のツールで切り取られたセクションです。それらに対してリンクしないでください。実際のところ、アプリを再リンクする必要はまったくありません。ツールが自分でそれを行うことができない場合は、実際のデバッグの前に gdb、valgrind、またはその他のデバッグ情報コンシューマーにそれらを読み取るように指示する必要があります。それだけです。

于 2012-11-25T17:39:28.803 に答える
0

で実行してみることができますLD_LIBRARY_PATH=/usr/lib/debug/

于 2012-11-16T17:53:18.107 に答える