µ±Ç°Î»ÖãºÊ×Ò³ > ǶÈëʽÅàѵ > ǶÈëʽѧϰ > ½²Ê¦²©ÎÄ > linux makeÃüÁî°²×°Ïê½â
¶ÔÓÚGNU Make»òÐíºÜ¶àWindows¿ª·¢µÄ³ÌÐòÔ±²¢²»ÊǺÜÁ˽⣬ÒòΪWindowsÖеĺܶ༯³É¿ª·¢»·¾³(IDE)¶¼°ïÎÒÃÇ×öÁËÕâ¼þÊ¡£µ«ÊÇ×÷Ϊһ¸öרҵ´ÓÊÂLinuxǶÈëʽ¿ª·¢µÄ³ÌÐòÔ±¾Í±ØÐëÒªÁ˽âGNU Make£¬»á²»»áʹÓÃGNU Make´ÓÒ»¶¨½Ç¶ÈÉÏ·´Ó¦ÁËÒ»¸öÈËÊÇ·ñ¾ß±¸´óÐ͹¤³ÌÄÜÁ¦¡£±¾ÎÄÖ÷ÒªÎ§ÈÆMakeÃüÁîÕ¹¿ª£¬½éÉÜLinuxÏÂMakeµÄʹÓÃÒÔ¼°MakefileµÄÓï·¨ºÍʹÓÃMake½øÐÐÔ´Âë°²×°¡£
Ò»¡¢Ê²Ã´ÊÇGNU Make
GNU MakeÊÇÒ»¸ö¿ØÖÆ´Ó³ÌÐòµÄÔ´ÎļþÖÐÉú³É³ÌÐòµÄ¿ÉÖ´ÐÐÎļþºÍÆäËû·ÇÔ´ÎļþµÄ¹¤¾ß¡£
Make¿ÉÒÔ´ÓÒ»¸öÃûΪMakefileµÄÎļþÖлñµÃÈçºÎ¹¹½¨³ÌÐòµÄ֪ʶ£¬¸ÃÎļþÁгöÁËÿ¸ö·ÇÔ´ÎļþÒÔ¼°ÈçºÎ´ÓÆäËûÎļþ¼ÆËãËü¡£µ±Äã±àдһ¸ö³ÌÐòʱ£¬ÄãÓ¦¸ÃΪËü±àдһ¸öMakefileÎļþ£¬ÕâÑù¾Í¿ÉÒÔʹÓÃMakeÀ´±àÒëºÍ°²×°Õâ¸ö³ÌÐò¡£
¶þ¡¢ÈçºÎ»ñÈ¡Make
Make¿ÉÒÔÔÚGNUµÄÖ÷ÒªFTP·þÎñÆ÷ÉÏÕÒµ½£ºhttp : //ftp.gnu.org/gnu/make/ (ͨ¹ýHTTP)ºÍ ftp://ftp.gnu.org/gnu/make/ (ͨ¹ýFTP)¡£ËüÒ²¿ÉÒÔÔÚGNU¾µÏñÁбíÉÏÕÒµ½; Ç뾡¿ÉÄÜGNUµÄ¾µÏñÁÐ±í¡£
Èý¡¢ÎªÊ²Ã´ÐèÒªMake
ÈκÎÒ»ÖÖ¼¼ÄÜ»ò֪ʶ¶¼ÊÇÔ´Ö®ÓÚijÖÖÉç»áÐèÇó£¬ÄÇΪʲôҪÓÃMakeÄØ?µ±ÏîĿԴÎļþºÜÉÙµÄʱºò£¬ÎÒÃÇÒ²Ðí»¹¿ÉÒÔÊÖ¶¯Ê¹ÓÃgccÃüÁîÀ´½øÐбàÒ룬µ«Êǵ±ÏîÄ¿·¢Õ¹µ½Ò»¸öÅÓ´óµÄ¹æÄ£Ê±£¬ÔÙÊÖ¶¯ÇÃgccÃüÁîÈ¥±àÒë¾Í±äµÃ²»¿ÉÄܵÄÊÂÇé¡£ËùÒÔÄØ£¬ÔÚÕâÑùµÄÀúÊ·±³¾°Ï£¬¾Í³öÏÖÁËһλ´óÅ£(˹ͼÑÇÌØ··Ñ¶ûµÂÂü)£¬ÔÚ1977Äê±´¶ûʵÑéÊÒÖÆ×÷ÁËÕâÑùÒ»¸öÈí¼þ£¬ËüµÄÃû×־ͽÐ×öMake¡£ËùÒÔʵ¼Ê¿ª·¢ÖУ¬ÎÒÃÇÔÚ±àÒë´óÐÍÏîÄ¿µÄʱºòÍùÍù»áʹÓÃMake½øÐбàÒ룬Ϊ´ËÎÒÃÇ»¹ÐèÒªÁ˽âMakeÈí¼þËùÒÀÀµµÄMakefile¹æÔòÎļþ¡£
ËÄ¡¢Makefile
Makefile ÎļþÐèÒª°´ÕÕijÖÖÓï·¨½øÐбàд£¬ÎļþÖÐÐèҪ˵Ã÷ÈçºÎ±àÒë¸÷¸öÔ´Îļþ²¢Á¬½ÓÉú³É¿ÉÖ´ÐÐÎļþ£¬²¢ÒªÇó¶¨ÒåÔ´ÎļþÖ®¼äµÄÒÀÀµ¹ØÏµ¡£MakefileµÄÓï·¨»¹ÊÇÂÔ΢ÓÐЩ¸´ÔÓ£¬Òòƪ·ùÓÐÏÞ£¬±¾ÎÄÖ»ÄܼòÊöMakefileµÄ±àдÔÔò¡£
(1)MakefileµÄ×é³É²¿·Ö
Makefile°üº¬Îå¸ö¶«Î÷£ºÏÔʾ¹æÔò£¬Òþʽ¹æÔò£¬±äÁ¿¶¨Ò壬Îļþָʾ£¬×¢ÊÍ¡£
<1>ÏÔʽ¹æÔò,ÏÔʽ¹æÔò˵Ã÷ÁË£¬ÈçºÎÉú³ÉÒ»¸ö»ò¶àµÄµÄÄ¿±êÎļþ¡£ÕâÊÇÓÉMakefileµÄÊéдÕßÃ÷ÏÔÖ¸³ö£¬ÒªÉú³ÉµÄÎļþ£¬ÎļþµÄÒÀÀµÎļþ£¬Éú³ÉµÄÃüÁî¡£
<2>Òþʽ¹æÔò,ÓÉÓÚÎÒÃǵÄmakeÓÐ×Ô¶¯ÍƵ¼µÄ¹¦ÄÜ£¬ËùÒÔÒþ»ÞµÄ¹æÔò¿ÉÒÔÈÃÎÒÃDZȽϴֲڵؼòÂÔµØÊéдMakefile£¬ÕâÊÇÓÉmakeËùÖ§³ÖµÄ¡£
<3>±äÁ¿µÄ¶¨Òå,ÔÚMakefileÖÐÎÒÃÇÒª¶¨ÒåһϵÁеıäÁ¿£¬±äÁ¿Ò»°ã¶¼ÊÇ×Ö·û´®£¬Õâ¸öÓеãÄãCÓïÑÔÖеĺ꣬µ±Makefile±»Ö´ÐÐʱ£¬ÆäÖеıäÁ¿¶¼»á±»À©Õ¹µ½ÏàÓ¦µÄÒýÓÃλÖÃÉÏ¡£
<4>Îļþָʾ,Æä°üÀ¨ÁËÈý¸ö²¿·Ö£¬Ò»¸öÊÇÔÚÒ»¸öMakefileÖÐÒýÓÃÁíÒ»¸öMakefile£¬¾ÍÏñCÓïÑÔÖеÄincludeÒ»Ñù;ÁíÒ»¸öÊÇÖ¸¸ù¾ÝijЩÇé¿öÖ¸¶¨MakefileÖеÄÓÐЧ²¿·Ö£¬¾ÍÏñCÓïÑÔÖеÄÔ¤±àÒë#ifÒ»Ñù;»¹ÓоÍÊǶ¨ÒåÒ»¸ö¶àÐеÄÃüÁî¡£ÓйØÕâÒ»²¿·ÖµÄÄÚÈÝ£¬ÎÒ»áÔÚºóÐøµÄ²¿·ÖÖн²Êö¡£
<5>×¢ÊÍ,MakefileÖÐÖ»ÓÐÐÐ×¢ÊÍ£¬ºÍUNIXµÄShell½Å±¾Ò»Ñù£¬Æä×¢ÊÍÊÇÓÓ#”×Ö·û£¬Õâ¸ö¾ÍÏñC/C++Öеē//”Ò»Ñù¡£Èç¹ûÄãÒªÔÚÄãµÄMakefileÖÐʹÓÓ#”×Ö·û£¬¿ÉÒÔÓ÷´Ð±¿ò½øÐÐתÒ壬È磺“/#”¡£
(2) MakefileµÄ¹æÔò
ÎÒÃÇÏÈÀ´´ÖÂԵؿ´Ò»¿´MakefileµÄ¹æÔò¡£
target... : prerequisites ...
command
...
...
targetÒ²¾ÍÊÇÒ»¸öÄ¿±êÎļþ£¬¿ÉÒÔÊÇObject File£¬Ò²¿ÉÒÔÊÇÖ´ÐÐÎļþ¡£»¹¿ÉÒÔÊÇÒ»¸ö±êÇ©(Label)£¬¶ÔÓÚ±êÇ©ÕâÖÖÌØÐÔ£¬ÔÚºóÐøµÄ“αĿ±ê”Õ½ÚÖлáÓÐÐðÊö¡£
prerequisites¾ÍÊÇ£¬ÒªÉú³ÉÄǸötargetËùÐèÒªµÄÎļþ»òÊÇÄ¿±ê¡£
commandÒ²¾ÍÊÇmakeÐèÒªÖ´ÐеÄÃüÁî¡£(Ò»¶¨ÒªÒÔTab¼ü×÷Ϊ¿ªÍ·)
ÕâÊÇÒ»¸öÎļþµÄÒÀÀµ¹ØÏµ£¬Ò²¾ÍÊÇ˵£¬targetÕâÒ»¸ö»ò¶à¸öµÄÄ¿±êÎļþÒÀÀµÓÚprerequisitesÖеÄÎļþ£¬ÆäÉú³É¹æÔò¶¨ÒåÔÚcommandÖС£Ëµ°×Ò»µã¾ÍÊÇ˵£¬prerequisitesÖÐÈç¹ûÓÐÒ»¸öÒÔÉϵÄÎļþ±ÈtargetÎļþÒªÐµĻ°£¬commandËù¶¨ÒåµÄÃüÁî¾Í»á±»Ö´ÐС£Õâ¾ÍÊÇMakefileµÄ¹æÔò¡£Ò²¾ÍÊÇMakefileÖкËÐĵÄÄÚÈÝ¡£
(3)Makefile֮ģʽ¹æÔò
ģʽ¹æÔòÆäʵҲÊÇÆÕͨ¹æÔò£¬µ«ËüʹÓÃÁËÈç%ÕâÑùµÄͨÅä·û¡£ÈçÏÂÃæµÄÀý×Ó£º
´Ë¹æÔòÃèÊöÁËÒ»¸ö.oÎļþÈçºÎÓɶÔÓ¦µÄ.cÎļþ´´½¨¡£¹æÔòµÄÃüÁîÐÐÖÐʹÓÃÁË×Ô¶¯»¯±äÁ¿“$<”ºÍ“$@”£¬ÆäÖÐ×Ô¶¯»¯±äÁ¿“$<”´ú±í¹æÔòµÄÒÀÀµ£¬“$@”´ú±í¹æÔòµÄÄ¿±ê¡£´Ë¹æÔòÔÚÖ´ÐÐʱ£¬ÃüÁîÐÐÖеÄ×Ô¶¯»¯±äÁ¿½«¸ù¾Ýʵ¼ÊµÄÄ¿±êºÍÒÀÀµÎļþÈ¡¶ÔÓ¦Öµ¡£
Æäº¬ÒåÊÇ£¬×ÖÖ¸³öÁË´ÓËùÓеÄ.cÎļþÉú³ÉÏàÓ¦µÄ.oÎļþµÄ¹æÔò¡£Èç¹ûÒªÉú³ÉµÄÄ¿±êÊÇ”a.o b.o”£¬ÄÇô¡¡%.c”¾ÍÊÇ”a.c b.c”¡£
ÔÚģʽ¹æÔòÖУ¬Ä¿±êµÄ¶¨ÒåÐèÒªÓГ%”×Ö·û¡£“%”¶¨Òå¶ÔÎļþÃûµÄÆ¥Å䣬±íʾÈÎÒⳤ¶ÈµÄ·Ç¿Õ×Ö·û´®¡£ÔÚÒÀÀµÄ¿±êÖÐͬÑù¿ÉÒÔʹÓÓ%”£¬Ö»ÊÇÒÀÀµÄ¿±êÖГ%”µÄȡֵ£¬È¡¾öÓÚÆäÄ¿±ê¡£
×¢Ò⣺ģʽ¹æÔòÖГ%”µÄÕ¹¿ªºÍ±äÁ¿Ó뺯ÊýµÄÕ¹¿ªÊÇÓÐÇø±ðµÄ£¬“%”µÄÕ¹¿ª·¢ÉúÔÚ±äÁ¿ºÍº¯ÊýµÄÕ¹¿ªÖ®ºó¡£±äÁ¿ºÍº¯ÊýµÄÕ¹¿ª·¢ÉúÔÚmakeÔØÈëMakefileʱ£¬¶ø“%”µÄÕ¹¿ªÔò·¢ÉúÔÚÔËÐÐʱ¡£
<1>¡¡×Ô¶¯»¯±äÁ¿
×Ô¶¯»¯±äÁ¿Ö»Ó¦³öÏÖÔÚ¹æÔòµÄÃüÁîÖС£
±äÁ¿ | º¬Òå |
$@ | ±íʾ¹æÔòÖеÄËùÓÐÄ¿±êÎļþµÄ¼¯ºÏ¡£ÔÚģʽ¹æÔòÖÐÈç¹ûÓжà¸öÄ¿±ê£¬“$@”¾ÍÊÇÆ¥ÅäÓÚÄ¿±êÖÐģʽ¶¨ÒåµÄ¼¯ºÏ |
$% | ½öµ±Ä¿±êÊǺ¯Êý¿âÎļþʱ£¬±íʾ¹æÔòÖеÄÄ¿±ê³ÉÔ±Ãû£¬Èç¹ûÄ¿±ê²»ÊǺ¯Êý¿âÎļþ£¨UNIXÏÂÊÇ.a£¬WindowsÊÇ.lib£©£¬ÆäֵΪ¿Õ¡£ |
$< | ÒÀÀµÄ¿±êÖеĵÚÒ»¸öÄ¿±êÃû×Ö£¬Èç¹ûÒÀÀµÄ¿±êÊÇÒÔģʽ£¨¼´”%“£©¶¨ÒåµÄ£¬Ôò”$<”ÊÇ·ûºÏģʽµÄһϵÁеÄÎļþ¼¯ |
$? | ËùÓбÈÄ¿±êеÄÒÀÀµÄ¿±êµÄ¼¯ºÏ£¬ÒÔ¿Õ¸ñ·Ö¸ô |
$^ | ËùÓÐÒÀÀµÄ¿±êµÄ¼¯ºÏ£¬ÒÔ¿Õ¸ñ·Ö¸ô¡£ÈçÈç¹ûÔÚÒÀÀµÄ¿±êÖÐÓжà¸öÖØ¸´µÄ£¬Ôò×Ô¶¯È¥³ýÖØ¸´µÄÒÀÀµÄ¿±ê£¬Ö»±£ÁôÒ»·Ý |
$+ | ͬ”$^”£¬Ò²ÊÇËùÓÐÒÀÀµÄ¿±êµÄ¼¯ºÏ£¬Ö»ÊÇËü²»È¥³ýÖØ¸´µÄÒÀÀµÄ¿±ê¡£ |
$* | Ä¿±êģʽÖГ%”¼°Æä֮ǰµÄ²¿·Ö |
$(@D) | “$@”µÄĿ¼²¿·Ö£¨²»ÒÔб¸Ü×÷Ϊ½á⣩£¬Èç¹û”$@”ÖÐûÓаüº¬Ð±¸Ü£¬ÆäֵΪ“.”£¨µ±Ç°Ä¿Â¼£© |
$(@F) | “$@”µÄÎļþ²¿·Ö£¬Ï൱ÓÚº¯Êý”$(notdir $@)” |
$(*D) | ͬ”$(@D)”£¬È¡ÎļþµÄĿ¼²¿·Ö |
$(*F) | ͬ”$(@F)”£¬È¡Îļþ²¿·Ö£¬µ«²»È¡ºó׺Ãû |
$(%D) | º¯Êý°üÎļþ³ÉÔ±µÄĿ¼²¿·Ö |
$(%F) | º¯Êý°üÎļþ³ÉÔ±µÄÎļþÃû²¿·Ö |
$(<D) | ÒÀÀµÄ¿±êÖеĵÚÒ»¸öÄ¿±êµÄĿ¼²¿·Ö |
$(<F) | ÒÀÀµÄ¿±êÖеĵÚÒ»¸öÄ¿±êµÄÎļþÃû²¿·Ö |
$(^D) | ËùÓÐÒÀÀµÄ¿±êÎļþÖÐĿ¼²¿·Ö£¨ÎÞÏàͬµÄ£© |
$(^F) | ËùÓÐÒÀÀµÄ¿±êÎļþÖÐÎļþÃû²¿·Ö£¨ÎÞÏàͬµÄ£© |
$(+D) | ËùÓÐÒÀÀµÄ¿±êÎļþÖеÄĿ¼²¿·Ö£¨¿ÉÒÔÓÐÏàͬµÄ£© |
$(+F) | ËùÓÐÒÀÀµÄ¿±êÎļþÖеÄÎļþÃû²¿·Ö£¨¿ÉÒÔÓÐÏàͬµÄ£© |
$(?D) | ËùÓб»¸üÐÂÎļþµÄĿ¼²¿·Ö |
$(?F) | ËùÓб»¸üÐÂÎļþµÄÎļþÃû²¿·Ö |
<2>$VARºÍ$$VARµÄÇø±ð£º
makefileÎļþÖеĹæÔò¾ø´ó²¿·Ö¶¼ÊÇʹÓÃshellÃüÁîÀ´ÊµÏֵģ¬ÕâÀï¾ÍÉæ¼°µ½Á˱äÁ¿µÄʹÓ㬰üÀ¨makefileÖеıäÁ¿ºÍshellÃüÁî·¶³ëÄڵıäÁ¿¡£ÔÚmakefileµÄ¹æÔòÃüÁîÐÐÖÐʹÓÃ$var¾ÍÊÇÔÚÃüÁîÖÐÒýÓÃmakefileµÄ±äÁ¿£¬ÕâÀï½ö½öÊǶÁÈ¡makefileµÄ±äÁ¿È»ºóÀ©Õ¹¿ª£¬½«ÆäÖµ×÷Ϊ²ÎÊý´«¸øÁËÒ»¸öshellÃüÁî;¶ø$$varÊÇÔÚ·ÃÎÊÒ»¸öshellÃüÁîÄÚ¶¨ÒåµÄ±äÁ¿£¬¶ø·ÇmakefileµÄ±äÁ¿¡£Èç¹ûij¹æÔòÓÐn¸öshellÃüÁîÐй¹³É£¬¶øÏ໥֮¼äûÓÐÓÃ';'ºÍ'\'Á¬½ÓÆðÀ´µÄ»°£¬¾ÍÊÇÏ໥֮¼äûÓйØÁªµÄshellÃüÁÏ໥֮¼äÒ²²»ÄܱäÁ¿¹²Ïí¡£
(4)Makefile֮αĿ±ê
ʹÓÃÆäÔÒòÒ»£º±ÜÃâºÍͬÃûÎļþ³åÍ»
ÔÚÏÖʵÖÐÄÑÃâ´æÔÚËù¶¨ÒåµÄÄ¿±êÓëËù´æÔÚµÄÄ¿±êÊÇͬÃûµÄ£¬²ÉÓÃMakefileÈçºÎ´¦ÀíÕâÖÖÇé¿öÄØ?MakefileÖеļÙÄ¿±ê(phony target)¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ¡£
¼ÙÄ¿±ê¿ÉÒÔʹÓÃ.PHONY¹Ø¼ü×Ö½øÐÐÉùÃ÷£¬¶ÔÓÚ¼ÙÄ¿±ê£¬¿ÉÒÔÏëÏó£¬ÒòΪ²»ÒÀÀµÓÚijÎļþ£¬make¸ÃÄ¿±êµÄʱºò£¬ÆäËùÔÚ¹æÔòµÄÃüÁî¶¼»á±»Ö´ÐС£
Èç¹û±àдһ¸ö¹æÔò£¬²¢²»²úÉúÄ¿±êÎļþ£¬ÔòÆäÃüÁîÔÚÿ´Îmake ¸ÃÄ¿±êʱ¶¼Ö´ÐС£
ÀýÈ磺
clean:
rm *.o temp
ÒòΪ"rm"ÃüÁî²¢²»²úÉú"clean"Îļþ£¬Ôòÿ´ÎÖ´ÐÐ"make clean"µÄʱºò£¬¸ÃÃüÁî¶¼»áÖ´ÐС£Èç¹ûĿ¼ÖгöÏÖÁË"clean"Îļþ£¬Ôò¹æÔòʧЧÁË£ºÃ»ÓÐÒÀÀµÎļþ£¬Îļþ"clean"ʼÖÕÊÇеģ¬ÃüÁîÓÀÔ¶²»»áÖ´ÐÐ;Ϊ±ÜÃâÕâ¸öÎÊÌ⣬¿ÉʹÓÃ".PHONY"Ö¸Ã÷¸ÃÄ¿±ê¡£È磺
.PHONY : clean
ÕâÑùÖ´ÐÐ"make clean"»áÎÞÊÓ"clean"Îļþ´æÔÚÓë·ñ¡£
ÒÑÖªphony Ä¿±ê²¢·ÇÊÇÓÉÆäËüÎļþÉú³ÉµÄʵ¼ÊÎļþ£¬make »áÌø¹ýÒþº¬¹æÔòËÑË÷¡£Õâ¾ÍÊÇÉùÃ÷phony Ä¿±ê»á¸ÄÉÆÐÔÄܵÄÔÒò£¬¼´Ê¹Äã²¢²»µ£ÐÄʵ¼ÊÎļþ´æÔÚÓë·ñ¡£
ÍêÕûµÄÀý×ÓÈçÏ£º
.PHONY : clean
clean :
rm *.o temp
ʹÓÃÆäÔÒò¶þ£ºÌá¸ßÖ´ÐÐmakeµÄЧÂÊ
µ±Ò»¸öÄ¿±ê±»ÉùÃ÷ΪαĿ±êºó£¬makeÔÚÖ´Ðд˹æÔòʱ²»»áÊÔͼȥ²éÕÒÒþº¬¹æÔòÀ´´´½¨Õâ¸öÄ¿±ê¡£ÕâÑùÒ²Ìá¸ßÁËmakeµÄÖ´ÐÐЧÂÊ£¬Í¬Ê±ÎÒÃÇÒ²²»Óõ£ÐÄÓÉÓÚÄ¿±êºÍÎļþÃûÖØÃû¶øÊ¹ÎÒÃÇµÄÆÚÍûʧ°Ü¡£
(5)MakefileµÄ¸³Öµ
[=]ºÍ[£º=]·ûºÅµÄÇø±ð¡£
=
¿ÉÒÔÏÈʹÓúó¶¨Ò壬Õâ¾Íµ¼ÖÂmakefileÔÚÈ«²¿Õ¹¿ªºó²ÅÄܾö¶¨±äÁ¿µÄÖµ¡£
ÓпÉÄܳöÏÖÑ»·µÝ¹é£¬ÎÞ·¨ÔÝ¿ªµÄÎÊÌâ¡£
£º=
±ØÐëÏȶ¨ÒåÈ»ºóÔÙʹÓã¬ÔÚµ±Ç°µÄλÖþͿÉÒÔ¾ö¶¨±äÁ¿µÄÖµ¡£
?=
Ï൱ÓÚÑ¡ÔñÒÉÎʾ䣬Èç¹ûÇ°ÃæµÄ±äÁ¿Ã»±»¸³Öµ£¬ÄǾÍ×ö¸³Öµ²Ù×÷
+=
Ï൱ÓڵݼӲÙ×÷
(6)MakefileÖ®Ö´Ðйý³Ì
1. ÒÀ´Î¶ÁÈ¡±äÁ¿“MAKEFILES”¶¨ÒåµÄmakefileÎļþÁбí
2. ¶ÁÈ¡¹¤×÷Ŀ¼ÏµÄmakefileÎļþ(¸ù¾ÝÃüÃûµÄ²éÕÒ˳Ðò“GNUmakefile”£¬“makefile”£¬“Makefile”£¬Ê×ÏÈÕÒµ½ÄǸö¾Í¶ÁÈ¡ÄǸö)
3. ÒÀ´Î¶ÁÈ¡¹¤×÷Ŀ¼makefileÎļþÖÐʹÓÃָʾ·û“include”°üº¬µÄÎļþ
4. ²éÕÒÖØ½¨ËùÓÐÒѶÁÈ¡µÄmakefileÎļþµÄ¹æÔò(Èç¹û´æÔÚÒ»¸öÄ¿±êÊǵ±Ç°¶ÁÈ¡µÄijһ¸ömakefileÎļþ£¬ÔòÖ´Ðд˹æÔòÖØ½¨´ËmakefileÎļþ£¬Íê³ÉÒÔºó´ÓµÚÒ»²½¿ªÊ¼ÖØÐÂÖ´ÐÐ)
5. ³õʼ»¯±äÁ¿Öµ²¢Õ¹¿ªÄÇЩÐèÒªÁ¢¼´Õ¹¿ªµÄ±äÁ¿ºÍº¯Êý²¢¸ù¾ÝÔ¤ÉèÌõ¼þÈ·¶¨Ö´ÐзÖÖ§
6. ¸ù¾Ý“ÖÕ¼«Ä¿±ê”ÒÔ¼°ÆäËûÄ¿±êµÄÒÀÀµ¹ØÏµ½¨Á¢ÒÀÀµ¹ØÏµÁ´±í
7. Ö´Ðгý“ÖÕ¼«Ä¿±ê”ÒÔÍâµÄËùÓеÄÄ¿±êµÄ¹æÔò(¹æÔòÖÐÈç¹ûÒÀÀµÎļþÖÐÈÎÒ»¸öÎļþµÄʱ¼ä´Á±ÈÄ¿±êÎļþУ¬ÔòʹÓùæÔòËù¶¨ÒåµÄÃüÁîÖØ½¨Ä¿±êÎļþ)
8. Ö´ÐГÖÕ¼«Ä¿±ê”ËùÔڵĹæÔò
Î塢ʹÓÃMake½øÐÐÔ´Âë°²×°
(1)Õý³£µÄ±àÒë°²×°/Ð¶ÔØ£º
Ô´ÂëµÄ°²×°Ò»°ãÓÉ3¸ö²½Öè×é³É£ºÅäÖÃ(configure)¡¢±àÒë(make)¡¢°²×°(make install)¡£
configureÎļþÊÇÒ»¸ö¿ÉÖ´ÐеĽű¾Îļþ£¬ËüÓкܶàÑ¡ÏÔÚ´ý°²×°µÄÔ´ÂëĿ¼ÏÂʹÓÃÃüÁî./configure –help¿ÉÒÔÊä³öÏêϸµÄÑ¡ÏîÁÐ±í¡£
ÆäÖÐ--prefixÑ¡ÏîÊÇÅäÖð²×°Ä¿Â¼£¬Èç¹û²»ÅäÖøÃÑ¡Ï°²×°ºó¿ÉÖ´ÐÐÎļþĬÈÏ·ÅÔÚ/usr /local/bin£¬¿âÎļþĬÈÏ·ÅÔÚ/usr/local/lib£¬ÅäÖÃÎļþĬÈÏ·ÅÔÚ/usr/local/etc£¬ÆäËüµÄ×ÊÔ´Îļþ·ÅÔÚ/usr /local/share£¬±È½ÏÁèÂÒ¡£
Èç¹ûÅäÖÃÁË--prefix£¬È磺
$ ./configure --prefix=/usr/local/test
°²×°ºóµÄËùÓÐ×ÊÔ´Îļþ¶¼»á±»·ÅÔÚ/usr/local/testĿ¼ÖУ¬²»»á·ÖÉ¢µ½ÆäËûĿ¼¡£
ʹÓÃ--prefixÑ¡ÏîµÄÁíÒ»¸öºÃ´¦ÊÇ·½±ãÐ¶ÔØÈí¼þ»òÒÆÖ²Èí¼þ;µ±Ä³¸ö°²×°µÄÈí¼þ²»ÔÙÐèҪʱ£¬Ö»Ðë¼òµ¥µÄɾ³ý¸Ã°²×°Ä¿Â¼£¬¾Í¿ÉÒÔ°ÑÈí¼þÐ¶ÔØµÃ¸É¸É¾»¾»;¶øÒÆÖ²Èí¼þÖ»Ð追±´Õû¸öĿ¼µ½ÁíÍâÒ»¸ö»úÆ÷¼´¿É(ÏàͬµÄ²Ù×÷ϵͳÏÂ)¡£
µ±È»ÒªÐ¶ÔسÌÐò£¬Ò²¿ÉÒÔÔÚÔÀ´µÄmakeĿ¼ÏÂÓÃÒ»´Îmake uninstall£¬µ«Ç°ÌáÊÇMakefileÎļþÓÐuninstallÃüÁî(nodejsµÄÔ´Âë°üÀïÓÐuninstallÃüÁ²âÊÔ°æ±¾v0.10.35)¡£
(2)Ð¶ÔØ£º
Èç¹ûûÓÐÅäÖÃ--prefixÑ¡ÏԴÂë°üҲûÓÐÌṩmake uninstall£¬Ôò¿ÉÒÔͨ¹ýÒÔÏ·½Ê½¿ÉÒÔÍêÕûÐ¶ÔØ£º
ÕÒÒ»¸öÁÙÊ±Ä¿Â¼ÖØÐ°²×°Ò»±é£¬È磺
$ ./configure --prefix=/tmp/to_remove && make install
È»ºó±éÀú/tmp/to_removeµÄÎļþ£¬É¾³ý¶ÔÓ¦°²×°Î»ÖõÄÎļþ¼´¿É(ÒòΪ/tmp/to_removeÀïµÄĿ¼½á¹¹¾ÍÊÇûÓÐÅäÖÃ--prefixÑ¡ÏîʱµÄĿ¼½á¹¹)¡£
µ±ÏÂÔØÁËÔ´Âë¾Í¿ÉÒÔ°´ÕÕ´ËÖÖ·½·¨£¬¾Í¿ÉÒÔ½øÐÐÈí¼þµÄ°²×°ºÍÐ¶ÔØ¡£
Áù¡¢×ܽá
¹ØÓÚMakefileµÄÓ÷¨£¬ÎÒÃǽñÌì¾ÍÌÖÂÛµ½ÕâÀ¶ÔÓÚÒ»¸öLinux³ÌÐòÔ±À´ËµMakefileµÄ×÷ÓúÍÖØÒª¡£¶ÔÓÚ³ÌÐòµÄ±àÒëÒÔ¼°³ÌÐòÔ±¶ÔÏîÄ¿µÄÁ˽âÓкܴóµÄ°ïÖú¡£