·¢²©ÎÄ
Linux/Makefile/Kernel

http://blog.chinaunix.net/space.php?uid=103125

ǶÈëʽ+GNU/Linux   
¸öÈË×ÊÁÏ
  • ²©¿Í·ÃÎÊ£º249588
  • ²©ÎÄÊýÁ¿£º23
  • ²©¿Í»ý·Ö£º5017
  • ²©¿ÍµÈ¼¶£º´óУ
  • ¹Ø×¢ÈËÆø£º 4
  • ×¢²áʱ¼ä£º2006-02-05 21:47:51
¶©ÔÄÎҵIJ©¿Í
  • ¶©ÔÄ
  • ¶©Ôĵ½Ïʹû
  • ¶©Ôĵ½×¥Ïº
  • ¶©Ôĵ½Google
×ÖÌå´óС£º´ó ÖРС²©ÎÄ
·ÖÀࣺ GNU-make


µÚÈýÕ£ºMakefile ×ÜÊö
 
1.1 MakefileµÄÄÚÈÝ
 
Ò»¸öÍêÕûµÄMakefileÖУ¬°üº¬ÁË5¸ö¶«Î÷£ºÏÔʽ¹æÔò¡¢Òþº¬¹æÔò¡¢±äÁ¿¶¨Ò塢ָʾ·ûºÍ×¢ÊÍ¡£¹ØÓÚ¡°¹æÔò¡±¡¢¡°±äÁ¿¡±ºÍ¡°Makefileָʾ·û¡±ºóÐøÓÐÏêϸÌÖÂÛ¡£±¾ÕÂÌÖÂÛһЩ»ù±¾¸ÅÄî¡£
  • ÏÔʽ¹æÔò£ºËüÃèÊöÁËÔÚºÎÖÖÇé¿öÏÂÈçºÎ¸üÐÂÒ»¸ö»òÕß¶à¸ö±»³ÆÎªÄ¿±êµÄÎļþ£¨MakefileµÄÄ¿±êÎļþ£©¡£ÊéдMakefile¹æÔòʱÐèÃ÷È·µØ¸ø³öÄ¿±êÎļþ¡¢Ä¿±êµÄÒÀÀµÎļþÁбíÒÔ¼°¸üÐÂÄ¿±êÎļþËùÐèÒªµÄÃüÁÓÐЩ¹æÔòûÓÐÃüÁÕâÑùµÄ¹æÔòÖ»ÊÇ´¿´âµÄÃèÊöÁËÎļþÖ®¼äµÄÒÀÀµ¹ØÏµ£©¡£ÏÔʽ¹æÔò¾ÍÊÇÔÚMakefileÖб»Ã÷È·µØ¸ø³öµÄËùÓйæÔò¡£
  • Òþº¬¹æÔò£ºËüÊÇmake¸ù¾ÝijһÀàÎļþµÄÌØÕ÷£¨µäÐ͵أ¬¸ù¾ÝÎļþÃûºó׺£©°´ÕÕÌØ¶¨µÄ¶ÔÓ¦¹ØÏµ£¬Îª´´½¨£¨»òÕ߸üУ©Õâ¸öÎļþ¶ø×Ô¶¯ÍƵ¼³öÀ´µÄ¹æÔò¡£make¸ù¾ÝÎļþÃû£¬½«Æä×÷ΪĿ±êÎļþ£¬²¢°´ÕÕÌØ¶¨µÄ¶ÔÓ¦¹ØÏµÎªËüÕÒ³öÒÀÀµÎļþ£¬Ê¹ÓÃmake´´½¨´ËÀàÎļþĬÈϵÄÃüÁîÐÐÀ´½¨Á¢ÕâÑùÒ»¸ö¹æÔò¡£¹ØÓÚÒþº¬¹æÔò¿É²Î¿¼ µÚʮՠmakeµÄÒþº¬¹æÔò
  • ±äÁ¿¶¨Ò壺ʹÓÃÒ»¸ö×Ö·û»ò×Ö·û´®´ú±íÒ»¶ÎÎı¾´®¡£µ±¶¨ÒåÁËÒ»¸ö±äÁ¿ºó£¬MakefileºóÐøÔÚÐèҪʹÓôËÎı¾´®µÄµØ·½£¬Í¨¹ýÒýÓÃÕâ¸ö±äÁ¿À´ÊµÏÖ¶ÔÎı¾´®µÄʹÓᣵÚÒ»ÕµÄÀý×ÓÖУ¬ÎÒÃǾͶ¨ÒåÁËÒ»¸ö±äÁ¿¡°objects¡±À´±íʾһ¸ö.oÎļþÁÐ±í¡£¹ØÓÚ±äÁ¿µÄÏêϸÌÖÂۿɲο¼ µÚÁùÕ MakefileÖеıäÁ¿
  • Makefileָʾ·û£ºÒ»¸öָʾ·ûÓÃÀ´Ö¸Ã÷ÔÚmake¶ÁÈ¡makefileÎļþ¹ý³ÌÖÐËùÒªÖ´ÐеÄÒ»¸ö¶¯×÷¡£ÆäÖаüÀ¨£º
    • ÈÃmake³ÌÐò¸ù¾ÝÎļþÃû¶Áȡָ¶¨ÎļþµÄÄÚÈÝ£¬²¢½«ÆäÄÚÈÝ×÷Ϊµ±Ç°MakefileµÄÄÚÈÝÀ´´¦Àí¡£
    • ¾ö¶¨£¨Í¨³£ÊǸù¾ÝÒ»¸ö±äÁ¿µÄȡֵ£©´¦Àí»¹ÊǺöÂÔMakefileÖеÄijһ²¿·ÖÄÚÈÝ¡£²Î¿¼ µÚÆßÕÂMakefileµÄÌõ¼þÖ´ÐÐ
    • ¶¨ÒåÒ»¸ö¶àÐбäÁ¿¡£²Î¿¼ 6.8 ¶àÐж¨Òå Ò»½Ú
  • ×¢ÊÍ£ºMakefileÖÐÒÔ×Ö·û¡°#¡±¿ªÊ¼µÄÐÐΪעÊÍÐУ»ÔÚÒ»ÐÐÖÐ×Ö·û¡°#¡±Ö®ºóµÄÄÚÈÝÒ²±»¿´×öΪעÊÍ£¨ºÍshell½Å±¾Ò»Ñù£©¡£×¢ÊÍÐнáβÈç¹ûʹÓ÷´Ð±Ïߣ¨\£©£¬ÄÇô´ËÐÐ֮ϵÄÒ»ÐУ¨ÏÂÒ»ÐУ©Ò²±»¿´×öΪעÊÍÐС£ÔÚÊéдMakefileÊ±ÍÆ¼ö½«×¢ÊÍ×÷Ϊһ¸ö¶ÀÁ¢µÄÐУ¬¶ø²»ÒªºÍMakefileµÄÓÐЧÄÚÈÝ·ÅÔÚͬһÐС£µ±MakefileÖÐÐèҪʹÓÃ×Ö·û¡°#¡±Ê±£¬¿ÉʹÓ÷´Ð±Ïß¼Ó¡°#¡±£¨\#£©À´ÊµÏÖ£¨¶Ô¾ßÓÐÌØÊ⺬Òå×Ö·û¡°#¡±½øÐÐתÒ壩£¬Æä±íʾ ¡°#¡±ÔÚÕâÀïÊÇ×÷Ϊһ×Ö·û¶ø²»ÊÇ×¢Ê͵ĿªÊ¼±êÖ¾¡£
ÐèҪעÒâµÄµØ·½£º
MakefileÖеÚÒ»¸ö¹æÔòÖ®ºóËùÓÐÒÔ[Tab]×Ö·û¿ªÊ¼µÄµÄÐУ¬make¶¼»á½«Æä½»¸øÏµÍ³shell³ÌÐòÈ¥½âÊÍ¡£Òò´Ë£¬ÒÔ[Tab]×Ö·û¿ªÊ¼µÄ×¢ÊÍÐÐÒ²»á±»½»¸øshell£¬´ËÃüÁîÐÐÊÇ·ñÐèÒª±»Ö´ÐÐÓÉϵͳshell×öÅоö¡£Òò´Ë£¬ÒÔ×Ö·û¡°#¡±¿ªÊ¼µÄÃüÁîÐÐshell½«²»Ö´ÐÐËü¡£
ÁíÍ⣬ÔÚʹÓÃָʾ·û¡°define¡±¶¨ÒåÒ»¸ö¶àÐеıäÁ¿»òÕßÃüÁî°üʱ£¬Æä¶¨ÒåÌ壨¡°define¡±ºÍ¡°endef¡±Ö®¼äµÄÄÚÈÝ£©»á±»ÍêÕûµÄÕ¹¿ªµ½MakefileÖÐÒýÓô˱äÁ¿µÄµØ·½£¨°üº¬¶¨ÒåÌåÖеÄ×¢ÊÍÐУ©£»makeÔÚÖ´ÐÐʱ²Å»á¶ÔÒÑÕ¹¿ªµÄ±äÁ¿¶¨ÒåÌå½øÐд¦Àí£¬¾ö¶¨¶¨ÒåÌåµÄijһÐе½µ×ÊÇ×¢ÊÍ»¹ÊÇÓÐЧÄÚÈÝ¡£MakefileÖбäÁ¿µÄÒýÓúÍCÓïÑÔÖеĺêÀàËÆ£¨µ«ÊÇÆäʵÖÊÈ´²»Í¬£¬ºóÐø½«»áÏêϸÌÖÂÛ£©¡£Ò»¸ö±äÁ¿ÔÚÆä±»ÒýÓõĵط½makeËù×öµÄ¾ÍÊǽ«Õâ¸ö±äÁ¿¸ù¾Ý¶¨Òå½øÐлùÓÚÎı¾µÄÕ¹¿ª£¬Õ¹¿ª±äÁ¿µÄ¹ý³Ì²»Éæ¼°ÈκζԴ˱äÁ¿µÄ¾ßÌ庬Òå·ÖÎöºÍʵ¼Ê¹¦ÄÜ·ÖÎö¡£

1.2 makefileÎļþµÄÃüÃû

ĬÈÏÇé¿öÏ£¬Ö´ÐÐmakeʱ£¬makeÔÚ¹¤×÷Ŀ¼£¨Ö´ÐÐmakeµÄĿ¼£©Ï°´ÕÕ˳ÐòÒÀ´ÎѰÕÒÈçÏÂÃüÃûµÄmakefileÎļþ¶ÁÈ¡²¢Ö´ÐÐËü£¬ÎļþÃûµÄ²éÕÒ˳ÐòΪ£º¡°GNUmakefile¡±¡¢¡°makefile¡±¡¢¡°Makefile¡±¡£
ͨ³£Ê¹Óá°makefile¡±»òÕß¡°Makefile¡±×÷ΪmakefileµÄÎļþÃû£¨ÍƼöʹÓá°Makefile¡±£¬Ê××Öĸ´óд¶øÏÔÖø£¬Ê××Öĸ´óдµÄÎļþÔÚĿ¼Öк͵±Ç°Ä¿Â¼µÄÒ»Ð©ÖØÒªÎļþ£¬ÖîÈçREADME,ChangelistÏà¿¿½ü£¬ÕâÑù¸üÈÝÒ×±»Ñ°ÕÒ£©¡£¶ø¡°GNUmakefile¡±ÊDz»ÍƼöʹÓõÄÎļþÃüÃû£¬ÒòΪÒÔ´ËÃüÃûµÄÎļþÖ»Äܱ»¡°GNU make¡±Ê¶±ð£¬²»Äܱ»ÆäËü°æ±¾µÄmakeʶ±ð£¬ÆäËü°æ±¾µÄmake³ÌÐòÖ»»áÔÚ¹¤×÷Ŀ¼ÏÂѰÕÒ¡°makefile¡±ºÍ¡°Makefile¡±ÕâÁ½¸öÎļþ¡£
Èç¹ûmakeÔÚ¹¤×÷Ŀ¼ÏÂÎÞ·¨ÕÒµ½ÒÔÉÏÈý¸öÎļþÖÐÈÎÒâÒ»¸ö£¬Ëü½«²»»á¶ÁÈ¡ÆäËüµÄÎļþ×÷Ϊ½âÎö¶ÔÏ󣬶øÊÇÌáʾ´íÎó¡£µ«¸ù¾ÝmakeÒþº¬¹æÔòµÄÌØÐÔ£¬ÔÚûÓÐmakefileÎļþµÄĿ¼Ï£¬Ö´ÐÐmakeʱͨ¹ýÃüÁîÐÐÖ¸¶¨Ä¿±ê£¬Èç¹ûµ±Ç°Ä¿Â¼Ï´æÔÚ·ûºÏ´ËÄ¿±êËùÒÀÀµµÄÎļþ£¬ÄÇôÃüÁîÐÐËùÖ¸¶¨µÄÄ¿±êÎļþÒ²½«»á±»´´½¨»òÕ߸üУ¬²Î¼û×¢ÊÍ¡££¨Ïêϸ¿É²Î¿¼ µÚʮՠmakeµÄÒþº¬¹æÔò£©
µ±makefileÎļþµÄÃüÃû²»ÊÇÕâÈý¸öÖеÄÒ»¸öʱ£¬¿Éͨ¹ýmakeµÄ¡°-f¡±»òÕß¡°--file¡±Ñ¡ÏîÀ´Ö¸¶¨Ò»¸öÎļþÃû£¬½«Æä×÷Ϊmake½âÎöµÄmakefileÎļþ¡£¸ømakeÖ¸¶¨makefileÎļþµÄ¸ñʽΪ£º¡°-f NAME¡±»òÕß¡°¡ªfile=NAME¡±£¬ËüÖ¸¶¨Îļþ¡°NAME¡±×÷ΪִÐÐmakeʱ¶ÁÈ¡µÄmakefileÎļþ¡£Ò²¿ÉÒÔͨ¹ý¶à¸ö¡°-f¡±»òÕß¡°--file¡±Ñ¡ÏîÀ´Ö¸¶¨¶à¸öÐèÒª¶ÁÈ¡µÄmakefileÎļþ£¬¶à¸ömakefileÎļþ½«»á±»°´ÕÕ¸ø¶¨µÄ˳Ðò±»make¶ÁÈ¡²¢±»make½âÎöÖ´ÐС£µ±Í¨¹ý¡°-f¡±»òÕß¡°--file¡±Ö¸¶¨makefileÎļþʱ£¬make½«²»»á³¢ÊÔѰÕÒĬÈϵÄmakefileÎļþ£¨ÒÔÕâÈý¸ö±ê×¼ÃüÃûµÄÎļþ£©¡£
 

×¢ÊÍ£ºÖ´ÐÐmakeʱÃüÁîÐÐÖ¸¶¨Ä¿±êʹÓÃmakeµÄÒþº¬¹æÔò£º
ÈçÈôµ±Ç°Ä¿Â¼Ï²»´æÔÚÒÔ¡°GNUmakefile¡±¡¢¡°makefile¡±¡¢¡°Makefile¡±ÃüÃûµÄÈÎÒ»Îļþ£¬
1. µ±Ç°Ä¿Â¼Ï´æÔÚÒ»¸öÔ´Îļþfoo.c£¬¿ÉÒÔʹÓá°make foo.o¡±À´Ê¹ÓÃmakeµÄÒþº¬¹æÔò×Ô¶¯Éú³Éfoo.o¡£µ±Ö´ÐС°make foo.o¡±Ê±¡£¿ÉÒÔ¿´µ½ÆäÖ´ÐеÄÃüÁîΪ£º
cc ¨Cc ¨Co foo.o foo.c
Ö®ºó£¬foo.o½«»á±»´´½¨»òÕ߸üС£
2. µ±Ç°Ä¿Â¼ÏÂûÓÐfoo.cÎļþ£¬¾ÍÊÇ˵makeµÄÒþº¬¹æÔòÖÐÄ¿±êΪ.oÎļþµÄÒÀÀµÎļþ²»´æÔÚ¡£Ö´ÐÐÃüÁî¡°make foo.o¡±½«»áµÃµ½Ìáʾ£º
make: *** No rule to make target ¡®foo.o¡¯. Stop.
3. Ö±½ÓÖ´ÐÐÃüÁî¡°make¡±½«µÃµ½ÌáʾÐÅÏ¢£º
make: *** No targets specified and no makefile found. Stop.

1.3 °üº¬ÆäËümakefileÎļþ

±¾½ÚÎÒÃÇÌÖÂÛÈçºÎÔÚÒ»¸öMakefileÖаüº¬ÆäËüµÄmakefileÎļþ¡£ÔÚMakefileÖаüº¬ÆäËüÎļþ£¬ÐèҪʹÓõĹؼü×Ö¡°include¡±£¬ºÍcÔ´Îļþ°üº¬Í·ÎļþµÄ·½Ê½ÀàËÆ¡£
makeÔÚ¶ÁÈ¡£¨½âÎö£©Ò»¸öMakefile¹ý³ÌÖУ¬Èç¹ûÓöµ½Ö¸Ê¾·û£¨¹Ø¼ü×Ö£©¡°include¡±£¬ÄÇômake½«ÔÝÍ£¶ÁÈ¡µ±Ç°Makefile£¬¶ø×ªÈ¥²¢¼ÌÐø¶Áȡָʾ·û¡°include¡±Ö¸¶¨µÄÒ»¸ö»òÕß¶à¸öÎļþ£¨¶à¸öÎļþʱ£¬°´ÕÕ¡°include¡±ÂÞÁеĴÓ×óµ½ÓÒÒÀ´Î¶ÁÈ¡£©£¬Íê³É¶ÔÕâЩÎļþµÄ¶Áȡ֮ºóÔÙ¼ÌÐøµ±Ç°MakefileµÄ¶ÁÈ¡¡£MakefileÖÐʹÓÃָʾ·û¡°include¡±Ê±£¬Ð뽫ÆäÊéдÔÚ¶ÀÁ¢µÄÒ»ÐУ¬ÆäÐÎʽÈçÏ£º
 
include FILENAMES...
 
FILENAMESÊÇshellËùÖ§³ÖµÄÎļþÃû£¨¿ÉÒÔʹÓÃͨÅä·û£©¡£
ָʾ·û¡°include¡±ËùÔÚµÄÐпÉÒÔÒ»¸ö»ò¶à¸ö¿Õ¸ñ£¨makeÔÚ´¦Àíʱ½«ºöÂÔÕâЩ¿Õ¸ñ£©¿ªÊ¼£¬ÇмǴËÐв»¿ÉÒÔ[Tab]×Ö·û¿ªÊ¼£¨ÒÔ[Tab]×Ö·û¿ªÊ¼µÄÐУ¬make»á½«µ±×÷ΪÃüÁîÐÐÀ´´¦Àí£©£»Êéдʱָʾ·û¡°include¡±ºÍÎļþÃûÖ®¼ä¡¢¶à¸öÎļþÖ®¼ä¿ÉʹÓÿոñ»òÕß[Tab]¸ô¿ª£»´ËÐпÉÒÔ¿Õ°××Ö·û½á⣬make´¦ÀíʱºöÂÔÐÐβµÄ¿Õ°××Ö·û¡£Ê¹ÓÃָʾ·û¡°include¡±±»°üº¬½øÀ´µÄÎļþ£¨makefileÎļþ£©ÖУ¬Èç´æÔÚ±äÁ¿»òÕߺ¯ÊýÒýÓã¬ÕâЩÒýÓý«ÔÚ°üº¬ËüÃǵÄMakefile£¨Ê¹ÓÃָʾ·û¡°include¡±Ö¸¶¨°üº¬ÎļþµÄMakefile£©Öб»Õ¹¿ª£¨Ï¸½Ú¿É²Î¿¼ µÚÁùÕ MakefileÖеıäÁ¿£©¡£
¿´Ò»¸öÀý×Ó£¬´æÔÚÈý¸ö.mkÎļþa.mk¡¢b.mk¡¢c.mk£¬Í¬Ê±±äÁ¿ÒýÓá°$(bar)¡±ÔÚÕâÀï±»À©Õ¹Îª¡°bish bash¡±¡£Ôò
 
include foo *.mk $(bar)
 
µÈ¼ÛÓÚ
 
include foo a.mk b.mk c.mk bish bash
 
֮ǰÌáµ½¹ýmakeÔÚÓöµ½Ö¸Ê¾·ûincludeʱ£¬½«ÔÝÍ£¶ÁÈ¡Õâ¸öʹÓÃָʾ·û¡°include¡±µÄmakefileÎļþ£¬×ªÈ¥ÒÀ´Ë¶ÁÈ¡ÓÉ¡°include¡±Ö¸¶¨µÄÎļþÁÐ±í¡£ÔÚÍê³ÉÁ˶ÔËùÓÐÕâЩÎļþµÄ¶ÁÈ¡ºó£¬»Ø¹ýÍ·¼ÌÐø¶Áȡָʾ·û¡°include¡±ËùÔÚµÄmakefileÎļþ£¨´Óָʾ·û¡°include¡±ÐÐÖ®ºóÒ»ÐпªÊ¼£©¡£
ͨ³£Ö¸Ê¾·û¡°include¡±ÓÃÔÚÒÔϳ¡¾°£º
1. Óжà¸ö²»Í¬µÄ³ÌÐò£¬Óɲ»Í¬Ä¿Â¼Ïµļ¸¸ö¶ÀÁ¢µÄMakefileÀ´ÃèÊöÆäÖØ½¨¹æÔò¡£ËüÃÇÐèҪʹÓÃÒ»×éͨÓõıäÁ¿¶¨Ò壨¿É²Î¿¼ 6.5 ÈçºÎÉèÖñäÁ¿ Ò»½Ú£©»òÕßģʽ¹æÔò¶¨Ò壨¿É²Î¿¼ 10.5 ģʽ¹æÔò Ò»½Ú£©¡£Í¨ÓõÄ×ö·¨Êǽ«ÕâЩ¹²Í¬Ê¹ÓõıäÁ¿»òÕßģʽ¹æÔò¶¨ÒåÔÚÒ»¸öÎļþÖУ¨Ã»ÓоßÌåµÄÎļþÃüÃûÏÞÖÆ£©£¬ÔÚÐèҪʹÓÃÕâЩ¶¨ÒåµÄMakefileÖÐʹÓÃָʾ·û¡°include¡±À´°üº¬´ËÎļþ¡£
2. µ±¸ù¾ÝÔ´Îļþ×Ô¶¯²úÉúÒÀÀµÎļþʱ£»ÎÒÃÇ¿ÉÒÔ½«¸ù¾ÝÔ´Îļþ×Ô¶¯²úÉúµÄÒÀÀµ¹ØÏµ±£´æÔÚÒ»¸ö£¨¶à¸ö£©ÎļþÖУ¬Ö÷Makefile¿ÉʹÓÃָʾ·û¡°include¡±°üº¬ÕâЩÓÉÔ´Îļþ²úÉúµÄÒÀÀµÃèÊöÎļþ¡£Èç´Ë×ö·¨Ïà±ÈÖ±½ÓÔÚÖ÷MakefileÖÐÊÖ¹¤×·¼ÓÒÀÀµÎļþ·½Ê½Òª¸üΪÍ×ÉÆ¡¢·½±ã¡£ÆäËü°æ±¾µÄmake´ó¶àʹÓÃÕâÖÖ·½Ê½À´´¦Àí¡££¨²Î¿¼ 4.14 ×Ô¶¯²úÉúÒÀÀµ Ò»½Ú£©
Èç¹ûָʾ·û¡°include¡±Ö¸¶¨µÄÎļþ²»ÊÇÒÔбÏß¿ªÊ¼£¨¾ø¶Ô·¾¶£¬Èç/usr/src/Makefile...£©£¬²¢ÇÒÔÚµ±Ç°Ä¿Â¼Ï²»´æÔÚÕâ¸öÎļþ£»make½«¸ù¾ÝÎļþÃû³¢ÊÔÔÚÒÔϼ¸¸öĿ¼½øÐвéÕÒ£ºÊ×ÏÈ£¬²éÕÒÃüÁîÐÐÑ¡Ïî¡°-I¡±»òÕß¡°--include-dir¡±Ö¸¶¨µÄĿ¼£¬Èç¹ûÕÒµ½Ö¸¶¨µÄÎļþ£¬¾Í¶ÁÈ¡Õâ¸öÎļþ£»·ñÔò¼ÌÐøÒÀ´ÎËÑË÷ÒÔϼ¸¸öĿ¼£¨Èç¹ûÆä´æÔÚ£©£º¡°/usr/gnu/include¡±¡¢¡°/usr/local/include¡±ºÍ¡°/usr/include¡±¡£
µ±ÔÚÕâЩĿ¼Ï¶¼Ã»ÓÐÕÒµ½¡°include¡±Ö¸¶¨µÄÎļþʱ£¬make½«²úÉúÒ»¸ö¸æ¾¯£¬Ìáʾ°üº¬Îļþ²»ÄÜÕÒµ½£¬µ«²»»áÁ¢¼´Í˳ö¡£¶ø¼ÌÐø´¦ÀíMakefileµÄºóÐøÄÚÈÝ¡£µ±ÍêÕû¶ÁÈ¡Õû¸öMakefileºó£¬make½«³¢ÊÔѰÕÒ¹æÔòÀ´´´½¨Í¨¹ýָʾ·û¡°include¡±Ö¸¶¨µÄµ«Î´ÕÒµ½µÄÎļþ£¬ÔÚÎÞ·¨´´½¨Õâ¸öÎļþʱ£¨Î´ÄÜÕÒµ½Ò»¸ö¹æÔòÀ´´´½¨Ëü£©£¬make½«ÌáʾÖÂÃü´íÎó²¢Í˳ö¡£¸ø³öÀàËÆÈçϵĴíÎóÌáʾ£º
 
Makefile:´íÎóµÄÐÐÊý£ºÎ´ÕÒµ½ÎļþÃû£ºÌáʾÐÅÏ¢£¨No such file or directory£©
Make£º *** No rule to make target ¡®<filename>¡¯. Stop
 
MakefileÖпÉʹÓá°-include¡±À´´úÌæ¡°include¡±£¬ÈÃmakeºöÂÔÓÉÓÚ°üº¬Îļþ²»´æÔÚ¡¢»òÕßÎÞ·¨´´½¨Õâ¸ö°üº¬ÎļþËùµ¼ÖµĴíÎ󣨡°-¡±µÄÒâ˼ÊǸæËßmake£¬ºöÂԴ˲Ù×÷µÄ´íÎ󣬼ÌÐøÖ´ÐУ©¡£ÏñϱßÕâÑù£º
 
-include FILENAMES...
 
ʹÓÃÕâÖÖ·½Ê½£¬µ±ËùÒª°üº¬µÄÎļþ²»´æÔÚʱ²»»áÓÐÈκδíÎóÌáʾ¡¢µ±È»makeÒ²²»»áÍ˳ö£»³ý´ËÖ®Í⣬ÕâÖÖ·½Ê½ºÍµÚÒ»ÖÖ·½Ê½Ð§¹ûÏàͬ¡£ÒÔÏÂÊÇÕâÁ½ÖÖ·½Ê½µÄ±È½Ï£º
ʹÓá°include FILENAMES...¡±µÄÇé¿ö£¬makeÔÚ´¦ÀíMakefile¹ý³ÌÖУ¬Èç¹û¡°FILENAMES¡±ÁбíÖеÄÈκÎÒ»¸öÎļþ²»´æÔÚ£¨²»Äܱ»Õý³£¶ÁÈ¡£©¡¢Ò²ÎÞ·¨ÓÉÒ»¸ö¹æÔòÀ´´´½¨Õâ¸öÎļþ£¬ÄÇômake¾ÍÌáʾ´íÎó²¢Í˳ö¡£
ʹÓá°-include FILENAMES...¡±µÄÇé¿ö£¬¼´Ê¹Ëù°üº¬µÄÎļþ²»´æÔÚ¡¢¶øÇÒÕâ¸öÎļþÒ²ÎÞ·¨ÓɹæÔòÀ´´´½¨£¬makeÒ²½«¼ÌÐøÖ´ÐС£Ö»ÓÐÔÚ×îºó£¬²»ÄÜÕýÈ·Íê³ÉÖÕ¼«Ä¿±êÖØ½¨µÄÇé¿öÏ£¨ÎÞ·¨ÔÚµ±Ç°ÒѶÁÈ¡µÄmakefileÎļþÖÐΪ±ØÐèµÄÄ¿±êÎļþÕÒµ½ÕýÈ·µÄÖØ½¨¹æÔò£©£¬make²ÅÌáʾÖÂÃü´íÎó²¢Í˳ö¡£
ΪÁËºÍÆäËü°æ±¾µÄmake¼æÈÝ¡£MakefileÖпÉʹÓá°sinclude¡±À´´úÌæ¡°-include¡±£¨GNUËùÖ§³ÖµÄ·½Ê½£©¡£
 

1.4 ±äÁ¿ MAKEFILES

Èç¹ûµ±Ç°¹¤×÷»·¾³ÖдæÔÚÒ»¸öÃüÃûΪ¡°MAKEFILES¡±µÄ±äÁ¿£¬ÄÇômakeÔÚÖ´ÐÐʱÊ×ÏÈ»á¶ÁÈ¡´Ë±äÁ¿ËùÖ¸¶¨µÄÎļþ£¨¿Õ¸ñ·Ö¸î¶à¸öÎļþ£©£¬½«ÆäÄÚÈÝ×÷ΪËùÒª´¦ÀíÄÚÈݵÄÒ»²¿·Ö¡£¶Ô´Ë±äÁ¿Ö¸¶¨ÎļþµÄ¶ÁÈ¡¹ý³ÌºÍָʾ·û¡°include¡±Ö¸¶¨ÎļþµÄ¶ÁÈ¡¹ý³ÌÏàͬ£¬Èç¹ûÎļþÃû·Ç¾ø¶Ô·¾¶²¢ÇÒÎÞ·¨ÔÚµ±Ç°Ä¿Â¼ÏÂÕÒµ½Õâ¸öÎļþ£¬make»áÔÚһЩĬÈϵÄĿ¼ȥѰÕÒ£¨²Î¿¼ 3.3 °üº¬ÆäËümakefileÎļþ Ò»½Ú£©¡£ËüºÍʹÓá°include¡±µÄÇø±ð£º
1. »·¾³±äÁ¿Ö¸¶¨µÄmakefileÎļþÖеġ°Ä¿±ê¡±²»±»×÷ΪmakeµÄ¡°ÖÕ¼«Ä¿±ê¡±¡£¾ÍÊÇ˵£¬ÕâЩÎļþÖÐËù¶¨Ò广ÔòµÄÄ¿±ê£¬make²»»á½«Æä×÷Ϊ¡°ÖÕ¼«Ä¿±ê¡±À´´¦Àí¡£Èç¹ûÔÚÖ´ÐÐmakeµÄ¹¤×÷Ŀ¼ÏÂûÓÐÒ»¸öÃûΪ¡°Makefile¡±¡¢¡°makefile¡±»òÕß¡°GNUmakefile¡±µÄÎļþ£¬Ö´ÐÐmake½«»áµÃµ½´íÎó»áÌáʾ¡°make: *** No targets specified and no makefile found. Stop.¡±£»Ïà·´£¬ÔÚÖ´ÐÐmakeµÄĿ¼ÏÂÈç¹ûÒѾ­´æÔÚÒ»¸ömakefileÎļþ£¨ÃüÃûΪ¡°Makefile¡±¡¢¡°makefile¡±»òÕß¡°GNUmakefile¡±£©£¬ÄÇômakeÔÚÖ´ÐÐʱµÄ¡°ÖÕ¼«Ä¿±ê¡±¾ÍÊǵ±Ç°Ä¿Â¼ÏÂMakefileÖж¨ÒåµÄµÚÒ»¸öÄ¿±ê¡£
2. »·¾³±äÁ¿Ö¸¶¨µÄÎļþÁÐ±í£¨¶à¸öÎļþʹÓÿոñ·Ö¿ª£©£¬Ö´ÐÐmakeʱ£¬¼´Ê¹makeÎÞ·¨¶ÁÈ¡ÆäÖÐijһ¸ö£¨¶à¸ö£©Îļþ£¨Îļþ²»´æÔÚ¶øÇÒÎÞ·¨´´½¨Ëü£©£¬makeÒ²²»»áÌáʾ´íÎó£¬Ò²²»Í˳ö¡£¾ÍÊÇ˵»·¾³±äÁ¿¡°MAKEFILES¡±Ö¸¶¨µÄÐèÒª°üº¬µÄÎļþ´æÔÚÓë·ñ²»Ó°ÏìmakeµÄÖ´ÐУ¬¼´¾ÍÊÇÖ¸¶¨µÄÎļþ²»´æÔÚÒ²²»»áµ¼ÖÂmake´íÎóÍ˳ö¡£ÕâÒ»µãÊÇÔÚʹÓô˱äÁ¿Ç°ÐèÒªÁ˽âµÄ¡£
3. makeÔÚÖ´ÐÐʱ£¬Ê×ÏȶÁÈ¡µÄÊÇ»·¾³±äÁ¿¡°MAKEFILES¡±ËùÖ¸¶¨µÄÎļþÁÐ±í£¬Ö®ºó²ÅÊǹ¤×÷Ŀ¼ÏµÄmakefileÎļþ£¬¡°include¡±ËùÖ¸¶¨µÄÎļþÊÇÔÚmake·¢Ïִ˹ؼü×ÖµÄʱ¡¢ÔÝÍ£ÕýÔÚ¶ÁÈ¡µÄÎļþ¶ø×ªÈ¥¶ÁÈ¡¡°include¡±ËùÖ¸¶¨µÄÎļþ¡£
±äÁ¿¡°MAKEFILES¡±ÓÃÔÚ¡°make¡±µÝ¹éµ÷Óùý³ÌµÄͨÐÅÖУ¨²Î¿¼5.6 makeµÄµÝ¹éÖ´ÐÐ Ò»½Ú£©¡£Êµ¼ÊÓ¦ÓúÜÉÙʹÓô˱äÁ¿£¬ÒòΪһµ©ÔÚϵͳ»·¾³ÖÐÉèÖÃÁ˴˱äÁ¿£¬Ôڶ༶makeµ÷ÓÃʱ£»Ã¿Ò»¼¶make¹ý³Ì¶¼»á¶ÁÈ¡¡°MAKEFILES¡±±äÁ¿ËùÖ¸¶¨µÄÎļþ£¬ÕâÑùµ¼ÖÂÖ´ÐлìÂÒ£¬µÃµ½ÎÞ·¨Ô¤ÁϵĽá¹û¡£²»¹ý£¬ÎÒÃÇ¿ÉÒÔʹÓô˻·¾³±äÁ¿À´Ö¸¶¨Ò»¸ö°üº¬makeͨÓá°Òþº¬¹æÔò¡±¡¢ÒÔ¼°ÏµÍ³È«¾Ö±äÁ¿¶¨ÒåµÄÎļþ¡£Æ©È磬ÎÒÃÇÔÚÒ»¸öÎļþÖÐÉèÖÃÁËĬÈÏËÑË÷·¾¶£¬²¢½«±äÁ¿¡°MAKEFILES¡±Ö¸ÏòÕâ¸öÎļþ£¬ÄÇôËùÓеÄmake½ø³Ì¶¼Äܹ»Ê¹ÓÃÎÒÃÇËùÉèÖõÄĬÈÏËÑË÷·¾¶¡£¿ÉÒÔ¿´³ö£ºÊ¹ÓÃÕâÖÖ·½·¨ËùÉèÖõġ°Òþº¬¹æÔò¡±ºÍ±äÁ¿¶¨Òå¿ÉÒÔ±»ËùÓÐÔÚµ±Ç°ÏµÍ³ÉÏÖ´ÐеÄmake½ø³ÌËùʹÓ㬱äÁ¿¡°MAKEFILES¡±Ö¸ÏòÎļþËù°üº¬µÄËùÓж«Î÷»á¶ÔÈκÎÒ»´ÎmakeÖ´Ðйý³ÌÓÐЧ¡£
¹ØÓÚÕâ¸ö±äÁ¿µÄʹÓ㬴ó¼Ò¿ÉÄÜ»áÓÐÕâÑùµÄÏë·¨£ºÈÃlogin³ÌÐò×Ô¶¯µÄÔÚ×Ô¼ºµÄ¹¤×÷»·¾³ÖÐÉèÖô˻·¾³±äÁ¿£¬Ö¸ÏòÒ»¸ö°üº¬ÁËÌØÊâͨÓùæÔò¶¨ÒåµÄÎļþ£¨ÀýÈç×Ô¶¯Éú³É.cÎļþÒÀÀµ.pÎļþµÄ¹æÔò£©£¬ÄÇôÊéдµÄËùÓÐMakefile¶¼Äܹ»Ê¹ÓÃÕâ¸ö¹æÔò£¬¶ø²»ÐèÒªÔÚÿһ¸öMakefileÖж¼Ã÷È·¸ø³öÕâ¸ö¹æÔò¡£¿ÉÒÔ˵£¬Õâ²»ÊÇÒ»¸öºÃÏë·¨¡£ÒòΪÄÇЩÔÚÄãµÄ¹¤×÷»·¾³¿É±»makeÕýÈ·Ö´ÐеÄMakefile£¬ÔÚÆäËüÈ˵Ť×÷»·¾³ÖÐȴδ±ØÄܱ»makeÕýÈ·Ö´ÐС£ÒòΪËûÈ˵Ť×÷»·¾³ÖÐδ±Ø¾ÍͬÑù¶¨ÒåÓС°MAKEFILES¡±±äÁ¿£¬¼´¾ÍÊÇ´æÔÚ¶¨Ò壬±äÁ¿µÄȡֵҲδ±ØÏàͬ¡¢ËùÖ¸ÏòÎļþµÄÄÚÈÝҲδ±ØÏàͬ¡£ÒÀÀµÓÚ±äÁ¿¡°MAKEFILES¡±µÄMakefile²»¾ß±¸Í¨ÓÃÐÔ¡£
ÎÒÃÇÍÆ¼öÔÚMakefileÖÐʹÓÃָʾ·û¡°include¡±À´°üº¬Ìض¨Îļþ£¬¶ø±ÜÃâʹÓñäÁ¿¡°MAKEFILES¡±À´Ö¸¶¨°üº¬Îļþ¡£
 

1.5 ±äÁ¿ MAKEFILE_LIST

makeÔÚ¶ÁÈ¡¶à¸ömakefileÎļþ£¨°üÀ¨»·¾³±äÁ¿¡°MAKEFILES¡±Ö¸¶¨µÄ¡¢Ö´ÐÐmakeʱÃüÁîÐÐÖ¸¶¨µÄ¡¢¹¤×÷Ŀ¼ÏÂĬÈϵġ¢ÒÔ¼°Ä³Ò»¸ömakefileÎļþÖÐʹÓÃָʾ·û¡°include¡±Ö¸¶¨°üº¬µÄ£©Ê±£¬ÔÚÍê³ÉÒ»¸öÎļþµÄ¶ÁÈ¡ºó£¬ÔÚ¶ÔÕâ¸öÎļþ½øÐнâÎöÖ´ÐÐ֮ǰ£¬»á×Ô¶¯½«Õâ¸öÒѾ­±»¶ÁÈ¡µÄÎļþÃû×·¼Óµ½±äÁ¿¡°MAKEFILE_LIST¡±µÄ¶¨ÒåÓòÖС£
¿ÉÒÔͨ¹ý±äÁ¿¡°MAKEFILE_LIST¡±¶¨ÒåµÄ×îºóÒ»¸ö×ÖÀ´»ñÈ¡makeµ±Ç°ÕýÔÚ´¦ÀíµÄmakefileÎļþÃû¡£¾ÍÊÇ˵ÔÚÒ»¸öMakefileÖУ¬Èç¹ûʹÓÃָʾ·û¡°include¡±°üº¬ÁËÁíÍâÒ»¸öÎļþ£¬±äÁ¿¡°MAKEFILE_LIST¡±µÄ×îºóÒ»¸ö×ÖÖ»¿ÉÄÜÊÇָʾ·û¡°include¡±Ö¸¶¨ËùÒª°üº¬µÄÄǸöÎļþµÄÃû×Ö¡£
Ò»¸ömakefileµÄÄÚÈÝÈçÏ£º
 
name1 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
 
include inc.mk
 
name2 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
 
all:
@echo name1 = $(name1)
@echo name2 = $(name2)
 
Ö´ÐÐmakeÖ®ºó£¬½«¿´µ½ÒÔϽá¹û£º
name1 = Makefile
name2 = inc.mk
´ËÀýÖÐÉæ¼°ÁËmakeµÄº¯ÊýµÄÒÔ¼°±äÁ¿µÄ¶¨Ò巽ʽ£¬º¯ÊýºÍ±äÁ¿¶¨Ò巽ʽ½«ÔÚºóÐøÕ½ڽøÐÐÏêϸÌÖÂÛ¡£

1.6 ÆäËûÌØÊâ±äÁ¿

GNU makeÖ§³ÖÒ»¸öÌØÊâ±äÁ¿£¬´Ë±äÁ¿²»ÄÜͨ¹ýÈκÎ;¾­¸øËü¸³Öµ¡£ÔÚÒýÓô˱äÁ¿µÄµØ·½£¬Ëü±»Õ¹¿ªÎªÒ»¸öÌØ¶¨µÄÖµ¡£Ò»¸öÖØÒªµÄÌØÊâµÄ±äÁ¿ÊÇ¡°.VARIABLES¡±¡£ÔÚÒýÓõãËü±»Õ¹¿ªÎª£º´ËÒýÓõã֮ǰmakefileÎļþÖÐËù¶¨ÒåµÄËùÓÐÈ«¾Ö±äÁ¿ÁÐ±í£¬ÕâЩ±äÁ¿°üÀ¨£º¿Õ±äÁ¿£¨Î´¸³ÖµµÄ±äÁ¿£©ºÍmakeµÄÄÚǶ±äÁ¿£¬µ«²»°üº¬Ä¿±êÖ¸¶¨µÄ±äÁ¿£¬Ä¿±êÖ¸¶¨±äÁ¿Ö»ÔÚÌØ¶¨Ä¿±êµÄÉÏÏÂÎÄÓÐЧ£¨Ä¿±êËùÔÚ¹æÔòµÄÉÏÏÂÎÄ£©¡£¹ØÓÚÄ¿±ê±äÁ¿¿É²Î¿¼ 6.10 Ä¿±êÖ¸¶¨±äÁ¿ Ò»½Ú

1.7 makefileÎļþµÄÖØ½¨

Makefile¿ÉÓÉÆäËüÎļþÉú³É£¬ÀýÈçRCS»òSCCSÎļþ¡£Èç¹ûMakefileÓÉÆäËüÎļþÖØ½¨£¬ÄÇôÔÚmakeÔÚ¿ªÊ¼½âÎöÕâ¸öMakefileʱÐèÒªÖØÐ¶ÁÈ¡¸üкóµÄMakefile¡¢¶ø²»ÊÇ֮ǰµÄMakefile¡£makeµÄ´¦Àí¹ý³ÌÊÇÕâÑùµÄ£º
makeÔÚ¶ÁÈëËùÓÐmakefileÎļþÖ®ºó£¬Ê×ÏȽ«Ëù¶ÁÈ¡µÄÿ¸ömakefile×÷Ϊһ¸öÄ¿±ê£¬Ñ°ÕÒ¸üÐÂËüµÄ¹æÔò¡£Èç¹û´æÔÚ¸üÐÂijһ¸ömakefileÎļþµÄÃ÷È·¹æÔò»òÕßÒþº¬¹æÔò£¬¾ÍÈ¥¸üжÔÓ¦µÄmakefileÎļþ¡£Íê³ÉÕâÒ»¶¯×÷ºó£¬make»áÅжÏ֮ǰÒѾ­¶ÁÈ¡µÄmakefileÎļþÊÇ·ñ±»¸üУ¨Ö®Ç°Ëù¶ÁÈ¡µÄmakefileÄÚÈÝÊÇ·ñ¹ýÆÚ£©£¬Èç¹ûÓÐÎļþ±»¸üУ¬ÄÇômake¾ÍÇå³ý±¾´ÎÖ´ÐеÄ״̬²¢ÖØÐ¶ÁÈ¡ËùÓеÄmakefileÎļþ£¨´Ë¹ý³ÌÖУ¬Í¬Ñù»áÔÚ¶ÁÈ¡Íê³ÉÒÔºó³¢ÊÔÈ¥¸üÐÂËù¶ÁÈ¡µÄmakefileÎļþ£¬Í¨³£ÕâЩÎļþ²»»á±»ÔÙ´ÎÖØ½¨£¬ÒòΪËüÃÇÔÚʱ¼ä´ÁÉÏÒѾ­ÊÇ×îÐµģ©£¬¶ÁÈ¡Íê³ÉÒÔºó¿ªÊ¼½âÎöÒѾ­¶ÁÈëµÄmakefileÎļþ²¢¿ªÊ¼Ö´ÐбØÒªµÄ¶¯×÷¡£
ʵ¼ÊÓ¦ÓÃÖУ¬Ò»°ã»áÃ÷È·¸ø³ömakefileÎļþ£¬²¢²»ÐèÒªmake×Ô¶¯Öؽ¨ËüÃÇ¡£µ«ÊÇmakeÔÚÿһ´ÎÖ´ÐÐʱ×᳢ܻÊÔÖØ½¨ÒѾ­¶ÁÈ¡µÄmakefileÎļþ£¬Ñ°ÕÒºÏÊʵÄÒþº¬¹æÔòÀ´¸üÐÂËü¡£Èç¹û¾õµÃÕâÑù»áÓ°ÏìmakeÖ´ÐеÄЧÂÊ£¬¿ÉÒÔʹÓÃÒ»ÖÖ·½Ê½À´±ÜÃâmakeÔÚÖ´ÐÐʱΪÊÔÍ¼ÖØ½¨makefile¶øÑ°ÕÒÒþº¬¹æÔò¡£¿ÉÒÔÊéдһ¸öÃ÷È·µÄ¹æÔò£¬ÒÔmakefileÎļþ×÷ΪĿ±ê£¬ÃüÁîΪ¿Õ¡£ÕâÑù¾Í¿ÉÒÔ·ÀÖ¹makeÖ´ÐÐÊ±ÎªÖØ½¨´ËmakefileÎļþ¶øÑ°ÕÒºÏÊʵÄÒþº¬¹æÔò¡£
ÔÚÒ»¸öMakefileÖУ¬Èç¹û´æÔÚÒ»¸öûÓÐÒÀÀµ¶øÖ»ÓÐÃüÁîÐеÄ˫ðºÅ¹æÔò£¬ÄÇôÿ´ÎÖ´ÐÐmakeʱ£¬´Ë¹æÔòµÄÄ¿±êÎļþ½«»á±»ÎÞÌõ¼þµÄ¸üУ¨´Ë¹æÔò¶¨ÒåµÄÃüÁî»á±»ÎÞÌõ¼þÖ´ÐУ©¡£Èç¹ûÕâÑùÒ»¸ö¹æÔòµÄÄ¿±êÊÇmakeÐèÒª¶ÁÈ¡µÄmakefileÎļþ£¬ÄÇôÔÚÖ´ÐÐmakeʱ£¬Õâ¸ömakefileÎļþ£¨Ë«Ã°ºÅ¹æÔòµÄÄ¿±ê£©×ܻᱻÎÞÌõ¼þ¸üУ¬Ê¹µÃmakeµÄÖ´ÐÐÏÝÈëµ½Ò»¸öËÀÑ­»·£¨make¶ÁÈ¡Õâ¸öÎļþÖ®ºó£¬´ËÎļþ±»ÎÞÌõ¼þ¸üС¢µ¼ÖÂmakeÖØÐ¶ÁÈ¡¡¢¶Áȡ֮ºóÔÙ¸üС¢¸üÐÂÖ®ºóÔÙ¶ÁÈ¡µÄ¹ý³Ì£©¡£ÎªÁË·ÀÖ¹ÕâÖÖÇé¿öµÄ·¢Éú£¬makeÔÚÓöµ½Ò»¸öÄ¿±êÊÇmakefileÎļþµÄ˫ðºÅ¹æÔòʱ£¬½«ºöÂÔ¶ÔÕâ¸ö¹æÔòµÄÖ´ÐУ¨ÆäÖаüÀ¨ÁËʹÓá°MAKEFILES¡±Ö¸¶¨¡¢makeÃüÁîÐÐÖ¸¶¨¡¢Ö¸Ê¾·û¡°include¡±Ö¸¶¨µÄÐèÒªmake¶ÁÈ¡µÄËùÓÐmakefileÎļþÖж¨ÒåµÄÕâÒ»Àà˫ðºÅ¹æÔò£©¡£
Ö´ÐÐmakeʱ£¬Èç¹ûûÓÐʹÓá°-f£¨--file£©¡±Ñ¡ÏîÖ¸¶¨Ò»¸öÎļþ£¬make³ÌÐò½«¶ÁȡȱʡµÄÎļþ¡£ºÍʹÓá°-f£¨--file£©¡±Ñ¡Ïͬ£¬makeÎÞ·¨È·¶¨¹¤×÷Ŀ¼ÏÂÊÇ·ñ´æÔÚȱʡÃû³ÆµÄmakefileÎļþ¡£Èç¹ûȱʡmakefileÎļþ²»´æÔÚ£¬µ«¿ÉÒÔͨ¹ýÒ»¸ö¹æÔòÀ´´´½¨Ëü£¨´Ë¹æÔòÊÇÒþº¬¹æÔò£©£¬Ôò»á×Ô¶¯´´½¨È±Ê¡makefileÎļþ£¬Ö®ºóÖØÐ¶ÁÈ¡Ëü²¢¿ªÊ¼Ö´ÐС£
Òò´Ë£¬Èç¹ûÔÚµ±Ç°Ä¿Â¼Ï²»´æÔÚÒ»¸öȱʡµÄmakefileÎļþ£¬make½«»á°´ÕÕËÑË÷makefileÎļþµÄÃû³ÆË³ÐòÈ¥³¢ÊÔ´´½¨Ëü£¬Ö±µ½´´½¨³É¹¦»òÕß³¬Ô½ÆäȱʡµÄÃüÃû˳Ðò¡£ÐèÒªÃ÷È·µÄÒ»µãÊÇ£ºÖ´ÐÐmakeʱ£¬Èç¹û²»Äܳɹ¦µØ´´½¨È±Ê¡µÄmakefileÎļþ£¬²¢²»Ò»¶¨»áµ¼Ö´íÎó¡£makefileÎļþ£¨È±Ê¡ÃüÃûµÄ»òÕ߿ɱ»´´½¨µÄ£©²¢²»ÊÇmakeÕýÈ·ÔËÐеÄǰÌᣨͨ¹ýÖ¸¶¨ÖÕ¼«Ä¿±ê£¬Ê¹ÓÃmakeÒþº¬¹æÔòÒ²¿ÉÒÔÕýÈ·Ö´ÐÐmake£©¡£
µ±Ê¹Óá°-t£¨--touch£©¡±Ñ¡ÏîÀ´¸üÐÂMakefileµÄÄ¿±êÎļþ£¨¸üйæÔòÄ¿±êÎļþµÄʱ¼ä´Á£©Ê±£¬¶ÔÓÚÄÄЩÊÇmakefileÎļþµÄÄ¿±êÊÇÎÞЧµÄ£¬ÕâЩĿ±êÎļþ£¨makefileÎļþ£©µÄʱ¼ä´Á²¢²»»á±»¸üС£¾ÍÊÇ˵¼´Ê¹ÔÚÖ´ÐÐmakeʱʹÓÃÁËÑ¡Ïî¡°-t¡±£¬ÄÇЩĿ±êÊÇmakefileÎļþµÄ¹æÔòͬÑùÒ²»á±»Ö´ÐУ¨Öؽ¨ÕâЩmakefileÎļþ£¬¶øÆäËüµÄ¹æÔò²»»á±»Ö´ÐУ¬makeÖ»ÊǼòµ¥µÄ¸üйæÔòÄ¿±êÎļþµÄʱ¼ä´Á£©£»ÀàËÆ»¹ÓÐÑ¡Ïî¡°-q£¨¡ªquestion£©¡±ºÍ¡°-n£¨¡ªjust-print£© ¡±£¬ÕâÖ÷ÒªÊÇÒòΪһ¸ö¹ýʱµÄmakefileÎļþ¶ÔÆäËüÄ¿±êµÄÖØ½¨¹æÔòÔÚµ±Ç°¿´À´¿ÉÄÜÊÇ´íÎóµÄ¡£ÕýÒòΪÈç´Ë£¬ÔÚÖ´ÐÐÃüÁî¡°make ¨Cf mfile ¨Cn foo¡±Ê±£¬Ê×ÏÈmake»áÊÔÍ¼ÖØ½¨¡°mfileÎļþ¡±¡¢ÈçÓбØÒªÔòÖØÐ¶ÁÈ¡ËüµÄÄÚÈÝ£¬Ö®ºó»á´òÓ¡³ö¸üÐÂÄ¿±ê¡°foo¡±ËùÒªÖ´ÐеÄÃüÁµ«²»»áÕæÕýµÄÖ´ÐÐÕâЩÃüÁ¡£
ÔÚÕâÖÖÇé¿öʱ£¬Èç¹û²»Ï£ÍûÖØ½¨makefileÎļþ£¬ÐèÒªÔÚÖ´ÐÐmakeʱͨ¹ýÃüÁîÐн«Õâ¸ömakefileÎļþÖ¸¶¨Îª×îÖÕÄ¿±ê£¬ÕâÑùÑ¡Ïî¡°¨Ct¡±ºÍÆäËüÑ¡Ïî¾Í¶ÔÕâ¸öÖ¸¶¨µÄmakefileÎļþÄ¿±êÓÐЧ£¬´Ó¶ø·ÀÖ¹makeÖ´ÐÐÒÔÕâ¸ömakefileÎļþΪĿ±êµÄ¹æÔò£¨Èç¹ûÊÇ¡°-t¡±²ÎÊý£¬ÔòÊǼòµ¥µÄ¸üÐÂÕâ¸ömakefileÎļþµÄʱ¼ä´Á£©¡£ÃüÁî¡°make ¨Cf mfile ¨Cn mfile foo¡±Ö´ÐÐʱ»á¶ÁÈ¡Îļþ¡°mfile¡±£¬´òÓ¡³öÖØ½¨Îļþ¡°mfile¡±µÄÃüÁî¡¢ÖØ½¨¡°foo¡±µÄÃüÁ²»È¥Ö´ÕâЩÃüÁî¡£Ëù´òÓ¡µÄ¡¢ÓÃÓÚ¸üС°foo¡±Ä¿±êµÄÃüÁîÊÇÑ¡Ïî¡°-f¡±Ö¸¶¨µÄ¡¢Ã»Óб»Öؽ¨µÄ¡°mfile¡±ÎļþÖÐËù¶¨ÒåµÄÃüÁÎļþ¡°mfile¡±ÔÚ´Ë´ÎmakeÖ´Ðйý³ÌÖв¢Ã»Óб»Öؽ¨¡£

1.8 ÖØÔØÁíÍâÒ»¸ömakefile

ijЩÇé¿öÏ£¬´æÔÚÁ½¸öÏàÀàËÆµÄMakefile¡£ÆäÖÐÒ»¸ö£¨makefile-A£©ÐèҪʹÓö¨ÒåÔÚÁíÍâÒ»¸ö£¨makefile-B£©ÖйæÔò¡£Äܹ»Ïëµ½µÄÊÇÔÚ¡°makefile-A¡±ÖÐʹÓÃָʾ·û¡°include¡±°üº¬¡°mkaefile-B¡±£¬´ïµ½´ËÄ¿µÄ¡£µ«ÊÇ£¬¼ÙÉèÔÚmakefile-AÖÐÎªÖØ½¨Îļþ¡°foo.o¡±¶¨ÒåÁËÒ»¸ö¹æÔò£¬Í¬ÑùÔÚmakefile-BÖÐҲΪÎļþfoo.o¶¨ÒåÁËÁíÍâÒ»¸öÖØ½¨¹æÔò£»ÕâÑù£¬ÔÚmakefile-AÖаüº¬ÁËmakefile-B£¬µ±makeÔÚ´¦Àímakefile-Aʱ»á·¢ÏÖͬһ¸öÄ¿±êÎļþ¡°foo.o¡±Í¬Ê±´æÔÚÁ½¸ö²»Í¬Öؽ¨¹æÔò£¬ÕâÊÇmakeËù²»ÔÊÐíµÄ¡£Òò´Ë£¬´¦ÀíÕâÖÖÇé¿ö£¬Ê¹ÓÃָʾ·û¡°include¡±ÏÔÈ»ÊÇÐв»Í¨µÄ¡£ÎªÁËʵÏÖ´ËÄ¿µÄGNU makeÌṩÁíÍâÒ»ÖÖ»úÖÆ¡£¾ßÌå×ö·¨ÈçÏ£º
ÔÚÐèҪʹÓÃÆäËümakefile¹æÔò¶¨ÒåµÄMakefile£¨Ê¹ÓÃָʾ·û¡°include¡±°üº¬ÆäËüÎļþ£©ÖУ¬¶¨ÒåÒ»¸ö³ÆÖ®Îª¡°ËùÓÐÆ¥Åäģʽ¡±µÄ¹æÔò¡£Õâ¸ö¡°ËùÓÐÆ¥Åäģʽ¡±±»ÓÃÀ´´´½¨ÄÇЩÔÚMakefileÖÐûÓиø³öÃ÷È·´´½¨¹æÔòµÄÄ¿±êÎļþ¡£¾ÍÊÇ˵£¬Èç¹ûÔÚµ±Ç°MakefileÎļþÖв»ÄÜÕÒµ½Ò»¸öºÏÊʵĹæÔòÀ´Öؽ¨Ä³Ò»¸öÄ¿±êÎļþ£¬¾ÍʹÓÃÕâ¸ö¡°ËùÓÐÆ¥Åäģʽ¡±¹æÔòÀ´Öؽ¨Õâ¸öÄ¿±ê¡£
¿´Ò»¸öÀý×Ó£¬¼ÙÉè´æÔÚÒ»¸öÃüÃûΪ¡°Makefile¡±µÄmakefileÎļþ£¬ÆäÖаüº¬ÁËÄ¿±ê¡°bar¡±µÄÖØ½¨¹æÔòºÍÆäËüһЩ¹æÔò£¬Í¬Ê±´æÔÚÒ»¸öÃüÃûΪ¡°GNUmakefile¡±µÄÎļþ£¬´ËÎļþÄÚÈÝÈçÏ£º
 
#sample GNUmakefile
foo:
frobnicate > foo
 
%: force
@$(MAKE) -f Makefile $@
force: ;
 
Ö´ÐС°make foo¡±Ê±£¬make½«´¦Àí¹¤×÷Ŀ¼Ïµġ°GNUmakefile¡±²¢Ö´ÐÐÄ¿±ê¡°foo¡±ËùÔڵĹæÔò£¬´´½¨£¨Öؽ¨£©Ä¿±êÎļþ¡°foo¡±µÄÃüÁîÊÇ£º¡°frobnicate > foo¡±£¨ÔÚ¡°GNUmakefile¡±Öиø³öÁË´´½¨ËüµÄ¹æÔò£©¡£Èç¹ûÖ´ÐÐÁíÍâÒ»¸öÃüÁî¡°make bar¡±£¬ÓÉÓÚÄ¿±ê ¡°bar¡± ûÓÐÔÚ¡°GUNmakefile¡±Öиø³ö´´½¨£¨Öؽ¨£©¹æÔò£¬ÄÇômake½«Ê¹Óá°ËùÓÐÆ¥Åäģʽ¡±¹æÔòÀ´´´½¨£¨Öؽ¨£©Ëü¡±¡£ÔÚ¡°GUNmakefile¡±Öд˹æÔòËù¶¨ÒåµÄÃüÁîΪ£º¡°$(MAKE) -f Makefile bar¡±£¬Õâ¸öÃüÁÔÙ´ÎÖ´ÐС°make¡±²¢½«Îļþ¡°Makefile¡±×÷Ϊ´Ë´ÎÐèÒª´¦ÀíµÄmakefileÎļþ£¬¶øÔÚÎļþ¡°Makefile¡±Öж¨ÒåÁËÄ¿±ê¡°bar¡±µÄÖØ½¨¹æÔò£¬Òò´Ëmake¾ÍʹÓÃÕâ¸ö¹æÔòÀ´Öؽ¨Ä¿±ê¡°bar¡±¡£´Ë¹ý³ÌͬÑùÊÊÓÃÓÚÆäËüÔÚ ¡°GNUmakefile¡±ÖÐûÓиø³öÖØ½¨¹æÔòµÄÄ¿±ê¡£´Ë·½Ê½Áé»îÖ®´¦ÔÚÓÚ£ºÈç¹ûÔÚ¡°Makefile¡±ÎļþÖÐͬÑù´æÔÚ¸üÐÂÎļþ¡°foo¡±µÄ¹æÔò£¬ÓÉÓÚmakeÖ´ÐÐʱֻ»á´¦ÀíÎļþ¡°GUNmakefile¡±²¢ÔÚÆäÖÐÄܹ»ÕÒµ½Ä¿±ê¡°foo¡±µÄÖØ½¨¹æÔò£¬ËùÒÔmake²»»áÈ¥Ö´ÐÐÕâ¸ö¡°ËùÓÐģʽƥÅ乿Ôò¡±£¨Àý×ÓÖÐÄ¿±ê¡°%¡±ËùÔڵĹæÔò£©¡£ÕâÑùµÄ×ö·¨±ÜÃâÁËÓÉÓÚʹÓÃָʾ·û¡°include¡±°üº¬Ò»¸ömakefileÎļþ£¬Ëù¿ÉÄÜ´øÀ´µÄÄ¿±ê¹æÔòÖØ¸´¶¨ÒåÎÊÌâ¡£
×¢Òâµ½ÔÚÎļþ¡°GNUmakefile¡±£¬Ä£Ê½¹æÔòµÄģʽֻʹÓÃÁ˵¥¶ÀµÄ¡°%¡±£¨Òò´Ë³ÆËüΪ¡°ËùÓÐģʽƥÅ乿Ôò¡±£©£¬ËüÆ¥ÅäÈκÎÒ»¸öÄ¿±ê£»ËüµÄÒÀÀµÊÇ¡°force¡±£¬¡°force¡±Õâ¸öÒÀÀµ±£Ö¤Á˼´Ê¹ËùÒªÖØ½¨µÄÄ¿±êÎļþÒѾ­´æÔÚÓÚµ±Ç°Ä¿Â¼£¬Õâ¸ö¹æÔòÒ²»á±»Ö´ÐУ¨ÔÚÆÕͨ¹æÔòÖУ¬Èç¹ûÄ¿±êÎļþÒÑ´æÔÚ£¬ÔòÐèÒª¸ù¾Ý¹æÔòÒÀÀµÎļþµÄÐÞ¸ÄÇé¿ö¾ö¶¨ÊÇ·ñÖØ½¨¹æÔòµÄÄ¿±êÎļþ£©£»¡°force¡±ËùÔÚ¹æÔòµÄ¶¨ÒåʹÓÿÕÃüÁĿµÄΪÁË·ÀÖ¹makeÖ´ÐÐʱÊÔÍ¼ÎªÖØ½¨Õâ¸öÄ¿±ê£¨¡°force¡±£©¶øÑ°ÕÒ¹æÔò£¬·ñÔòΪÁËÖØ½¨Ä¿±ê¡°force¡±£¬make½«»áʹÓÃģʽ¹æÔò¡°%: force¡±£¬µ¼ÖÂmakeÖ´Ðйý³ÌÏÝÈëËÀÑ­»·¡£

1.9 makeÈçºÎ½âÎömakefileÎļþ

GUN makeµÄÖ´Ðйý³Ì·ÖΪÁ½¸ö½×¶Î¡£
µÚÒ»½×¶Î£º¶ÁÈ¡ËùÓÐmakefileÎļþ£¨°üÀ¨¡°MAKIFILES¡±±äÁ¿Ö¸¶¨µÄ¡¢ÃüÁîÐÐÑ¡Ïî¡°-f(--file)¡±Ö¸¶¨µÄ¡¢ÒÔ¼°ÔÚÖ÷MakeifleÖÐʹÓÃָʾ·û¡°include¡±Ö¸¶¨°üº¬µÄ£©£¬ÄÚ½¨ËùÓаüº¬µÄ±äÁ¿¡¢Ã÷È·¹æÔòºÍÒþº¬¹æÔò£¬²¢½¨Á¢ËùÓÐÄ¿±êºÍÒÀÀµÖ®¼äµÄÒÀÀµ¹ØÏµ½á¹¹Á´±í¡£
ÔÚµÚ¶þ½×¶Î£º¸ù¾ÝµÚÒ»½×¶ÎÒѾ­½¨Á¢µÄÒÀÀµ¹ØÏµ½á¹¹Á´±í¾ö¶¨ÄÄЩĿ±êÐèÒª±»Öؽ¨£¬²¢Ê¹ÓöÔÓ¦µÄ¹æÔò°´ÕÕÒ»¶¨µÄ˳ÐòÒÀ´ÎÖØ½¨ÕâЩĿ±ê¡£
Àí½âmakeÖ´Ðйý³ÌµÄÁ½¸ö½×¶ÎÊǺÜÖØÒªµÄ¡£Àí½âÕâÒ»¹ý³Ì½«Ê¹ÎÒÃÇÁ˽âmakeÔÚÖ´Ðйý³ÌÖУ¬±äÁ¿ÒÔ¼°º¯ÊýÔÚʲôʱ»ú¡¢ÈçºÎ±»Õ¹¿ª¡£±äÁ¿ºÍº¯ÊýµÄÕ¹¿ªÊ±»úºÍ»úÖÆ¾ö¶¨MakefileÈçºÎ±»Ö´ÐУ¬ÕâÒ²ÊÇÊéдMakefileÐèÒª¹Ø×¢µÄµØ·½¡£±¾½Ú½«¶ÔmakeÖ´ÐÐʱ£¬±äÁ¿ÒýÓõÄÕ¹¿ªÊ±»ú¡¢ÒÔ¼°²»Í¬½×¶Î±äÁ¿ÒýÓõÄÕ¹¿ª¹ý³Ì½øÐмòµ¥×ܽᣨÀí½â±äÁ¿ºÍº¯ÊýÒýÓõÄÕ¹¿ª½×¶Î£¬¶ÔÕýȷʹÓñäÁ¿·Ç³£ÓаïÖú£©¡£Ê×ÏÈ£¬Ã÷È·Á½¸ö¸ÅÄ
1. ±äÁ¿º¯ÊýµÄÁ¢¼´Õ¹¿ª£ºÔÚmakeÖ´ÐеĵÚÒ»½×¶ÎÖÐÈç¹û±äÁ¿ºÍº¯ÊýµÄÒýÓñ»Õ¹¿ª£¬ÄÇô³Æ´ËÕ¹¿ªÊÇ¡°Á¢¼´¡±µÄ¡£ÔÚmakeÖ´ÐеĵÚÒ»½×¶Î£¬¸ù¾Ý¹æÔò½¨Á¢ÕûÌåÒÀÀµ¹ØÏµ½á¹¹Á´±íʱ£¬Ê×ÏÈ»á¶Ô¹æÔòÖÐһЩµØ·½ËùÒýÓõıäÁ¿½øÐÐÕ¹¿ª£¨½¨Á¢ÕýÈ·µÄÕûÌåÒÀÀµ¹ØÏµÁ´±í£¬¶Ô¹æÔòijЩµØ·½±äÁ¿ºÍº¯ÊýÒýÓõÄÕ¹¿ªÊÇÏȾöÌõ¼þ£©¡£
2. ±äÁ¿º¯ÊýµÄÑÓºóÕ¹¿ª£º±äÁ¿¡¢º¯Êý²»ÊÇÔÚmakeÖ´ÐеĵÚÒ»½×¶ÎÕ¹¿ªµÄ£¬³ÆÎªÕ¹¿ªÊÇ¡°ÑӺ󡱵ġ£±»¡°ÑÓºó¡±Õ¹¿ªµÄ±äÁ¿ºÍº¯Êý£¬ÆäÕ¹¿ª·¢ÉúÔÚÒýÓô˱äÁ¿µÄ¹æÔòÕæÕý±»Ö´ÐÐʱ£¨¹æÔòÃüÁîÖÐÒýÓñäÁ¿»òÕߺ¯Êý£©£¬»òÊÇmake´¦ÀíµÄµÚ¶þ½×¶Î¡£
ÔÚÕâÀïͨ¹ý¼òµ¥µÄÓïÑÔÃèÊö£¬¿ÉÄܱȽϻÞɬ£¬²»ÈÝÒ×Àí½â¡£Ã»ÓйØÏµ£¬Í¨¹ýºóÐøÕ½ÚÄÚÈݵÄÔĶÁ£¬½«»áÒ»²½²½µØÊìϤmakeµÄÖ´Ðйý³Ì¡£ÔĶÁ¹ý³ÌÖпÉÒԻعýÍ·À´²Î¿¼±¾½ÚÄÚÈÝ¡£ÏàÐÅÔÚÔĶÁÍê±¾ÊéÖ®ºó£¬¶ÔmakeµÄÕû¸öÖ´Ðйý³Ì£¬»áÓбȽÏÇåÎúµØÀí½â¡£
 

1.9.1 ±äÁ¿È¡Öµ

±äÁ¿¶¨Òå½âÎöµÄ¹æÔòÈçÏ£º
 
IMMEDIATE = DEFERRED
IMMEDIATE ?= DEFERRED
IMMEDIATE := IMMEDIATE
IMMEDIATE += DEFERRED or IMMEDIATE
define IMMEDIATE
DEFERRED
Endef
 
¶ÔÓÚʹÓÃ×·¼Ó·û¡°+=¡±¸³ÖµµÄ±äÁ¿£¬Èç¹û´ËǰÕâ¸ö±äÁ¿±»¶¨ÒåΪһ¸ö¼òµ¥±äÁ¿£¨Ê¹Óà :=¶¨ÒåµÄ£©ÔòËüÊÇÁ¢¼´Õ¹¿ªµÄ±äÁ¿£¬ÆäËüÇé¿ö¶¼ÊÇ¡°ÑÓºó¡±Õ¹¿ªµÄ±äÁ¿¡£

1.9.2 Ìõ¼þÓï¾ä

ËùÓÐʹÓõ½Ìõ¼þÓï¾äÔÚ²úÉú·ÖÖ§µÄµØ·½£¬makeÖ´ÐÐʱ£¬Ê×Ïȸù¾ÝÔ¤ÉèÌõ¼þ½«ÕýÈ·µØ·ÖÖ§Õ¹¿ª×÷ΪËùÒª½âÎöÖ´ÐеÄÄÚÈÝ¡£¾ÍÊÇ˵Ìõ¼þ·ÖÖ§µÄÕ¹¿ªÊÇ¡°Á¢¼´¡±µÄ¡£ÆäÖаüÀ¨£º¡°ifdef¡±¡¢¡°ifeq¡±¡¢¡°ifndef¡±ºÍ¡°ifneq¡±ËùÈ·¶¨µÄËùÓзÖÖ§¡£

1.9.3 ¹æÔòµÄ¶¨Òå

ËùÓеĹæÔòÔÚmakeÖ´ÐÐʱ£¬¶¼°´ÕÕÈçϵÄģʽչ¿ª£º
 
IMMEDIATE : IMMEDIATE ; DEFERRED
DEFERRED
 
ÆäÖУ¬¹æÔòµÄÄ¿±êºÍÒÀÀµÁбíÖÐÒýÓõıäÁ¿£¬ÊÇÁ¢¼´Õ¹¿ª±äÁ¿¡£¶ø¹æÔòµÄÃüÁîÐÐÖÐÒýÓõıäÁ¿ÊÇÑÓºóÕ¹¿ªµÄ±äÁ¿¡£´Ëģʽ¶ÔËùÓеĹæÔòÓÐЧ£¬°üÀ¨Ã÷È·¹æÔò¡¢Ä£Ê½¹æÔò¡¢ºó׺¹æÔò¡¢¾²Ì¬Ä£Ê½¹æÔò¡£

1.10 ×ܽá

makeµÄÖ´Ðйý³ÌÈçÏ£º
1. ÒÀ´Î¶ÁÈ¡±äÁ¿¡°MAKEFILES¡±Ö¸¶¨µÄmakefileÎļþÁÐ±í£»
2. ¶ÁÈ¡¹¤×÷Ŀ¼ÏµÄmakefileÎļþ£¨¸ù¾ÝÃüÃûµÄ²éÕÒ˳Ðò¡°GNUmakefile¡±£¬¡°makefile¡±£¬¡°Makefile¡±£¬Ê×ÏÈÕÒµ½ÄǸö¾Í¶ÁÈ¡ÄǸö£©£»
3. ÒÀ´Î¶ÁÈ¡¹¤×÷Ŀ¼makefileÎļþÖÐʹÓÃָʾ·û¡°include¡±Ö¸¶¨°üº¬µÄÎļþ£»
4. ÎªÒѶÁÈ¡µÄËùÓÐmakefileÎļþѰÕÒÖØ½¨¹æÔò£¬³¢ÊÔ¸üÐÂÒѶÁÈ¡µÄmakefileÎļþ¡£ÔÚÒѾ­¶ÁÈ¡µÄËùÓйæÔòÖУ¬Èç¹û´æÔÚÕâÑùÒ»¸ö¹æÔò£¬ÆäÄ¿±êÎļþÊÇÒ»¸öÒѶÁÈ¡µÄmakefileÎļþ£¬ÄÇô¾ÍÖ´ÐÐÕâ¸ö¹æÔòÀ´¸üжÔÓ¦µÄmakefileÎļþ¡£Èç¹ûÈκÎÒ»¸öÒѶÁÈ¡µÄmakefileÔڴ˲½Öè±»¸üУ¬ÄÇô´ÓµÚÒ»²½¿ªÊ¼ÖØÐÂÖ´ÐУ»
5. ³õʼ»¯±äÁ¿Öµ²¢Õ¹¿ªÄÇЩÐèÒªÁ¢¼´Õ¹¿ªµÄ±äÁ¿ºÍº¯Êý£¬²¢¸ù¾ÝÔ¤ÉèÌõ¼þÈ·¶¨Ö´ÐзÖÖ§£»
6. ¸ù¾Ý¡°ÖÕ¼«Ä¿±ê¡±ÒÔ¼°ÆäËüÄ¿±ê£¨¿ÉÄÜÊÇÖÕ¼«Ä¿±êµÄÒÀÀµ¡¢»òÕßÖÕ¼«Ä¿±êÒÀÀµµÄÒÀÀµ£©µÄÒÀÀµ¹ØÏµ½¨Á¢ÕûÌåÒÀÀµ¹ØÏµÁ´±í£»
7. ÒÀÕÕÉÏÒ»²½Ëù½¨Á¢µÄÕûÌåÒÀÀµ¹ØÏµÁ´±í£¬°´ÕÕ˳ÐòÒÀ´ÎÖ´ÐÐ ¡°ÖÕ¼«Ä¿±ê¡±ËùÓÐÒÀÀµ£¨»òÕßËüµÄÒÀÀµ£©µÄ¸üйæÔò£¨Èç¹û¹æÔòµÄÒÀÀµÎļþÖÐÈÎÒ»¸öµÄʱ¼ä´Á±ÈÄ¿±êÎļþУ¬ÔòʹÓùæÔò¶¨ÒåµÄÃüÁîÖØ½¨¹æÔòµÄÄ¿±êÎļþ£©£»
8. Ö´ÐС°ÖÕ¼«Ä¿±ê¡±ËùÔڵĹæÔò¡£
 

˵Ã÷£º
Ö´ÐÐÒ»¸ö¹æÔòµÄ¹ý³ÌÊÇÕâÑùµÄ£º
¶ÔÓÚÒ»¸ö´æÔڵĹæÔò£¨Ã÷È·¹æÔòºÍÒþº¬¹æÔò£©Ê×ÏÈ£¬make³ÌÐò½«±È½ÏÄ¿±êÎļþºÍËùÓеÄÒÀÀµÎļþµÄʱ¼ä´Á¡£Èç¹ûÄ¿±êµÄʱ¼ä´Á±ÈËùÓÐÒÀÀµÎļþµÄʱ¼ä´Á¸üУ¨ÒÀÀµÎļþÔÚÉÏÒ»´ÎÖ´ÐÐmakeÖ®ºóûÓб»Ð޸ģ©£¬ÄÇôʲôҲ²»×ö¡£·ñÔò£¨ÒÀÀµÎļþÖеÄijһ¸ö»òÕßÈ«²¿ÔÚÉÏÒ»´ÎÖ´ÐÐmakeºóÒѾ­±»Ð޸Ĺý£©£¬¹æÔòËù¶¨ÒåµÄÖØ½¨Ä¿±êµÄÃüÁ»á±»Ö´ÐС£ÕâÊÇmake¹¤×÷µÄ»ù´¡£¬Ò²ÊÇÆäÖ´ÐйæÖÆËù¶¨ÒåÃüÁîµÄÒÀ¾Ý£¨ºóÐøÌÖÂÛ¹æÔòʱ½«»á¶Ô´ËÏêϸµØËµÃ÷£©¡£

 

[·¢ÆÀÂÛ] ÆÀÂÛ ÖØÒªÌáʾ£º¾¯ÌèÐé¼ÙÖн±ÐÅÏ¢!
  • chinaunixÍøÓÑ 2011-03-30 19:27
    Ôõô²»¼û¸üÐÂÁË£¬ÒѾ­ºÃ³¤ºÃ³¤Ê±¼äÁË
  • chinaunixÍøÓÑ 2010-12-22 23:23
    ͦºÃµÄ£¬×ªÁË
  • chinaunixÍøÓÑ 2009-08-16 15:56
    ºÇºÇ£¬Ê²Ã´Ê±ºò³öV1.6°æµÄMAKEÖÐÎÄÊֲ᣿
  • chinaunixÍøÓÑ 2009-07-15 12:43
    ͦºÃµÄ ¿´¿´ÔÙÀ´
Ç×£¬Äú»¹Ã»ÓеǼ,Çë[µÇ¼]»ò[×¢²á]ºóÔÙ½øÐÐÆÀÂÛ