Çý¶¯Ä£¿éMakefile½âÎö
ʱ¼ä£º2017-01-05×÷Õߣº»ªÇåÔ¶¼û
ÏÈ¿´Ò»Ï´úÂë
ifeq ($(KERNELRELEASE),) ÆäÖÐÓÐһЩÊÇÎÒÃdz£¼û»òÊǼû¹ýµÄ£¬µÚÒ»¸öifeq ($(KERNELRELEASE),)Ŀǰ£¬²¢ÎÞÓô¦£¬ËüµÄÓÉÀ´ÊÇÖ¸ÔÚLinuxÔ´Âë¸ùĿ¼ÏµÄMakefile±àÒëÄÚºËʱ£¬KERNELRELEASEºê»á±»¶¨Ò壬ÄÇôÈç¹ûÊÇ´ÓÔ´Âë¸ùĿ¼¿ªÊ¼µÄmakeÔò»á½«myhello.oÄ£¿é±àÒë½øÄںˡ£ KERNELDIR ?= /home/linux/linux-2.6.22.6£¬Õâ¾äÊǶÔKERNELDIR½øÐи³Öµ£¬Õâ¸ö±äÁ¿ÊǺóÃæÎÒÃÇÓõ½µÄÖ¸´úÄÚºËÔ´ÂëĿ¼Óõġ£ PWD := $(shell pwd)£¬Õâ¾äÊǶÔPWD±äÁ¿½øÐи³Öµ£¬×÷ÓÃÊǽ«$(shell pwd)µÄ·µ»Ø½á¹û¼ÈÇóµÃµ±Ç°Ä¿Â¼µÄ·¾¶¸³Öµ¸øPWD£¬Õâ¸ö±äÁ¿ÎÒÃÇÔÚºóÃæÖ¸´úÎÒÃÇÒª±àÒëµÄÇý¶¯³ÌÐòËùÔÚµÄλÖá£
modules: Õâ¾äÊÇMakefileµÄ¹æÔò£ºÕâÀïµÄ$(MAKE)¾ÍÏ൱ÓÚmake£¬-C Ñ¡ÏîµÄ×÷ÓÃÊÇÖ¸½«µ±Ç°¹¤×÷Ä¿Â¼×ªÒÆµ½ÄãËùÖ¸¶¨µÄλÖᣓM=”Ñ¡ÏîµÄ×÷ÓÃÊÇ£¬µ±Óû§ÐèÒªÒÔij¸öÄÚºËΪ»ù´¡±àÒëÒ»¸öÍⲿģ¿éµÄ»°£¬ÐèÒªÔÚmake modules ÃüÁîÖмÓÈë“M=dir”£¬³ÌÐò»á×Ô¶¯µ½ÄãËùÖ¸¶¨µÄdirĿ¼ÖвéÕÒÄ£¿éÔ´Â룬½«Æä±àÒ룬Éú³ÉKOÎļþ¡£
modules_install: Õâ¸öÃüÁîÊÇÄ£¿éµÄ°²×°£¬ÔÚMakefileÖÐËÑË÷“lib\/modules”¿ÉÒÔ¿´µ½ÏÂÃæµÄÓï¾ä£¬Í¨¹ýÔĶÁÄã²»ÄÑÕÒµ½Õâ¸ö“MODLIB”µÄÓô¦£¬ËüÊÇÓÃÀ´Ö¸¶¨°²×°Â·¾¶µÄ£¬¶ø±äÁ¿“INSTALL_MOD_PATH”ÍùÍùΪ¿Õ¡£
MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) .PHONY: modules modules_install clean Õâ¾ä»°ÊǵÄ×÷ÓÃÊDZ£Ö¤modules,modules_install,cleanÕâÈý¸öÃüÁîÄÜÕý³£Íê³É¡£.PHONY ÕâÊÇÒ»¸öÌØÊâÄ¿±êÃû³Æ£¬»¹ÓÐÆäËüµÄ£¬È磺 .SUFFIXES£¬.DEFAULT£¬.PRECIOUS£¬.INTERMEDIATE£¬.SECONDARY£¬.SECONDEXPANSION£¬.DELETE_ON_ERROR£¬.IGNORE .LOW_RESOLUTION_TIME .SILENT .EXPORT_ALL_VARIABLES .NOTPARALLEL ËüÃǵľßÌåÓ÷¨¿ÉÒԲο¼GNUÊÖ²áÖеÄSpecial Built-in Target NamesÕ½ڡ£ .PHONYÄ¿±êµÄ¾ßÌåÒâ˼ÊÇÈç¹ûÔÚMakefileµÄ¹¤×÷Ŀ¼ÖÐÓÐÃûÈ磺modules,modules_install,cleanµÈÎļþʱÃüÁî»á³ö´í¡£ËüÊÇ·ÀÖ¹Õâ³ö´íµÄ·½Ê½¡£
Ïà¹Ø×ÊѶ
·¢±íÆÀÂÛ
|