您的位置 首页 观点

Arm结构下 kernel是怎么编译出zImage的。

make-fscripts/Makefile.buildobj=arch/arm/bootMACHINE=arch/arm/mach-s3c6400/arch/arm/boot/zImage先是将vm

make -f scripts/Makefile.build obj=arch/arm/boot MACHINE=arch/arm/mach-s3c6400/ arch/arm/boot/zImage

先是将vmlinux的某些段去掉了,生成了Image,比方.comment。

arm-linux-objcopy -O binary -R .note -R .note.gnu.build-id -R .comment -S vmlinux arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready

然后用gzip紧缩Image,成为piggy.gz。

gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz
GZIP arch/arm/boot/compressed/piggy.gz

这个生成piggy.o这么长?先是从piggy.S编译出来一个piggy.o。

arm-linux-gcc -Wp,-MD,arch/arm/boot/compressed/.piggy.o.d -nostdinc -isystem

/home/wyang2/test/usr/local/arm/4.4.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/include -D__KERNEL__-Iinclude-I/home/wyang2/test/linux-2.6.28.6/arch/arm/include -include include/linux/autoconf.h -mlittle-endian

-Iarch/arm/mach-s3c6400/include-Iarch/arm/mach-s3c6410/include-Iarch/arm/plat-s3c64xx/include

-Iarch/arm/plat-s3c/include -D__ASSEMBLY__ -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=6 -march=armv6k -mtune=arm1136j-s -msoft-float -gdwarf-2 -Wa,-march=all -c -o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/piggy.S

AS arch/arm/boot/compressed/piggy.o

话说我一向没找到piggy.o和piggy.gz的联系,本来在piggy.S文件里边。它把整个piggy.gz包括进去了,放肆啊。

.section .piggydata,#alloc

.globl input_data

input_data:

.incbin “arch/arm/boot/compressed/piggy.gz”

.globl input_data_end

input_data_end:
下面是编译head.o, 没有看出有什么特别的当地
arm-linux-gcc -Wp,-MD,arch/arm/boot/compressed/.head.o.d -nostdinc -isystem

/home/wyang2/test/usr/local/arm/4.4.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/include -D__KERNEL__
-Iinclude -I/home/wyang2/test/linux-2.6.28.6/arch/arm/include -include include/linux/autoconf.h
-mlittle-endian -Iarch/arm/mach-s3c6400/include -Iarch/arm/mach-s3c6410/include -Iarch/arm/plat-s3c64xx/include
-Iarch/arm/plat-s3c/include -D__ASSEMBLY__ -mabi=aapcs-linux -mno-thumb-interwork
-D__LINUX_ARM_ARCH__=6 -march=armv6k -mtune=arm1136j-s -msoft-float -gdwarf-2 -Wa,-march=all
-c -o arch/arm/boot/compressed/head.o arch/arm/boot/compressed/head.S
AS arch/arm/boot/compressed/head.o

下面是编译misc.o这个老长了
arm-linux-gcc -Wp,-MD,arch/arm/boot/compressed/.misc.o.d -nostdinc -isystem

/home/wyang2/test/usr/local/arm/4.4.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/include

-D__KERNEL__ -Iinclude -I/home/wyang2/test/linux-2.6.28.6/arch/arm/include

-include include/linux/autoconf.h -mlittle-endian -Iarch/arm/mach-s3c6400/include

-Iarch/arm/mach-s3c6410/include -Iarch/arm/plat-s3c64xx/include -Iarch/arm/plat-s3c/include

-Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common

-Werror-implicit-function-declaration -Os -marm -fno-omit-frame-pointer -mapcs -mno-sched-prolog
-mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=6 -march=armv6k -mtune=arm1136j-s
-msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -fno-omit-frame-pointer

-fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -fpic -fno-builtin -Dstatic=

-D”KBUILD_STR(s)=#s” -D”KBUILD_BASENAME=KBUILD_STR(misc)” -D”KBUILD_MODNAME=KBUILD_STR(misc)”

-c -o arch/arm/boot/compressed/misc.o arch/arm/boot/compressed/misc.c
;

CC arch/arm/boot/compressed/misc.o

依据head.o piggy.o misc.o 编译成compressed/vmlinux

arm-linux-ld -EL –defsym zreladdr=0x50008000 –defsym params_phys=0x50000100 -p –no-undefined -X /usr/local/arm/4.4.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/libgcc.a -T arch/arm/boot/compressed/vmlinux.ldsarch/arm/boot/compressed/head.oarch/arm/boot/compressed/piggy.oarch/arm/boot/compressed/misc.o-o arch/arm/boot/compressed/vmlinux
LD arch/arm/boot/compressed/vmlinux

#@make -f scripts/Makefile.build obj=arch/arm/boot/compressed arch/arm/boot/compressed/vmlinux

用vmlinux去掉一些符号,生成了zImage。

arm-linux-objcopy -O binary -R .note -R .note.gnu.build-id -R .comment -S arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/277018.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部