2011-12-20 79 views
2

我已经采取Android的Linux内核从gzip标题拆分它并解压缩它。然而,当我尝试从android ndk做一个objdump转储文件时,我得到一个文件格式无法识别的错误。在Android内核objdump

任何人都知道如何从二进制图像中获取符号表。

在我的Android设备,我可以做以下得到一个符号表: 执行cat/proc/kallsyms

回答

3

这不是Android独有的 - 它发生在大多数(所有?)Linux系统上。 Linux内核(其上Android是基于)的引导图像不是正确ELF二进制:

# 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并添加一组引导和解压缩实用创建。如果您需要用于调试的内核映像。 vmlinux文件就是你所需要的 - 不过我不知道它是否存在于Android NDK中。

1

尝试使用nm

$ nm path/to/someobj 
+0

'nm'和'objcopy'都使用'binutils'中的'libbfd'作为它们的后端。结果将是相同的... – thkala 2011-12-20 18:20:52