我在我的x86 Linux上爲嵌入式系統(mipsel)提供了一個交叉編譯工具鏈。我知道如何建立一個定製的內核(我們稱之爲形象「的vmlinux」),它和如何通過確定加載地址和剝離的Linux內核映像的入口點
objcopy -S -O binary vmlinux vmlinux.bin
作進一步處理我還需要圖像的加載地址和切入點剝離的形象。 之前剝離就沒有問題通過scripts/mksysmap
,或者更明確地確定它們,通過
nm -n vmlinux | grep -v '\([aNUw] \)\|\(__crc_\)\|\(\$[adt]\)' > System.map
然後我能確定通過
awk '/A _text/ { print "0x"$1; }' < _System.map
awk '/T kernel_entry/ { print "0x"$1; }' < System.map
加載地址和切入點,現在的挑戰是,有時我不是自己構建內核,而是在之後通過objcopy獲取預構建的內核。任何人都可以告訴我如何做到這一點?我不擅長內核構建和工具鏈使用。既納米和objdump的不喜歡剝離圖像,稱
vmlinux.bin: File format not recognized
遲到謝謝你的回答。不幸的是,我沒有通過電子郵件得到有關答案的通知,抱歉。實際上,我設法找到另一種方法來找出加載地址和入口點,但我的解決方案是針對特定情況的,不能一般適用,所以我在此不引用它。 我只想說你提出的解決方案確實會創建一個ELF文件,但該文件不包含所需的重定位信息。因此,信息不能通過'nm -n'從中提取。 無論如何感謝您的回答。 – kriegaex 2012-06-12 12:19:02