<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > u-boot的Makefile分析

u-boot的Makefile分析

作者: 時(shí)間:2018-09-11 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201809/388885.htm

mkconfig腳本文件的執行至此結束,繼續剩下部分。

3)包含include/config.mk,其實(shí)也就相當于在里定義了上面四個(gè)變量而已。

4) 指定交叉編譯器前綴:

ifeq ($(ARCH),arm)#這里根據ARCH變量,指定編譯器前綴。
CROSS_COMPILE = arm-linux-
endif

5)包含config.mk:

#包含頂層目錄下的config.mk,這個(gè)文件里面主要定義了交叉編譯器及選項和編譯規則
# load other configuration
include $(TOPDIR)/config.mk

下面config.mk的內容:

  ?。腊w系,開(kāi)發(fā)板,CPU特定的規則文件:

ifdefARCH #指定預編譯體系結構選項
sinclude $(TOPDIR)/$(ARCH)_config.mk# include architecture dependend rules
endif
ifdefCPU #定義編譯時(shí)對齊,浮點(diǎn)等選項
sinclude $(TOPDIR)/cpu/$(CPU)/config.mk# include CPUspecific rules
endif
ifdefSOC #沒(méi)有這個(gè)文件
sinclude $(TOPDIR)/cpu/$(CPU)/$(SOC)/config.mk# include SoCspecific rules
endif

ifdefBOARD #指定特定板子的鏡像連接時(shí)的內存基地址,重要!
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk# include board specific rules
endif

@定義交叉編譯鏈工具


# Include the make variables (CC, etc...)
#
AS= $(CROSS_COMPILE)as
LD= $(CROSS_COMPILE)ld
CC= $(CROSS_COMPILE)gcc
CPP= $(CC) -E
AR= $(CROSS_COMPILE)ar
NM= $(CROSS_COMPILE)nm
STRIP= $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
RANLIB= $(CROSS_COMPILE)RANLIB

@定義AR選項ARFLAGS,調試選項DBGFLAGS,優(yōu)化選項OPTFLAGS

 預處理選項CPPFLAGS,C編譯器選項CFLAGS,連接選項LDFLAGS

 LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS) #指定了起始地址TEXT_BASE

@指定編譯規則:

$(obj)%.s:%.S
$(CPP) $(AFLAGS) -o $@ $
$(obj)%.%.S
$(CC) $(AFLAGS) -c -o $@ $
$(obj)%.%.c
$(CC) $(CFLAGS) -c -o $@ $

回到頂層makefile文件:

6)U-boot需要的目標文件。

OBJS = cpu/$(CPU)/start.o # 順序很重要,start.o必須放第一位

7)需要的庫文件:

LIBS = lib_generic/libgeneric.a
LIBS += board/$(BOARDDIR)/lib$(BOARD).a
LIBS += cpu/$(CPU)/lib$(CPU).a
ifdef SOC
LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
endif
LIBS += lib_$(ARCH)/lib$(ARCH).a
LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a
fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a
LIBS += net/libnet.a
LIBS += disk/libdisk.a
LIBS += rtc/librtc.a
LIBS += dtt/libdtt.a
LIBS += drivers/libdrivers.a
LIBS += drivers/nand/libnand.a
LIBS += drivers/nand_legacy/libnand_legacy.a
LIBS += drivers/sk98lin/libsk98lin.a
LIBS += post/libpost.a post/cpu/libcpu.a
LIBS += common/libcommon.a
LIBS += $(BOARDLIBS)

LIBS := $(addprefix $(obj),$(LIBS))
.PHONY : $(LIBS)

根據上面的include/config.mk文件定義的ARCH、CPU、BOARD、SOC這些變量。硬件平臺依賴(lài)的目錄文件可以根據這些定義來(lái)確定。SMDK2410平臺相關(guān)目錄及對應生成的庫文件如下。
board/smdk2410/ :庫文件board/smdk2410/libsmdk2410.a
cpu/arm920t/ :庫文件cpu/arm920t/libarm920t.a
cpu/arm920t/s3c24x0/ :庫文件cpu/arm920t/s3c24x0/libs3c24x0.a
lib_arm/ :庫文件lib_arm/libarm.a
include/asm-arm/ :下面兩個(gè)是頭文件。
include/configs/smdk2410.h

8)最終生成的各種鏡像文件:

ALL = $(obj).srec $(obj).bin $(obj)System.map $(U_BOOT_NAND)

all:$(ALL)

$(obj).hex:$(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O ihex $ $@

$(obj)u-boot.srec:$(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O srec $ $@

$(obj)u-boot.bin:$(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O binary $ $@



關(guān)鍵詞: Makefile u-boot 分析

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>