é˜发布u-boot: make技巧

This commit is contained in:
weidongshan
2023-03-05 09:18:52 +08:00
parent 19af7d0ada
commit 35d218fd59
9 changed files with 2726 additions and 0 deletions

View File

@@ -70,3 +70,44 @@
## 2. Makefile分析
### 2.1 基础知识
文档本Git仓库`01_all_series_quickstart\04_嵌入式Linux应用开发基础知识\doc_pic\04.2018_Makefile`
视频:
![image-20230305090544770](pic/03_gcc_make_videos.png)
### 2.2 make的技巧
打印Makefile的规则和变量`make -p`
可以把make命令规则和变量存入文件`make -p > 1.txt`
然后执行`vi 1.txt`使用vi命令删除注释`:g/^#/d`
### 2.3 u-boot的默认配置
IMX6ULL: `make mx6ull_14x14_evk_defconfig`
STM32MP157: `make stm32mp15_trusted_defconfig `
分析过程:
```shell
%_defconfig: scripts/kconfig/conf
$(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
```
就是:
```shell
UBOOTVERSION = 2017.03; scripts/kconfig/conf --defconfig=arch/../configs/mx6ull_14x14_evk_defconfig Kconfig
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,606 @@
A=1
B=2
<D = $(patsubst %/,%,$(dir $<))
?F = $(notdir $?)
.SHELLFLAGS := -c
CWEAVE = cweave
?D = $(patsubst %/,%,$(dir $?))
A = 1
B = 2
@D = $(patsubst %/,%,$(dir $@))
@F = $(notdir $@)
MAKE_VERSION := 4.1
CURDIR := /home/book/100ask_imx6ull-sdk/test_make
SHELL = /bin/sh
RM = rm -f
CO = co
COMPILE.mod = $(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)
_ = /usr/bin/make
PREPROCESS.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F
LINK.m = $(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH)
OUTPUT_OPTION = -o $@
COMPILE.cpp = $(COMPILE.cc)
MAKEFILE_LIST := Makefile b_makefile
GNUMAKEFLAGS :=
LINK.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
XDG_DATA_DIRS = /usr/local/share:/usr/share:/var/lib/snapd/desktop
DBUS_SESSION_BUS_ADDRESS = unix:path=/run/user/1001/bus
CC = cc
CHECKOUT,v = +$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)
LESSOPEN = | /usr/bin/lesspipe %s
CPP = $(CC) -E
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
SSH_CONNECTION = 192.168.37.1 57533 192.168.37.134 22
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
LD = ld
TEXI2DVI = texi2dvi
YACC = yacc
SSH_TTY = /dev/pts/1
XDG_RUNTIME_DIR = /run/user/1001
ARFLAGS = rv
LINK.r = $(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)
LINT = lint
COMPILE.f = $(FC) $(FFLAGS) $(TARGET_ARCH) -c
LINT.c = $(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
YACC.m = $(YACC) $(YFLAGS)
YACC.y = $(YACC) $(YFLAGS)
AR = ar
.FEATURES := target-specific order-only second-expansion else-if shortest-stem undefine oneshell archives jobserver output-sync check-symlink load
TANGLE = tangle
LS_COLORS = rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
GET = get
%F = $(notdir $%)
DISPLAY = localhost:10.0
COMPILE.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
CTANGLE = ctangle
.LIBPATTERNS = lib%.so lib%.a
LINK.C = $(LINK.cc)
PWD = /home/book/100ask_imx6ull-sdk/test_make
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)
PREPROCESS.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F
*D = $(patsubst %/,%,$(dir $*))
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
LINK.s = $(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)
HOME = /home/book
LESSCLOSE = /usr/bin/lesspipe %s %s
LOGNAME = book
^D = $(patsubst %/,%,$(dir $^))
MAKELEVEL := 0
COMPILE.m = $(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
MAKE = $(MAKE_COMMAND)
SHLVL = 1
AS = as
PREPROCESS.S = $(CC) -E $(CPPFLAGS)
COMPILE.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
XDG_SESSION_ID = 64
USER = book
FC = f77
.DEFAULT_GOAL := all
%D = $(patsubst %/,%,$(dir $%))
WEAVE = weave
MAKE_COMMAND := make
LINK.cpp = $(LINK.cc)
F77 = $(FC)
OLDPWD = /home/book/100ask_imx6ull-sdk/Uboot-2017.03
.VARIABLES :=
PC = pc
*F = $(notdir $*)
COMPILE.def = $(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)
LEX = lex
ARCH = arm
MAKEFLAGS = p
MFLAGS = -p
SSH_CLIENT = 192.168.37.1 57533 22
MAIL = /var/mail/book
LEX.l = $(LEX) $(LFLAGS) -t
LEX.m = $(LEX) $(LFLAGS) -t
+D = $(patsubst %/,%,$(dir $+))
COMPILE.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c
+F = $(notdir $+)
M2C = m2c
CROSS_COMPILE = arm-buildroot-linux-gnueabihf-
MAKEFILES :=
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
<F = $(notdir $<)
CXX = g++
COFLAGS =
COMPILE.C = $(COMPILE.cc)
^F = $(notdir $^)
COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c
LINK.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
SUFFIXES := .out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH)
.INCLUDE_DIRS = /usr/include /usr/local/include /usr/include
.RECIPEPREFIX :=
MAKEINFO = makeinfo
MAKE_TERMERR := /dev/pts/1
OBJC = cc
MAKE_HOST := x86_64-pc-linux-gnu
TEX = tex
LANG = en_US.UTF-8
TERM = xterm
F77FLAGS = $(FFLAGS)
LINK.f = $(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)
%.out:
%.a:
%.ln:
%.o:
%: %.o
$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.c:
%: %.c
$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.ln: %.c
$(LINT.c) -C$* $<
%.o: %.c
$(COMPILE.c) $(OUTPUT_OPTION) $<
%.cc:
%: %.cc
$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.cc
$(COMPILE.cc) $(OUTPUT_OPTION) $<
%.C:
%: %.C
$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.C
$(COMPILE.C) $(OUTPUT_OPTION) $<
%.cpp:
%: %.cpp
$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.cpp
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
%.p:
%: %.p
$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.p
$(COMPILE.p) $(OUTPUT_OPTION) $<
%.f:
%: %.f
$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.f
$(COMPILE.f) $(OUTPUT_OPTION) $<
%.F:
%: %.F
$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.F
$(COMPILE.F) $(OUTPUT_OPTION) $<
%.f: %.F
$(PREPROCESS.F) $(OUTPUT_OPTION) $<
%.m:
%: %.m
$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.m
$(COMPILE.m) $(OUTPUT_OPTION) $<
%.r:
%: %.r
$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.r
$(COMPILE.r) $(OUTPUT_OPTION) $<
%.f: %.r
$(PREPROCESS.r) $(OUTPUT_OPTION) $<
%.y:
%.ln: %.y
$(YACC.y) $<
$(LINT.c) -C$* y.tab.c
$(RM) y.tab.c
%.c: %.y
$(YACC.y) $<
mv -f y.tab.c $@
%.l:
%.ln: %.l
@$(RM) $*.c
$(LEX.l) $< > $*.c
$(LINT.c) -i $*.c -o $@
$(RM) $*.c
%.c: %.l
@$(RM) $@
$(LEX.l) $< > $@
%.r: %.l
$(LEX.l) $< > $@
mv -f lex.yy.r $@
%.ym:
%.m: %.ym
$(YACC.m) $<
mv -f y.tab.c $@
%.yl:
%.s:
%: %.s
$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.s
$(COMPILE.s) -o $@ $<
%.S:
%: %.S
$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.S
$(COMPILE.S) -o $@ $<
%.s: %.S
$(PREPROCESS.S) $< > $@
%.mod:
%: %.mod
$(COMPILE.mod) -o $@ -e $@ $^
%.o: %.mod
$(COMPILE.mod) -o $@ $<
%.sym:
%.def:
%.sym: %.def
$(COMPILE.def) -o $@ $<
%.h:
%.info:
%.dvi:
%.tex:
%.dvi: %.tex
$(TEX) $<
%.texinfo:
%.info: %.texinfo
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
%.dvi: %.texinfo
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
%.texi:
%.info: %.texi
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
%.dvi: %.texi
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
%.txinfo:
%.info: %.txinfo
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
%.dvi: %.txinfo
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
%.w:
%.c: %.w
$(CTANGLE) $< - $@
%.tex: %.w
$(CWEAVE) $< - $@
%.ch:
%.web:
%.p: %.web
$(TANGLE) $<
%.tex: %.web
$(WEAVE) $<
%.sh:
%: %.sh
cat $< >$@
chmod a+x $@
%.elc:
%.el:
(%): %
$(AR) $(ARFLAGS) $@ $<
%.out: %
@rm -f $@
cp $< $@
%.c: %.w %.ch
$(CTANGLE) $^ $@
%.tex: %.w %.ch
$(CWEAVE) $^ $@
%:: %,v
$(CHECKOUT,v)
%:: RCS/%,v
$(CHECKOUT,v)
%:: RCS/%
$(CHECKOUT,v)
%:: s.%
$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<
%:: SCCS/s.%
$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<
.web.p:
$(TANGLE) $<
.l.r:
$(LEX.l) $< > $@
mv -f lex.yy.r $@
.dvi:
.ym:
.f.o:
$(COMPILE.f) $(OUTPUT_OPTION) $<
.l:
.m:
$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@
.ln:
.o:
$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
.y:
.def.sym:
$(COMPILE.def) -o $@ $<
.p.o:
$(COMPILE.p) $(OUTPUT_OPTION) $<
.p:
$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@
.txinfo.dvi:
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
.a:
.yl:
.l.ln:
@$(RM) $*.c
$(LEX.l) $< > $*.c
$(LINT.c) -i $*.c -o $@
$(RM) $*.c
.F.o:
$(COMPILE.F) $(OUTPUT_OPTION) $<
.texi.info:
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
.w.c:
$(CTANGLE) $< - $@
.texi.dvi:
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
.ch:
.m.o:
$(COMPILE.m) $(OUTPUT_OPTION) $<
.cc:
$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@
.cc.o:
$(COMPILE.cc) $(OUTPUT_OPTION) $<
.def:
.SUFFIXES: .out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el
.c.o:
$(COMPILE.c) $(OUTPUT_OPTION) $<
Makefile:
.r.o:
$(COMPILE.r) $(OUTPUT_OPTION) $<
.r:
$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@
.ym.m:
$(YACC.m) $<
mv -f y.tab.c $@
.y.ln:
$(YACC.y) $<
$(LINT.c) -C$* y.tab.c
$(RM) y.tab.c
b_makefile:
.elc:
.l.c:
@$(RM) $@
$(LEX.l) $< > $@
.out:
all:
@echo A=${A}
@echo B=${B}
.C:
$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@
.r.f:
$(PREPROCESS.r) $(OUTPUT_OPTION) $<
.S:
$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@
.texinfo.info:
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
.c:
$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
.w.tex:
$(CWEAVE) $< - $@
.c.ln:
$(LINT.c) -C$* $<
.s.o:
$(COMPILE.s) -o $@ $<
.s:
$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@
.texinfo.dvi:
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
.el:
.lm.m:
@$(RM) $@
$(LEX.m) $< > $@
.y.c:
$(YACC.y) $<
mv -f y.tab.c $@
.web.tex:
$(WEAVE) $<
.texinfo:
.DEFAULT:
.h:
.tex.dvi:
$(TEX) $<
.cpp.o:
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
.cpp:
$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@
.C.o:
$(COMPILE.C) $(OUTPUT_OPTION) $<
.texi:
.txinfo:
.tex:
.txinfo.info:
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
.sh:
cat $< >$@
chmod a+x $@
.S.s:
$(PREPROCESS.S) $< > $@
.mod:
$(COMPILE.mod) -o $@ -e $@ $^
.mod.o:
$(COMPILE.mod) -o $@ $<
.F.f:
$(PREPROCESS.F) $(OUTPUT_OPTION) $<
.w:
.S.o:
$(COMPILE.S) -o $@ $<
.F:
$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@
.web:
.sym:
.f:
$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@
.info:

View File

@@ -0,0 +1,7 @@
A=1
include b_makefile
-include c_makefile
all:
@echo A=${A}
@echo B=${B}
@echo C=${C}