????6?? ???????CONFIG_*
????.config ?????????????????????????????????????????????? CONFIG_MODULES=y ???????????? Linux ??????鸚???
????.config ?????? Makefile ???????γ????????????????????????????????????y ?????????????????????????????? Linux ???;m ??????????????????????????????;n ???????????????;??????????????????????????????
????Rules.make ????
??????潲????Rules.make ????????????????е? Makefile ?ж?????? Rules.make??Rules.make ?????????????????????????Щ?????????б??????
????O_OBJS??L_OBJS??OX_OBJS??LX_OBJS???????????????? Linux ??? vmlinux ?????????б?????? OX_OBJS ?? LX_OBJS ?е? "X" ??????????????? EXPORT_SYMBOL ????????
????M_OBJS??MX_OBJS?????????????????????????????????б???????MX_OBJS ?е? "X" ??????????????? EXPORT_SYMBOL ????????
????O_TARGET??L_TARGET????????????????? O_TARGET ?? L_TARGET??Rules.make ????????????????? O_OBJS ?? OX_OBJS ?????е??????????????? $(LD) -r ?????????????? O_TARGET ?? L_TARGET??O_TARGET ?? .o ??β???? L_TARGET ?? .a ??β??
???????? Makefile
???????? Makefile ????????????????????????????????????????????????????? Makefile ??????
#
# Makefile for the linux kernel.
#
# All of the (potential) objects that export symbols.
# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
export-objs:= tc.o
# Object file lists.
obj-y        :=
obj-m        :=
obj-n        :=
obj-         :=
obj-$(CONFIG_TC) += tc.o
obj-$(CONFIG_ZS) += zs.o
obj-$(CONFIG_VT) += lk201.o lk201-map.o lk201-remap.o
# Files that are both resident and modular: remove from modular.
obj-m        := (filter?out(filter?out(obj-y)?? $(obj-m))
# Translate to Rules.make lists.
L_TARGET:= tc.a
L_OBJS       := (sort(sort(filter-out (export?objs)??(export?objs)??(obj-y)))
LX_OBJS      := (sort(sort(filter     (export?objs)??(export?objs)??(obj-y)))
M_OBJS       := (sort(sort(filter-out (export?objs)??(export?objs)??(obj-m)))
MX_OBJS      := (sort(sort(filter     (export?objs)??(export?objs)??(obj-m)))
include $(TOPDIR)/Rules.make
????a) ???
?????? Makefile ?????????????#?????
????b) ?????????
?????????? obj-$(CONFIG_TC) += tc.o ???????????????????????????? Makefile ??????????????????????Щ????????£???????? Linux ????е????????б????????????????????????????е?????嶼????????????????ж??
??????????????????????????Χ???y??n??m ????obj-$(CONFIG_TC) ??????? obj-y??obj-n??obj-m??obj-????? CONFIG_TC ????? y????? tc.o ?????? obj-y ?б??obj-y ??????? Linux ??? vmlinux ?е????????б?;obj-m ?????????????????б?;obj-n ?? obj- ?е?????б???????????????????Щ?б????????б?????????
????export-objs ?е?????????????? EXPORT_SYMBOL() ???????????????????????????á??? tc.c ??????????? "EXPORT_SYMBOL(search_tc_card);"?????? tc.o ?з????????
????????????????????????????????壬?????????????????????????????????塣???????????? Rules.make ??????Щ??????????????? obj-y??obj-m??obj-n ?? obj-??Linux ???????????????壬???????? Rules.make ???????????壬????? Makefile ?е?????ν??????????????塣
????c) ?????
????????ε??????????????????????????塣????????????У????????? obj-y ?? obj-m ????? Rules.make ??????? L_TARGET??L_OBJS??LX_OBJS??M_OBJS??MX_OBJS??
????L_OBJS := (sort(sort(filter-out (export?objs)??(export?objs)??(obj-y))) ?????? L_OBJS ???????????? obj-y ???б??й???? export-objs(tc.o)?????????????????????????????????? GNU Make ???Щ????????????????ο? Make ?????(info make)??
????d) include $(TOPDIR)/Rules.make