Linux »ã±àÓïÑÔ¿ª·¢Ö¸ÄÏ
¼¶±ð£º ³õ¼¶
ФÎÄÅô (xiaowp@263.net), ±±¾©Àí¹¤´óѧ¼ÆËã»úϵ˶ʿÑо¿Éú
2003 Äê 7 ÔÂ 03 ÈÕ
»ã±àÓïÑÔµÄÓŵãÊÇËٶȿ죬¿ÉÒÔÖ±½Ó¶ÔÓ²¼þ½øÐвÙ×÷£¬Õâ¶ÔÖîÈçͼÐδ¦ÀíµÈ¹Ø¼üÓ¦ÓÃÊǷdz£ÖØÒªµÄ¡£Linux ÊÇÒ»¸öÓà C ÓïÑÔ¿ª·¢µÄ²Ù×÷ϵͳ£¬ÕâʹµÃºÜ¶à³ÌÐòÔ±¿ªÊ¼Íü¼ÇÔÚ Linux Öл¹¿ÉÒÔÖ±½ÓʹÓûã±àÕâÒ»µ×²ãÓïÑÔÀ´ÓÅ»¯³ÌÐòµÄÐÔÄÜ¡£±¾ÎÄΪÄÇЩÔÚLinux ƽ̨Éϱàд»ã±à´úÂëµÄ³ÌÐòÔ±ÌṩָÄÏ£¬½éÉÜ Linux »ã±àÓïÑÔµÄÓï·¨¸ñʽºÍ¿ª·¢¹¤¾ß£¬²¢¸¨ÒÔ¾ßÌåµÄÀý×Ó½²ÊöÈçºÎ¿ª·¢ÊµÓõÄLinux »ã±à³ÌÐò¡£
Ò»¡¢¼ò½é
×÷Ϊ×î»ù±¾µÄ±à³ÌÓïÑÔÖ®Ò»£¬»ã±àÓïÑÔËäȻӦÓõķ¶Î§²»ËãºÜ¹ã£¬µ«ÖØÒªÐÔÈ´ÎðÓ¹ÖÃÒÉ£¬ÒòΪËüÄܹ»Íê³ÉÐí¶àÆäËüÓïÑÔËùÎÞ·¨Íê³ÉµÄ¹¦ÄÜ¡£¾ÍÄà Linux ÄÚºËÀ´½²£¬ËäÈ»¾ø´ó²¿·Ö´úÂëÊÇÓà C ÓïÑÔ±àдµÄ£¬µ«ÈÔÈ»²»¿É±ÜÃâµØÔÚijЩ¹Ø¼üµØ·½Ê¹ÓÃÁË»ã±à´úÂ룬ÆäÖÐÖ÷ÒªÊÇÔÚ Linux µÄÆô¶¯²¿·Ö¡£ÓÉÓÚÕⲿ·Ö´úÂëÓëÓ²¼þµÄ¹ØÏµ·Ç³£ÃÜÇУ¬¼´Ê¹ÊÇ C ÓïÑÔÒ²»áÓÐЩÁ¦²»´ÓÐÄ£¬¶ø»ã±àÓïÑÔÔòÄܹ»ºÜºÃÑﳤ±Ü¶Ì£¬×î´óÏ޶ȵط¢»ÓÓ²¼þµÄÐÔÄÜ¡£
´ó¶àÊýÇé¿öÏ Linux ³ÌÐòÔ±²»ÐèҪʹÓûã±àÓïÑÔ£¬ÒòΪ¼´±ãÊÇÓ²¼þÇý¶¯ÕâÑùµÄµ×²ã³ÌÐòÔÚ Linux ²Ù×÷ϵͳÖÐÒ²¿ÉÒÔÓÃÍêÈ«Óà C ÓïÑÔÀ´ÊµÏÖ£¬ÔÙ¼ÓÉÏ GCC ÕâÒ»Ó ......
Linux ÖÐ x86 µÄÄÚÁª»ã±à
¼¶±ð£º ³õ¼¶
Bharata B. Rao (rbharata@in.ibm.com)IBM Linux ¼¼ÊõÖÐÐÄ£¬IBM Èí¼þʵÑéÊÒ£¬Ó¡¶È
2001 Äê 3 ÔÂ 01 ÈÕ
Bharata B. Rao ÌṩÁËÔÚ Linux ƽ̨ÉÏʹÓú͹¹Ôì x86 ÄÚÁª»ã±àµÄ¸ÅÀ¨ÐÔ½éÉÜ¡£Ëû½éÉÜÁËÄÚÁª»ã±à¼°Æä¸÷ÖÖÓ÷¨µÄ»ù´¡ÖªÊ¶£¬ÌṩÁËһЩ»ù±¾µÄÄÚÁª»ã±à±àÂëÖ¸µ¼£¬²¢½âÊÍÁËÔÚ Linux ÄÚºËÖÐÄÚÁª»ã±à´úÂëµÄһЩʵÀý¡£
Èç¹ûÄúÊÇ Linux Äں˵Ŀª·¢ÈËÔ±£¬Äú»á·¢ÏÖ×Ô¼º¾³£Òª¶ÔÓëÌåϵ½á¹¹¸ß¶ÈÏà¹ØµÄ¹¦ÄܽøÐбàÂë»òÓÅ»¯´úÂë·¾¶¡£ÄúºÜ¿ÉÄÜÊÇͨ¹ý½«»ã±àÓïÑÔÖ¸Áî²åÈëµ½ C Óï¾äµÄÖм䣨ÓÖ³ÆÎªÄÚÁª»ã±àµÄÒ»ÖÖ·½·¨£©À´Ö´ÐÐÕâЩÈÎÎñµÄ¡£ÈÃÎÒÃÇ¿´Ò»Ï Linux ÖÐÄÚÁª»ã±àµÄÌØ¶¨Ó÷¨¡££¨ÎÒÃǽ«ÌÖÂÛÏÞÖÆÔÚ IA32 »ã±à¡££©
GNU »ã±à³ÌÐò¼òÊö
ÈÃÎÒÃÇÊ×ÏÈ¿´Ò»Ï Linux ÖÐʹÓõĻù±¾»ã±à³ÌÐòÓï·¨¡£GCC£¨ÓÃÓÚ Linux µÄ GNU C ±àÒëÆ÷£©Ê¹Óà AT&T »ã±àÓï·¨¡£ÏÂÃæÁгöÁËÕâÖÖÓï·¨µÄһЩ»ù±¾¹æÔò¡££¨¸ÃÁбí¿Ï¶¨²»ÍêÕû£»Ö»°üÀ¨ÁËÓëÄÚÁª»ã±àÏà¹ØµÄÄÇЩ¹æÔò¡££©
¼Ä´æÆ÷ÃüÃû
¼Ä´æÆ÷Ãû³ÆÓÐ % ǰ׺¡£¼´£¬Èç¹û±ØÐëʹÓà eax£¬ËüÓ¦¸ÃÓÃ×÷ %eax¡£
Ô´²Ù×÷ÊýºÍÄ¿µÄ²Ù×÷ÊýµÄ˳Ðò
ÔÚËùÓÐÖ¸ÁîÖУ¬ÏÈÊÇÔ´²Ù×÷Êý£¬È»ºó²ÅÊÇÄ¿µÄ²Ù×÷Êý¡£ÕâÓ뽫Դ²Ù×÷Êý·ÅÔÚÄ¿µÄ²Ù×÷ÊýÖ®ºó ......
Linux »ã±àÆ÷£º¶Ô±È GAS ºÍ NASM
¶Ô±È GNU Assembler£¨GAS£©ºÍ Netwide Assembler£¨NASM£©
Ram Narayam (rnaraya2@in.ibm.com), Èí¼þ¹¤³Ìʦ, IBM
2007 Äê 11 ÔÂ 05 ÈÕ
±¾ÎĽâÊÍÁ½ÖÖ×îÁ÷ÐÐµÄ Linux® »ã±àÆ÷ —— GNU Assembler£¨GAS£©ºÍ Netwide Assembler£¨NASM£© —— Ö®¼äһЩ±È½ÏÖØÒªµÄÓï·¨²îÒìºÍÓïÒå²îÒ죬°üÀ¨»ù±¾Óï·¨¡¢±äÁ¿ºÍÄÚ´æ·ÃÎÊ¡¢ºê´¦Àí¡¢º¯ÊýºÍÍⲿÀý³Ì¡¢¶ÑÕ»´¦ÀíÒÔ¼°Öظ´Ö´ÐдúÂë¿éµÄ¼¼Êõ·½ÃæµÄ²îÒì¡£
ÓëÆäËûÓïÑÔ²»Í¬£¬»ã±àÓïÑÔÒªÇ󿪷¢ÈËÔ±Á˽â±à³ÌËùÓûúÆ÷µÄ´¦ÀíÆ÷Ìåϵ½á¹¹¡£»ã±à³ÌÐò²»¿ÉÒÆÖ²£¬Î¬»¤ºÍÀí½â³£³£±È½ÏÂé·³£¬Í¨³£°üº¬´óÁ¿´úÂëÐС£µ«ÊÇ£¬ÔÚ»úÆ÷ÉÏÖ´ÐеÄÔËÐÐʱ¶þ½øÖÆ´úÂëÔÚËٶȺʹóС·½ÃæÓÐÓÅÊÆ¡£
¶ÔÓÚÔÚ Linux ÉϽøÐлã±à¼¶±à³ÌÒѾÓÐÐí¶à²Î¿¼×ÊÁÏ£¬±¾ÎÄÖ÷Òª½²½âÓï·¨Ö®¼äµÄ²îÒ죬°ïÖúÄú¸üÇáËɵØÔÚ»ã±àÐÎʽ֮¼ä½øÐÐת»»¡£±¾ÎÄÔ´ÓÚÎÒ×Ô¼ºÊÔͼ¸Ä½øÕâÖÖת»»µÄ³¢ÊÔ¡£
±¾ÎÄʹÓÃһϵÁгÌÐòʾÀý¡£Ã¿¸ö³ÌÐòÑÝÊ¾Ò»Ð©ÌØÐÔ£¬È»ºóÊǶÔÓï·¨µÄÌÖÂۺͶԱȡ£¾¡¹Ü²»¿ÉÄÜÌÖÂÛ NASM ºÍ GAS Ö®¼ä´æÔÚµÄÿ¸ö²îÒ죬µ«ÊÇÎÒÊÔͼÌÖÂÛÖ÷Òª·½Ã棬¸ø½øÒ»²½Ñо¿Ìṩһ¸ö»ù´¡¡£ÄÇЩÒѾÊìϤ NASM ºÍ GAS µÄ¶ÁÕßÒ²¿ÉÒÔÔÚÕâÀïÕÒµ½ÓÐÓõÄÄÚÈÝ£¬±ÈÈçº ......
¡¡¡¡ÎÞÂÛÊÇÔÚLinux»¹ÊÇÔÚUnix»·¾³ÖУ¬make¶¼ÊÇÒ»¸ö·Ç³£ÖØÒªµÄ±àÒëÃüÁî¡£²»¹ÜÊÇ×Ô¼º½øÐÐÏîÄ¿¿ª·¢
»¹Êǰ²×°Ó¦ÓÃÈí¼þ£¬ÎÒÃǶ¼¾³£ÒªÓõ½make»òmake
install¡£ÀûÓÃmake¹¤¾ß£¬ÎÒÃÇ¿ÉÒÔ½«´óÐ͵Ŀª·¢ÏîÄ¿·Ö½â³ÉΪ¶à¸ö¸üÒ×ÓÚ¹ÜÀíµÄÄ£¿é£¬¶ÔÓÚÒ»¸ö°üÀ¨¼¸°Ù¸öÔ´ÎļþµÄÓ¦ÓóÌÐò£¬Ê¹ÓÃmakeºÍ
makefile¹¤¾ß¾Í¿ÉÒÔ¼ò½àÃ÷¿ìµØÀí˳¸÷¸öÔ´ÎļþÖ®¼ä·×·±¸´ÔÓµÄÏ໥¹ØÏµ¡£¶øÇÒÈç´Ë¶àµÄÔ´Îļþ£¬Èç¹ûÿ´Î¶¼Òª¼üÈëgccÃüÁî½øÐбàÒëµÄ»°£¬ÄǶԳÌÐòÔ±
À´Ëµ¼òÖ±¾ÍÊÇÒ»³¡ÔÖÄÑ¡£¶ømake¹¤¾ßÔò¿É×Ô¶¯Íê³É±àÒ빤×÷£¬²¢ÇÒ¿ÉÒÔÖ»¶Ô³ÌÐòÔ±ÔÚÉϴαàÒëºóÐ޸ĹýµÄ²¿·Ö½øÐбàÒë¡£Òò´Ë£¬ÓÐЧµÄÀûÓÃmakeºÍ
makefile¹¤¾ß¿ÉÒÔ´ó´óÌá¸ßÏîÄ¿¿ª·¢µÄЧÂÊ¡£Í¬Ê±ÕÆÎÕmakeºÍmakefileÖ®ºó£¬ÄúÒ²²»»áÔÙÃæ¶Ô×ÅLinuxϵÄÓ¦ÓÃÈí¼þÊÖ×ãÎÞ´ëÁË¡£
¡¡¡¡µ«ÁîÈËÒź¶µÄÊÇ£¬ÔÚÐí¶à½²ÊöLinuxÓ¦ÓõÄÊé¼®É϶¼Ã»ÓÐÏêϸ½éÉÜÕâ¸ö¹¦ÄÜÇ¿´óµ«Óַdz£¸´ÔӵıàÒ빤¾ß¡£ÔÚÕâÀïÎÒ¾ÍÏò´ó¼ÒÏêϸ½éÉÜÒ»ÏÂmake¼°ÆäÃèÊöÎļþmakefile¡£
¡¡¡¡MakefileÎļþ
¡¡¡¡Make¹¤¾ß×îÖ÷ÒªÒ²ÊÇ×î»ù±¾µÄ¹¦ÄܾÍÊÇͨ¹ýmakefileÎļþÀ´ÃèÊöÔ´³ÌÐòÖ®¼äµÄÏ໥¹ØÏµ²¢×Ô¶¯Î¬»¤±àÒ빤×÷¡£¶ømakefile
ÎļþÐèÒª°´ÕÕijÖÖÓï·¨½øÐбàд£¬ÎļþÖÐÐèҪ˵Ã÷ÈçºÎ±àÒë¸÷¸öÔ´Îļþ²¢Á¬½ÓÉú ......
¡¡¡¡±¾ÎÄÒ²¼´¡¶Learning the bash Shell¡·3rd EditionµÄµÚÁùÕÂCommand-Line Options and Typed varilablesÖ®¶ÁÊé±Ê¼ÇÖ®Ò»£¬µ«ÎÒÃǽ«²»ÏÞÓÚ´Ë¡£
¡¡¡¡ÔÚLinuxÃüÁîÖо³£´øÓвÎÊýÀýÈç[-option]µÈµÈ¡£ÔÚÃüÁîÐÐÖпÉÄÜÓÐ0¸ö»òÕß¶à¸öÕâЩѡÏî¡£ÎÒÃÇÔÚ֮ǰѧϰÁËλÖòÎÊý£¬°üÀ¨$1£¬$2£¬$3…£¬$*£¬$#£¬²Î¼ûLinux Bash Shellѧϰ£¨Æß£©£ºshell±à³Ì»ù´¡——ÔËÐÐShell½Å±¾¡¢function
¡£ÕâЩλÖòÎÊý¶¼ÊÇÖ»¶Á¡£
ÒÆÎ»Shift
¡¡¡¡shiftÌṩ¶ÔÖ»¶ÁµÄλÖòÎÊýµÄÒÆÎ»¸³ÖµµÄ²Ù×÷£¬½«1=$2£¬2=$3£¬…£¬¿ÉÒÔʹÓÃshift NÀ´Öƶ¨ÒÆÎ»µÄÊýÄ¿£¬ÀýÈçshift 3£¬Ôò±íʾ1=$4£¬2=$5£¬…¡£Èç¹ûÃüÁîÐÐÖÐÓÐ[-options]µÄ£¬ÎÒÃÇ¿ÉÒÔ¶ÔËûÃǽøÐÐÅжϣ¬²¢½øÐÐÒÆÎ»´¦Àí¡£Ò»¸ö¼òµ¥Àý×ÓÈçÏ£º
if [ $1 = -o ]; then
[process the -o option]
shift
fi
[normal processing of arguments...]
¡¡¡¡ÏÂÃæ¸øÁ½¸öÀý×Ó£¬½éÉÜÈçºÎÓÃshiftÀ´¼ì²é²ÎÊý¡£
#Àý×ÓÒ»£ºÓпÉÄÜÓÐ-NµÄ²ÎÊý£¬ÇÒΪµÚÒ»²ÎÊý¡£Èç¹ûµÚÒ»¸ö²ÎÊýÊÇ-N£¬¼Ç¼ÔÚhowmanyÖУ¬½øÐÐshift£¬½«$2ÖÃÓÚ$1µÄλÖã¬Èç¹ûµÚÒ»¸ö²ÎÊýÊÇ- ......
¹úÍâÓÅÐãlinuxÄں˺Íandroidר¼ÒÍŶÓѰÇó¹úÄÚÆóÒµºÏ×÷£¬ÎÒÃÇÌṩһÁ÷µÄ¼¼ÊõÖ§³ÖÄãÃǵÄlinux/android²úÆ·£¬Ìṩ¶¥¼¶×¨¼Ò¼¶±ðµÄÖ§³Ö¡£
ÁªÏµÓÊÏä:chinaandroidproject@gmail.com qq:1124992772
ÍŶÓÖ÷Ò³£º
http://panicking.kicks-ass.org/ ......