2011-12-20 41 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