<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Arm結(jié)構(gòu)下 kernel是如何編譯出zImage的。

          Arm結(jié)構(gòu)下 kernel是如何編譯出zImage的。

          作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
          make -f scripts/Makefile.build obj=arch/arm/boot MACHINE=arch/arm/mach-s3c6400/ arch/arm/boot/zImage

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

          本文引用地址:http://www.ex-cimer.com/article/201611/317843.htm

          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的關(guān)系,原來在piggy.S文件里面。它把整個piggy.gz包含進(jìn)去了,囂張啊。


          .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

          根據(jù)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



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();