2011-12-20 7 views
2

私はアンドロイドのLinuxカーネルをgzipヘッダーから分割して解凍しました。しかし、私はアンドロイドndkからファイルをダンプするobjdumpをしようとすると、私はエラーが認識されないファイル形式を取得しています。アンドロイドカーネルのobjdump

誰でも、バイナリイメージからシンボルテーブルを取得する方法を知っています。 猫の/ proc/kallsyms

答えて

3

これはAndroidに固有のものではなく、ほとんどの(すべての)Linuxシステムで発生します。

# file /boot/vmlinuz-2.6.38.7-desktop-1mnb2 
/boot/vmlinuz-2.6.38.7-desktop-1mnb2: Linux kernel x86 boot executable bzImage, version 2.6.38.7-desktop-1mnb2 ([email protected]) #1 SMP Sun, RO-rootFS, root_dev 0x902, swap_dev 0x3, Normal VGA 
# nm /boot/vmlinuz-2.6.38.7-desktop-1mnb2 
nm: /boot/vmlinuz-2.6.38.7-desktop-1mnb2: File format not recognized 

ブート可能なイメージが圧縮容器内vmlinux kernel ELF binaryをラップし、ブートおよび解凍ユーティリティのセットを追加することによって作成された:(アンドロイドが基づいている)は、Linuxカーネルのブート可能な画像は、適切なELFバイナリではありません。デバッグのためにカーネルイメージが必要な場合。 vmlinuxファイルが必要です - Android NDKに存在するかどうかわかりません。

1

nmを使用してみてください:私はシンボルテーブルを取得するには、次の操作を行うことができ、私のAndroidデバイス上で

$ nm path/to/someobj 
+0

'nm'と' objcopy'はともにバックエンドとして 'binutils'から' libbfd'を使います。結果は同じだろう... – thkala

関連する問題