我已将 android linux 内核从 gzip 标头中拆分出来并解压缩。但是,当我尝试从 android ndk 执行 objdump 以转储文件时,我收到文件格式无法识别错误。
任何人都知道如何从二进制图像中获取符号表。
在我的 android 设备上,我可以执行以下操作来获取符号表:cat /proc/kallsyms
我已将 android linux 内核从 gzip 标头中拆分出来并解压缩。但是,当我尝试从 android ndk 执行 objdump 以转储文件时,我收到文件格式无法识别错误。
任何人都知道如何从二进制图像中获取符号表。
在我的 android 设备上,我可以执行以下操作来获取符号表:cat /proc/kallsyms
这不是 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 (thomas@celeste.mandriva.com) #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
内核 ELF 二进制文件包装在压缩容器中并添加一组引导和解压缩实用程序来创建的。如果您需要内核映像进行调试。该vmlinux
文件是您需要的 - 我不知道它是否/存在于 Android NDK 中。
尝试使用nm。
$ nm path/to/someobj