ÓÈÆä¶ÔÓÚ´óÐÍÏîÄ¿¶øÑÔ£¬ÊÖ¶¯±àÒëÿһ¸öÔ´Îļþ²»½ö·±Ëö£¬¶øÇÒ¼«Ò׳ö´í
Õâʱ£¬`make`ÃüÁî¼°ÆäÅäÌ×µÄMakefileÎļþ±ã³ÉΪÁËLinux»·¾³Ï¿ª·¢ÕߵĵÃÁ¦ÖúÊÖ£¬ËüÃÇͨ¹ý×Ô¶¯»¯¹¹½¨Á÷³Ì£¬¼«´óµØÌá¸ßÁË¿ª·¢Ð§ÂʺÍÏîÄ¿µÄ¿Éά»¤ÐÔ
±¾ÎĽ«ÉîÈë̽ÌÖLinuxÖÐ`make`ÃüÁîµÄʹÓã¬ÌرðÊÇÓë`make de`£¨¼ÙÉè`de`ÊÇij¸ö×Ô¶¨ÒåÄ¿±ê£©Ïà¹ØµÄʵ¼ù£¬Õ¹Ê¾ÆäÈçºÎͨ¹ýÁé»îÅäÖÃʵÏÖ¹¹½¨¹ý³ÌµÄÓÅ»¯
Ò»¡¢`make`ÃüÁî¼ò½é `make`ÊÇÒ»¸ö¿ØÖÆÈí¼þ±àÒë¹ý³ÌµÄ¹¤¾ß£¬ËüÒÀ¾ÝMakefileÎļþÖж¨ÒåµÄ¹æÔòºÍÒÀÀµ¹ØÏµ£¬×Ô¶¯¾ö¶¨ÄÄЩÎļþÐèÒªÖØÐ±àÒ룬ÄÄЩ¿ÉÒÔÌø¹ý£¬´Ó¶ø±ÜÃâ²»±ØÒªµÄÖØ¸´ÀͶ¯
MakefileÊÇÒ»¸ö°üº¬ÁËһϵÁйæÔòºÍÖ¸ÁîµÄÎı¾Îļþ£¬Ëü¸æËß`make`ÈçºÎ±àÒëºÍÁ´½Ó³ÌÐò
`make`µÄºËÐÄÓÅÊÆÔÚÓÚ£º 1.×Ô¶¯»¯£ºÒ»µ©¶¨ÒåÁ˹¹½¨¹æÔò£¬Ö»ÐèÔËÐÐmakeÃüÁʣÏµĹ¤×÷½»¸øËü¼´¿É
2.ÒÀÀµÐÔ¹ÜÀí£º×Ô¶¯¼ì²âÎļþÖ®¼äµÄÒÀÀµ¹ØÏµ£¬½öÖØÐ±àÒëÄÇЩ±»Ð޸ĻòÒÀÀµµÄÎļþ
3.²¢Ðй¹½¨£ºÖ§³Ö¶àÏ̱߳àÒ룬¼ÓËÙ¹¹½¨¹ý³Ì
4.¿ÉÒÆÖ²ÐÔ£ºÍ¨¹ýMakefile£¬¿ÉÒÔÔÚ²»Í¬Æ½Ì¨ÉÏÒÔÏàͬµÄ·½Ê½¹¹½¨ÏîÄ¿
¶þ¡¢Makefile»ù´¡ MakefileµÄºËÐÄÊǹæÔò£¬Ã¿Ìõ¹æÔòÓÉÒ»¸öÄ¿±ê£¨target£©¡¢ÒÀÀµ£¨dependencies£©ºÍÃüÁcommands£©×é³É
»ù±¾¸ñʽÈçÏ£º target: dependencies commands - Ä¿±ê£ºÍ¨³£ÊÇÉú³ÉµÄÎļþÃû£¬Èç¿ÉÖ´ÐÐÎļþ»ò¶ÔÏóÎļþ
- ÒÀÀµ£ºÉú³ÉÄ¿±êËùÐèµÄǰÖÃÌõ¼þ£¬¿ÉÒÔÊÇÔ´Îļþ»òÆäËûÄ¿±êÎļþ
- ÃüÁµ±ÒÀÀµ·¢Éú±ä»¯Ê±£¬ÐèÒªÖ´ÐеÄshellÃüÁî
ÀýÈ磬һ¸ö¼òµ¥µÄMakefile¿ÉÄÜÈçÏ£º all: program program: main.o utils.o gcc -o program main.o utils.o main.o: main.c gcc -c main.c utils.o: utils.c gcc -c utils.c ÔÚÕâ¸öÀý×ÓÖУ¬`all`ÊÇÒ»¸öαĿ±ê£¬ËüÒÀÀµÓÚ`program`
µ±ÔËÐÐ`makeall`»ò½ö`make`ʱ£¬`make`»á²é¿´`program`µÄÒÀÀµ£¬·¢ÏÖÐèÒª`main.o`ºÍ`utils.o`£¬½ø¶øÕÒµ½ËüÃǸ÷×ԵıàÒë¹æÔò²¢Ö´ÐÐ
Èý¡¢×Ô¶¨ÒåÄ¿±ê`de`µÄʵ¼ù ÔÚʵ¼ÊÏîÄ¿ÖУ¬¿ÉÄÜÐèÒª¸ù¾ÝÌØ¶¨ÐèÇó¶¨Òå×Ô¶¨ÒåÄ¿±ê
¼ÙÉè`de`´ú±í¡°development environment setup¡±£¬¼´ÉèÖÿª·¢»·¾³£¬°üÀ¨±àÒ빤¾ßµÄ°²×°¡¢»·¾³±äÁ¿µÄÅäÖõÈ
ÎÒÃÇ¿ÉÒÔÀûÓÃ`make`À´ÊµÏÖÕâһĿ±ê
Ê×ÏÈ£¬ÔÚMakefileÖж¨ÒåÒ»¸öÃûΪ`de`µÄÄ¿±ê£º Makefile ×Ô¶¨ÒåÄ¿±ê£ºÉèÖÿª·¢»·¾³ de: install-tools config-env @echo Development environment setup complete. °²×°±àÒ빤¾ß install-tools: @echo Installing necessary tools... # ¼ÙÉèÐèÒª°²×°gccºÍmake£¨ÔÚʵ¼ÊÖУ¬ÕâЩ¿ÉÄÜÒѾԤװ£© sudo apt-get update && sudo apt-get install -y gcc make ÅäÖû·¾³±äÁ¿ config-env: @echo Configuring environment variables... # ÕâÀï½öչʾʾÀý£¬Êµ¼ÊÓ¦±à¼.bashrc»ò.profileµÈÎļþ # ÀýÈ磬µ¼³öij¸ö¿â·¾¶£ºecho exportLD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH ] ~/.bashrc # ×¢Ò⣺ÕâÀïΪÁËÑÝʾ£¬Ö±½Óechoµ½ÖÕ¶Ë£¨²»ÍƼöÕâÑù×ö£© echo Temporary environment setup for demonstration purposes only. ÇåÀíÄ¿±ê£¬ÓÃÓÚ³·Ïú×Ô¶¨ÒåÉèÖ㨿ÉÑ¡£© clean-de: @echo Cleaning up development environment setup... # ÕâÀï¿ÉÒÔÌí¼Ó³·Ïú°²×°µÄÃüÁµ«Í¨³£²»½¨Òé×Ô¶¯Ð¶ÔØÈí¼þ # ÀýÈç£¬ÖØÖû·¾³±äÁ¿£ºsed -i /export LD_LIBRARY_PATH/d ~/.bashrc echo Temporary cleanup steps for demonstration purposes only. ÔÚÕâ¸öÀý×ÓÖУ¬`de`Ä¿±êÒÀÀµÓÚ`install-tools`ºÍ`config-env`Á½¸ö×ÓÄ¿±ê
ÔËÐÐ`make de`ʱ£¬`make`»á°´Ë³ÐòÖ´ÐÐÕâÁ½¸ö×ÓÄ¿±êϵÄÃüÁ×îºó´òÓ¡Ò»ÌõÍê³ÉÐÅÏ¢
×¢ÒâÊÂÏ - ȨÏÞÎÊÌ⣺°²×°Èí¼þͨ³£ÐèÒª³¬¼¶Óû§È¨ÏÞ£¬Òò´ËʹÓÃÁË`sudo`
Ôڽű¾ÖÐÆµ·±Ê¹ÓÃ`sudo`¿ÉÄÜ»áÒªÇóÊäÈëÃÜÂ룬ÕâÔÚʵ¼Ê×Ô¶¯»¯½Å±¾ÖÐÊDz»ÀíÏëµÄ
Ò»ÖÖ½â¾ö·½°¸ÊÇÔ¤ÏÈÅäÖÃsudoersÎļþ£¬ÔÊÐíÎÞÃÜÂëÖ´ÐÐÌØ¶¨ÃüÁµ«ÕâÉæ¼°µ½°²È«·çÏÕ£¬Ðè½÷É÷²Ù×÷
- »·¾³±äÁ¿ÅäÖãºÖ±½ÓÐÞ¸ÄÓû§µÄ»·¾³ÅäÖÃÎļþ£¨Èç`.bashrc`£©ÊǸü³Ö¾ÃµÄ×ö·¨£¬µ«MakefileÖÐÖ±½Ó²Ù×÷ÕâЩÎļþ¿ÉÄܻᵼÖ²»¿ÉÔ¤¼ûµÄÎÊÌâ
¸üºÃµÄ×ö·¨ÊÇÔÚMakefileÖÐÌáʾÓû§ÊÖ¶¯Ö´ÐбØÒªµÄÅäÖò½Ö裬»òÕßÌṩһ¸ö½Å±¾¹©Óû§ÔËÐÐ
- ÇåÀí²Ù×÷£ºËäÈ»ÌṩÁËclean-deÄ¿±ê×÷ΪÇåÀí²½ÖèµÄʾÀý£¬µ«Í¨³£²»½¨Òé×Ô¶¯Ð¶ÔØÈí¼þ£¬ÒòΪÕâ¿ÉÄÜ»áÓ°Ï쵽ϵͳ»òÆäËûÏîÄ¿
ËÄ¡¢¸ß¼¶¼¼ÇÉÓë×î¼Ñʵ¼ù 1.ʹÓñäÁ¿£ºÔÚMakefileÖж¨Òå±äÁ¿¿ÉÒÔ¼õÉÙÖØ¸´£¬Ìá¸ß¿É¶ÁÐÔ
ÀýÈ磬¶¨Òå±àÒëÆ÷ºÍ±àÒëÑ¡ÏîΪ±äÁ¿
2.Ìõ¼þÅжϣºÀûÓÃifº¯ÊýºÍÌõ¼þ±í´ïʽ£¬¸ù¾Ý²»Í¬µÄÌõ¼þÖ´Ðв»Í¬µÄÃüÁî
3.º¯Êý£ºMakefileÖ§³Ö×Ô¶¨Ò庯Êý£¬ÓÃÓÚ·â×°ÖØ¸´Ê¹ÓõÄÃüÁîÐòÁÐ
4.ģʽ¹æÔò£ºÀûÓÃģʽ¹æÔò£¨pattern rules£©¿ÉÒÔ¼ò»¯¶Ô´óÁ¿ÏàËÆÎļþµÄ´¦Àí
5.²¢Ðй¹½¨£ºÊ¹ÓÃ-jÑ¡Ïî¿ÉÒÔÖ¸¶¨²¢ÐбàÒëµÄ×÷ÒµÊý£¬¼Ó¿ì¹¹½¨ËÙ¶È
6.µ÷ÊÔ£ºÊ¹ÓÃmake -n£¨½öÏÔʾÃüÁî¶ø²»Ö´ÐУ©ºÍ`make --debug`£¨ÏÔʾ¸ü¶àµ÷ÊÔÐÅÏ¢£©À´µ÷ÊÔMakefile
Îå¡¢½áÓï `make`ÃüÁî¼°ÆäÅäÌ×µÄMakefileÎļþÊÇLinux»·¾³ÏÂÈí¼þ¿ª·¢Öв»¿É»òȱµÄ¹¤¾ß£¬ËüÃÇͨ¹ý×Ô¶¯»¯¹¹½¨Á÷³Ì£¬¼«´óµØÌá¸ßÁË¿ª·¢Ð§ÂʺÍÏîÄ¿µÄ¿Éά»¤ÐÔ
ͨ¹ý¶¨Òå×Ô¶¨ÒåÄ¿±ê£¬Èç±¾ÎÄÖеÄ`de`£¬`make`»¹ÄܰïÖú¿ª·¢Õß¹ÜÀí¿ª·¢»·¾³µÄÉèÖ㬽øÒ»²½¼ò»¯ÁËÏîÄ¿Æô¶¯µÄ¸´ÔÓ¶È
ÕÆÎÕ`make`µÄ¸ß¼¶¼¼ÇɺÍ×î¼Ñʵ¼ù£¬¶ÔÓÚÈκÎÏ£ÍûÔÚLinuxƽ̨ÉϸßЧ¿ª·¢Èí¼þµÄ¿ª·¢ÕßÀ´Ëµ£¬¶¼ÊÇÒ»Ï¹óµÄ¼¼ÄÜ