私はUbuntu 14.04 LTSに取り組んでいます。
exec
からコンパイルされた実行可能ファイルがありますfile.c
。はfile.c
静的ライブラリの関数を利用します。たとえば、fubar()
で使用されているスタティック ライブラリの関数であるとしましょうfile.c
。これは私が気づいたことです。
nm exec | grep fubar
特定の値を与えます。
(私のシステムと実行可能ファイルの場合0808377f
)gdb ./exec
そしてbreak fubar
、異なる値を与えます。
(私のシステムと実行可能ファイルの場合0x8083785
)
別の実行可能ファイルに対して同様のことを行うと(exec1
からコンパイルされfile1.c
、両方のコマンドで同じ値が出力されます)。
どちらのコマンドも同じ仮想アドレスを出力するはずです。そうじゃない?私は明らかに何かが欠けています。誰かが正確に何が起こっているのか説明できますか? そして、両方のコマンドの違いは何ですか。