在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > GNU ARM匯編--(十七)u-boot的makefile和mkconfig解讀

            GNU ARM匯編--(十七)u-boot的makefile和mkconfig解讀

            作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
          1. LIBS:=$(addprefix$(obj),$(sort$(LIBS)))
          2. ########################################
          3. #將LIBS排序后為L(zhǎng)IBS增加前綴
          4. #########################################
          5. .PHONY:$(LIBS)
          6. LIBBOARD=board/$(BOARDDIR)/lib$(BOARD).o
          7. LIBBOARD:=$(addprefix$(obj),$(LIBBOARD))
          8. ###########################################
          9. #為L(zhǎng)IBBOARD增加前綴,LIBBOARD就是board/samsung/smdk2410/libsmdk2410.o
          10. ###########################################
          11. #AddGCClib
          12. ifdefUSE_PRIVATE_LIBGCC
          13. ifeq("$(USE_PRIVATE_LIBGCC)","yes")
          14. PLATFORM_LIBGCC=$(OBJTREE)/arch/$(ARCH)/lib/libgcc.o
          15. else
          16. PLATFORM_LIBGCC=-L$(USE_PRIVATE_LIBGCC)-lgcc
          17. endif
          18. else
          19. PLATFORM_LIBGCC:=-L$(shelldirname`$(CC)$(CFLAGS)-print-libgcc-file-name`)-lgcc
          20. endif
          21. PLATFORM_LIBS+=$(PLATFORM_LIBGCC)
          22. exportPLATFORM_LIBS
          23. #SpecialflagsforCPPwhenprocessingthelinkerscript.
          24. #Passtheversiondownsowecanhandlebackwardscompatibility
          25. #onthefly.
          26. LDPPFLAGS+=
          27. -include$(TOPDIR)/include/u-boot/u-boot.lds.h
          28. -DCPUDIR=$(CPUDIR)
          29. $(shell$(LD)--version|
          30. sed-nes/GNUldversion..*/-DLD_MAJOR=1-DLD_MINOR=2/p)
          31. __OBJS:=$(subst$(obj),,$(OBJS))
          32. __LIBS:=$(subst$(obj),,$(LIBS))$(subst$(obj),,$(LIBBOARD))
          33. #########################################################################
          34. #########################################################################
          35. ifneq($(CONFIG_BOARD_SIZE_LIMIT),)
          36. BOARD_SIZE_CHECK=
          37. @actual=`wc-c$@|awk{print$$1}`;
          38. limit=$(CONFIG_BOARD_SIZE_LIMIT);
          39. iftest
            limit;then
          40. echo"$@exceedsfilesizelimit:";
          41. echo"limit:$$limitbytes";
          42. echo"actual:$$actualbytes";
          43. echo"excess:$$((actual-limit))bytes";
          44. exit1;
          45. fi
          46. else
          47. BOARD_SIZE_CHECK=
          48. endif
          49. 本文引用地址:http://www.biyoush.com/article/201611/321714.htm

            這里也給出頂層目錄下的config.mk文件的注釋:

            [cpp]view plaincopy
            1. #
            2. #(C)Copyright2000-2006
            3. #WolfgangDenk,DENXSoftwareEngineering,[email protected].
            4. #
            5. #SeefileCREDITSforlistofpeoplewhocontributedtothis
            6. #project.
            7. #
            8. #Thisprogramisfreesoftware;youcanredistributeitand/or
            9. #modifyitunderthetermsoftheGNUGeneralPublicLicenseas
            10. #publishedbytheFreeSoftwareFoundation;eitherversion2of
            11. #theLicense,or(atyouroption)anylaterversion.
            12. #
            13. #Thisprogramisdistributedinthehopethatitwillbeuseful,
            14. #butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof
            15. #MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe
            16. #GNUGeneralPublicLicenseformoredetails.
            17. #
            18. #YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense
            19. #alongwiththisprogram;ifnot,writetotheFreeSoftware
            20. #Foundation,Inc.,59TemplePlace,Suite330,Boston,
            21. #MA02111-1307USA
            22. #
            23. #########################################################################
            24. ifeq($(CURDIR),$(SRCTREE))
            25. dir:=
            26. else
            27. dir:=$(subst$(SRCTREE)/,,$(CURDIR))
            28. endif
            29. ###########################################################################
            30. #在頂層makefile中已經(jīng)分析了CURDIR和SRCTREE都是當(dāng)前目錄,所以這里dir暫時(shí)為空
            31. ###########################################################################
            32. ifneq($(OBJTREE),$(SRCTREE))
            33. #CreateobjectfilesforSPLinaseparatedirectory
            34. ifeq($(CONFIG_SPL_BUILD),y)
            35. obj:=$(if$(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
            36. else
            37. obj:=$(if$(dir),$(OBJTREE)/$(dir)/,$(OBJTREE)/)
            38. endif
            39. src:=$(if$(dir),$(SRCTREE)/$(dir)/,$(SRCTREE)/)
            40. $(shellmkdir-p$(obj))
            41. else
            42. #CreateobjectfilesforSPLinaseparatedirectory
            43. ifeq($(CONFIG_SPL_BUILD),y)
            44. obj:=$(if$(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
            45. $(shellmkdir-p$(obj))
            46. else
            47. obj:=
            48. endif
            49. src:=
            50. endif
            51. ########################################################################################
            52. #首先OBJTREE和SRCTREE都是當(dāng)前目錄,所以執(zhí)行else
            53. #查找CONFIG_SPL_BUILD是否定義為y,在autoconf.mk中,并沒(méi)有這個(gè)定義,所以obj和src暫時(shí)也為空
            54. ########################################################################################
            55. #cleantheslate...
            56. PLATFORM_RELFLAGS=
            57. PLATFORM_CPPFLAGS=
            58. PLATFORM_LDFLAGS=
            59. #########################################################################
            60. HOSTCFLAGS=-Wall-Wstrict-prototypes-O2-fomit-frame-pointer
            61. $(HOSTCPPFLAGS)
            62. HOSTSTRIP=strip
            63. #
            64. #MacOSX/DarwinsCpreprocessorisApplespecific.It
            65. #generatesnumerouserrorsandwarnings.Wewanttobypassit
            66. #anduseGNUCscpp.Todothiswepassthe-traditional-cpp
            67. #optiontothecompiler.Notethatthe-traditional-cppflag
            68. #DOESNOThavethesamesemanticsasGNUCsflag,allitdoes
            69. #isinvoketheGNUpreprocessorinstockANSI/ISOCfashion.
            70. #
            71. #Appleslinkerissimilar,thankstothenew2stagelinking
            72. #multiplesymboldefinitionsaretreatedaserrors,hencethe
            73. #-multiply_definedsuppressoptiontoturnoffthiserror.
            74. #
            75. ifeq($(HOSTOS),darwin)
            76. #getmajorandminorproductversion(e.g.10and6forSnowLeopard)
            77. DARWIN_MAJOR_VERSION=$(shellsw_vers-productVersion|cut-f1-d.)
            78. DARWIN_MINOR_VERSION=$(shellsw_vers-productVersion|cut-f2-d.)
            79. os_x_before=$(shellif[$(DARWIN_MAJOR_VERSION)-le$(1)-a
            80. $(DARWIN_MINOR_VERSION)-le$(2)];thenecho"$(3)";elseecho"$(4)";fi;)
            81. #SnowLeopardsbuildenvironmenthasnolongerrestrictionsasdescribedabove
            82. HOSTCC=$(callos_x_before,10,5,"cc","gcc")
            83. HOSTCFLAGS+=$(callos_x_before,10,4,"-traditional-cpp")
            84. HOSTLDFLAGS+=$(callos_x_before,10,5,"-multiply_definedsuppress")
            85. else
            86. HOSTCC=gcc
            87. endif
            88. ifeq($(HOSTOS),cygwin)
            89. HOSTCFLAGS+=-ansi
            90. endif
            91. #Webuildsomefileswithextrapedanticflagstotrytominimizethings
            92. #thatwontbuildonsomeweirdhostcompiler--thoughtherearelotsof
            93. #exceptionsforfilesthatarentcomplaint.
            94. HOSTCFLAGS_NOPED=$(filter-out-pedantic,$(HOSTCFLAGS))
            95. HOSTCFLAGS+=-pedantic
            96. ############################################################
            97. #HOSTCFLAGS_NOPED是利用filter-out函數(shù)從HOSTCFLAGS中過(guò)濾掉-pedantic選項(xiàng)
            98. #而HOSTCFLAGS追加上-pedantic選項(xiàng)
            99. ############################################################
            100. #########################################################################
            101. #
            102. #Optionchecker,gccversion(courtesylinuxkernel)toensure
            103. #onlysupportedcompileroptionsareused
            104. #
            105. CC_OPTIONS_CACHE_FILE:=$(OBJTREE)/include/generated/cc_options.mk
            106. CC_TEST_OFILE:=$(OBJTREE)/include/generated/cc_test_file.o
            107. -include$(CC_OPTIONS_CACHE_FILE)
            108. #############################################################################
            109. #定義編譯選項(xiàng)
            110. #在cc_options.mk中有如下選項(xiàng):
            111. #CC_OPTIONS+=-marm
            112. #CC_OPTIONS+=-mno-thumb-interwork
            113. #CC_OPTIONS+=-mapcs-32
            114. #CC_OPTIONS+=-malignment-traps
            115. #CC_OPTIONS+=-Wno-format-nonliteral
            116. #CC_OPTIONS+=-Wno-format-security
            117. #CC_OPTIONS+=-mabi=apcs-gnu
            118. #CC_OPTIONS+=-mabi=aapcs-linux
            119. #############################################################################
            120. cc-option-sys=$(shellmkdir-p$(dir$(CC_TEST_OFILE));
            121. if$(CC)$(CFLAGS)$(1)-S-xc/dev/null-o$(CC_TEST_OFILE)
            122. >/dev/null2>&1;then
            123. echoCC_OPTIONS+=$(strip$1)>>$(CC_OPTIONS_CACHE_FILE);
            124. echo"$(1)";fi)
            125. ifeq($(CONFIG_CC_OPT_CACHE_DISABLE),y)
            126. cc-option=$(strip$(if$(callcc-option-sys,$1),$1,$2))
            127. else
            128. cc-option=$(strip$(if$(findstring$1,$(CC_OPTIONS)),$1,
            129. $(if$(callcc-option-sys,$1),$1,$2)))
            130. endif
            131. ###########################################################################################
            132. #定義兩個(gè)函數(shù),cc-option-sys被cc-option調(diào)用
            133. #cc-option被后面的函數(shù)調(diào)用
            134. ############################################################################################
            135. #cc-version
            136. #Usagegcc-ver:=$(callcc-version)
            137. cc-version=$(shell$(SHELL)$(SRCTREE)/tools/gcc-version.sh$(CC))
            138. ##########################################################################################
            139. #使用tools/gcc-version.sh腳本來(lái)獲取編譯器的版本
            140. #在頂層makefile中,有調(diào)用cc-version函數(shù)
            141. ##########################################################################################
            142. #
            143. #Includethemakevariables(CC,etc...)
            144. #
            145. AS=$(CROSS_COMPILE)as
            146. LD=$(CROSS_COMPILE)ld
            147. CC=$(CROSS_COMPILE)gcc
            148. CPP=$(CC)-E
            149. AR=$(CROSS_COMPILE)ar
            150. NM=$(CROSS_COMPILE)nm
            151. LDR=$(CROSS_COMPILE)ldr
            152. STRIP=$(CROSS_COMPILE)strip
            153. OBJCOPY=$(CROSS_COMPILE)objcopy
            154. OBJDUMP=$(CROSS_COMPILE)objdump
            155. RANLIB=$(CROSS_COMPILE)RANLIB
            156. DTC=dtc
            157. #########################################################################
            158. #定義匯編器,連接器,編譯器,打包工具,反匯編工具,值的注意的RANLIB的作用是在靜態(tài)庫(kù)有添加新的.o后,負(fù)責(zé)更新索引.
            159. #########################################################################
            160. #Loadgeneratedboardconfiguration
            161. sinclude$(OBJTREE)/include/autoconf.mk
            162. sinclude$(OBJTREE)/include/config.mk
            163. ################################################################################################
            164. #包上配置編譯時(shí)產(chǎn)生的autoconf.mk和config.mk文件
            165. ################################################################################################
            166. #Somearchitectureconfig.mkfilesneedtoknowwhatCPUDIRissetto,
            167. #socalculateCPUDIRbeforeincludingARCH/SOC/CPUconfig.mkfiles.
            168. #Checkifarch/$ARCH/cpu/$CPUexists,otherwiseassumearch/$ARCH/cpucontains
            169. #CPU-specificcode.
            170. CPUDIR=arch/$(ARCH)/cpu/$(CPU)
            171. ifneq($(SRCTREE)/$(CPUDIR),$(wildcard$(SRCTREE)/$(CPUDIR)))
            172. CPUDIR=arch/$(ARCH)/cpu
            173. endif
            174. #################################################################################################
            175. #定義CPUDIR為arch/arm/cpu/arm920t
            176. #################################################################################################
            177. sinclude$(TOPDIR)/arch/$(ARCH)/config.mk#includearchitecturedependendrules
            178. sinclude$(TOPDIR)/$(CPUDIR)/config.mk#includeCPUspecificrules
            179. ##################################################################################################
            180. #包上arch/arm/config.mk和/arch/arm/cpu/arm920t/config.mk文件
            181. ##################################################################################################
            182. ifdefSOC
            183. sinclude$(TOPDIR)/$(CPUDIR)/$(SOC)/config.mk#includeSoCspecificrules
            184. endif
            185. ######################################################################
            186. #包上arch/arm/cpu/arm920t/s3c24x0/config.mk文件
            187. #####################################################################
            188. ifdefVENDOR
            189. BOARDDIR=$(VENDOR)/$(BOARD)
            190. else
            191. BOARDDIR=$(BOARD)
            192. endif
            193. ifdefBOARD
            194. sinclude$(TOPDIR)/board/$(BOARDDIR)/config.mk#includeboardspecificrules
            195. endif
            196. ######################################################################################
            197. #包上board/samsung/smdk2410/config.mk文件
            198. ######################################################################################
            199. #########################################################################
            200. #Wedontactuallyuse$(ARFLAGS)anywhereanymore,socatchpeople
            201. #whoareportingoldcodetolatestmainlinebutnotupdating$(AR).
            202. ARFLAGS=$(errorupdateyourMakefiletousecmd_link_o_targetandnotAR)
            203. RELFLAGS=$(PLATFORM_RELFLAGS)
            204. DBGFLAGS=-g#-DDEBUG
            205. OPTFLAGS=-Os#-fomit-frame-pointer
            206. OBJCFLAGS+=--gap-fill=0xff
            207. gccincdir:=$(shell$(CC)-print-file-name=include)
            208. CPPFLAGS:=$(DBGFLAGS)$(OPTFLAGS)$(RELFLAGS)
            209. -D__KERNEL__
            210. #Enablegarbagecollectionofun-usedsectionsforSPL
            211. ifeq($(CONFIG_SPL_BUILD),y)
            212. CPPFLAGS+=-ffunction-sections-fdata-sections
            213. LDFLAGS_FINAL+=--gc-sections
            214. endif
            215. ifneq($(CONFIG_SYS_TEXT_BASE),)
            216. CPPFLAGS+=-DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
            217. endif
            218. ifneq($(CONFIG_SPL_TEXT_BASE),)
            219. CPPFLAGS+=-DCONFIG_SPL_TEXT_BASE=$(CONFIG_SPL_TEXT_BASE)
            220. endif
            221. ifneq($(CONFIG_SPL_PAD_TO),)
            222. CPPFLAGS+=-DCONFIG_SPL_PAD_TO=$(CONFIG_SPL_PAD_TO)
            223. endif
            224. ifeq($(CONFIG_SPL_BUILD),y)
            225. CPPFLAGS+=-DCONFIG_SPL_BUILD
            226. endif
            227. ifneq($(RESET_VECTOR_ADDRESS),)
            228. CPPFLAGS+=-DRESET_VECTOR_ADDRESS=$(RESET_VECTOR_ADDRESS)
            229. endif
            230. ifneq($(OBJTREE),$(SRCTREE))
            231. CPPFLAGS+=-I$(OBJTREE)/include2-I$(OBJTREE)/include
            232. endif
            233. CPPFLAGS+=-I$(TOPDIR)/include
            234. CPPFLAGS+=-fno-builtin-ffreestanding-nostdinc
            235. -isystem$(gccincdir)-pipe$(PLATFORM_CPPFLAGS)
            236. ifdefBUILD_TAG
            237. CFLAGS:=$(CPPFLAGS)-Wall-Wstrict-prototypes
            238. -DBUILD_TAG="$(BUILD_TAG)"
            239. else
            240. CFLAGS:=$(CPPFLAGS)-Wall-Wstrict-prototypes
            241. endif
            242. CFLAGS_SSP:=$(callcc-option,-fno-stack-protector)
            243. CFLAGS+=$(CFLAGS_SSP)
            244. #Sometoolchainsenablesecurityrelatedwarningflagsbydefault,
            245. #buttheydontmakemuchsenseintheu-bootworld,sodisablethem.
            246. CFLAGS_WARN:=$(callcc-option,-Wno-format-nonliteral)
            247. $(callcc-option,-Wno-format-security)
            248. CFLAGS+=$(CFLAGS_WARN)
            249. #Reportstackusageifsupported
            250. CFLAGS_STACK:=$(callcc-option,-fstack-usage)
            251. CFLAGS+=$(CFLAGS_STACK)
            252. #$(CPPFLAGS)sets-g,whichcausesgcctopassasuitable-g
            253. #optiontotheassembler.
            254. AFLAGS_DEBUG:=
            255. #turnjbsrintojsrform68k
            256. ifeq($(ARCH),m68k)
            257. ifeq($(findstring3.4,$(shell$(CC)--version)),3.4)
            258. AFLAGS_DEBUG:=-Wa,-gstabs,-S
            259. endif
            260. endif


            關(guān)鍵詞: ARM匯編u-bootmakefilemkconfi

            評(píng)論


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

            關(guān)閉