ºìÁªLinuxÃÅ»§
Linux°ïÖú

cygwin ----windowsϵÄunixÄ£Äâ»·¾³

·¢²¼Ê±¼ä:2008-01-17 10:45:27À´Ô´:ºìÁª×÷Õß:rganizati
1 ÒýÑÔ
cygwinÊÇÒ»¸öÔÚwindowsƽ̨ÉÏÔËÐеÄunixÄ£Äâ»·¾³£¬ÊÇcygnus solutions¹«Ë¾¿ª·¢µÄ×ÔÓÉÈí¼þ£¨¸Ã¹«Ë¾¿ª·¢Á˺ܶàºÃ¶«Î÷£¬ÖøÃûµÄ»¹ÓÐeCos£¬²»¹ýÏÖÒѱ»RedhatÊÕ¹º£©¡£Ëü¶ÔÓÚѧϰunix/linux²Ù×÷»·¾³£¬»òÕß´Óunixµ½windowsµÄÓ¦ÓóÌÐòÒÆÖ²£¬»òÕß½øÐÐÄ³Ð©ÌØÊâµÄ¿ª·¢¹¤×÷£¬ÓÈÆäÊÇʹÓÃgnu¹¤¾ß¼¯ÔÚwindowsÉϽøÐÐǶÈëʽϵͳ¿ª·¢£¬·Ç³£ÓÐÓá£Ëæ×ÅǶÈëʽϵͳ¿ª·¢ÔÚ¹úÄÚÈÕ½¥Á÷ÐУ¬Ô½À´Ô½¶àµÄ¿ª·¢Õß¶Ôcygwin²úÉúÁËÐËȤ¡£±¾ÎĽ«¶ÔÆä×÷Ò»½éÉÜ¡£
2 »úÀí
cygnusµ±³õÊ×ÏȰÑgcc£¬gdb£¬gasµÈ¿ª·¢¹¤¾ß½øÐÐÁ˸Ľø£¬Ê¹ËûÃÇÄܹ»Éú³É²¢½âÊÍwin32µÄÄ¿±êÎļþ¡£È»ºó£¬ËûÃÇÒª°ÑÕâЩ¹¤¾ßÒÆÖ²µ½windowsƽ̨ÉÏÈ¥¡£Ò»ÖÖ·½°¸ÊÇ»ùÓÚwin32 api¶ÔÕâЩ¹¤¾ßµÄÔ´´úÂë½øÐдó·ùÐ޸ģ¬ÕâÑù×öÏÔÈ»ÐèÒª´óÁ¿¹¤×÷¡£Òò´Ë£¬ËûÃDzÉÈ¡ÁËÒ»ÖÖ²»Í¬µÄ·½·¨----ËûÃÇдÁËÒ»¸ö¹²Ïí¿â(¾ÍÊÇcygwin dll)£¬°Ñwin32 apiÖÐûÓеÄunix·ç¸ñµÄµ÷Óã¨Èçfork,spawn,signals,select,socketsµÈ£©·â×°ÔÚÀïÃæ£¬Ò²¾ÍÊÇ˵£¬ËûÃÇ»ùÓÚwin32 apiдÁËÒ»¸öunixϵͳ¿âµÄÄ£Äâ²ã¡£ÕâÑù£¬Ö»Òª°ÑÕâЩ¹¤¾ßµÄÔ´´úÂëºÍÕâ¸ö¹²Ïí¿âÁ¬½Óµ½Ò»Æð£¬¾Í¿ÉÒÔʹÓÃunixÖ÷»úÉϵĽ»²æ±àÒëÆ÷À´Éú³É¿ÉÒÔÔÚwindowsƽ̨ÉÏÔËÐеŤ¾ß¼¯¡£ÒÔÕâÐ©ÒÆÖ²µ½windowsƽ̨ÉϵĿª·¢¹¤¾ßΪ»ù´¡£¬cygnusÓÖÖð²½°ÑÆäËûµÄ¹¤¾ß£¨¼¸ºõ²»ÐèÒª¶ÔÔ´´úÂë½øÐÐÐ޸ģ¬Ö»ÐèÒªÐÞ¸ÄËûÃǵÄÅäÖýű¾£©Èí¼þÒÆÖ²µ½windowsÉÏÀ´¡£ÕâÑù£¬ÔÚwindowsƽ̨ÉÏÔËÐÐbashºÍ¿ª·¢¹¤¾ß¡¢Óû§¹¤¾ß£¬¸Ð¾õºÃÏñÔÚunixÉϹ¤×÷¡£
3 °²×°ÉèÖÃcygwin
3.1 °²×°
3.2 »·¾³±äÁ¿
¿ªÊ¼ÔËÐÐbash֮ǰ£¬Ó¦¸ÃÉèÖÃһЩ»·¾³±äÁ¿¡£cygwinÌṩÁËÒ»¸ö.batÎļþ£¬ÀïÃæÒѾ­ÉèÖúÃÁË×îÖØÒªµÄ»·¾³±äÁ¿¡£Í¨¹ýËüÀ´Æô¶¯bashÊÇ×ȫµÄ°ì·¨¡£Õâ¸ö.batÎļþ°²×°ÔÚcygwinËùÔڵĸùĿ¼Ï¡£ ¿ÉÒÔËæÒâ±à¼­¸ÃÎļþ¡£
CYGWIN±äÁ¿ÓÃÀ´Õë¶ÔcygwinÔËÐÐʱϵͳ½øÐжàÖÖÈ«¾ÖÉèÖ᣿ªÊ¼Ê±£¬¿ÉÒÔ²»ÉèÖÃCYGWIN»òÕßÔÚÖ´ÐÐbashǰÓÃÀàËÆÏÂÃæµÄ¸ñʽÔÚdos¿òϰÑËüÉèΪtty
C:\> set CYGWIN=tty notitle glob
PATH±äÁ¿±»cygwinÓ¦ÓóÌÐò×÷ΪËÑË÷¿ÉÖªÐÔÎļþµÄ·¾¶ÁÐ±í¡£µ±Ò»¸öcygwin½ø³ÌÆô¶¯Ê±£¬¸Ã±äÁ¿±»´Ówindows¸ñʽ(e.g. C:\WinNT\system32;C:\WinNT)ת»»³Éunix¸ñʽ(e.g., /WinNT/system32:/WinNT)¡£Èç¹ûÏëÔÚ²»ÔËÐÐbashµÄʱºòÒ²Äܹ»Ê¹ÓÃcygwin¹¤¾ß¼¯£¬PATHÆðÂëÓ¦¸Ã°üº¬x:\cygwin\bin£¬ÆäÖÐx:\cygwin ÊÇÄãµÄϵͳÖеÄcygwinĿ¼¡£
HOME±äÁ¿ÓÃÀ´Ö¸¶¨Ö÷Ŀ¼£¬ÍƼöÔÚÖ´ÐÐbashǰ¶¨Òå¸Ã±äÁ¿¡£µ±cygwin½ø³ÌÆô¶¯Ê±£¬¸Ã±äÁ¿Ò²±»´Ówindows¸ñʽת»»³Éunix¸ñʽ£¬ÀýÈ磬×÷ÕߵĻúÆ÷ÉÏHOMEµÄֵΪC:\£¨dosÃüÁîset HOME¾Í¿ÉÒÔ¿´µ½ËûµÄÖµ£¬set HOME=XXX¿ÉÒÔ½øÐÐÉèÖã©£¬ÔÚbashÖÐÓÃecho $HOME¿´£¬ÆäֵΪ/cygdrive/c.
TERM±äÁ¿Ö¸¶¨ÖÕ¶ËÐÍ̬¡£Èç¹ûÃÀ¶ÔËü½øÐÐÉèÖã¬Ëü½«×Ô¶¯ÉèΪcygwin¡£
LD_LIBRARY_PATH±»cygwinº¯Êýdlopen()×÷ΪËÑË÷.dllÎļþµÄ·¾¶ÁÐ±í£¬¸Ã±äÁ¿Ò²±»´Ówindows¸ñʽת»»³Éunix¸ñʽ¡£¶àÊýCygwinÓ¦ÓóÌÐò²»Ê¹ÓÃdlopen,Òò¶ø²»ÐèÒª¸Ã±äÁ¿¡£
3.3 ¸Ä±äcygwinµÄ×î´ó´æ´¢ÈÝÁ¿
Cygwin³ÌÐòȱʡ¿ÉÒÔ·ÖÅäµÄÄÚ´æ²»³¬¹ý384 MB(program+data)¡£¶àÊýÇé¿öϲ»ÐèÒªÐÞ¸ÄÕâ¸öÏÞÖÆ¡£È»¶ø£¬Èç¹ûÐèÒª¸ü¶àʵ¼Ê»òÐéÄâÄڴ棬Ӧ¸ÃÐÞ¸Ä×¢²á±íµÄHKEY_LOCAL_MACHINE»òHKEY_CURRENT_USERÇø¶Î¡£Ìï¼ÒÒ»¸öDWORD¼üheap_chunk_in_mb²¢°ÑËüµÄÖµÉèΪÐèÒªµÄÄÚ´æÏÞÖÆ£¬µ¥Î»ÊÇÊ®½øÖÆMB¡£Ò²¿ÉÒÔÓÃcygwinÖеÄregtoolÍê³É¸ÃÉèÖá£Àý×ÓÈçÏ£º
regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin
4 ʹÓÃcygwin
ÕâÒ»¶Î½²Ò»ÏÂcygwinºÍ´«Í³unixϵͳµÄ²»Í¬Ö®´¦¡£
4.1 Ó³Éä·¾¶Ãû
4.1.1 ÒýÑÔ
cygwinͬʱ֧³Öwin32ºÍposix·ç¸ñµÄ·¾¶£¬Â·¾¶·Ö¸ô·û¿ÉÒÔÊÇÕýб¸ÜÒ²¿ÉÒÔÊÇ·´Ð±¸Ü¡£»¹Ö§³ÖUNC·¾¶Ãû¡££¨ÔÚÍøÂçÖУ¬UNCÊÇÒ»ÖÖÈ·¶¨ÎļþλÖõķ½·¨£¬Ê¹ÓÃÕâÖÖ·½·¨Óû§¿ÉÒÔ²»¹ØÐÄ´æ´¢É豸µÄÎïÀíλÖ㬷½±ãÁËÓû§Ê¹Óá£ÔÚWindows²Ù×÷ϵͳ£¬Novell NetwareºÍÆäËü²Ù×÷ϵͳÖУ¬¶¼ÒѾ­Ê¹ÓÃÁËÕâÖֹ淶ÒÔÈ¡´ú±¾µØÃüÃûϵͳ¡£ÔÚUNCÖУ¬ÎÒÃDz»ÓùØÐÄÎļþÔÚʲôÅÌ£¨»ò¾í£©ÉÏ£¬²»ÓùØÐÄÕâ¸öÅÌ£¨»ò¾í£©ËùÔÚ·þÎñÆ÷ÔÚʲôµØ·½¡£ÎÒÃÇÖ»ÒªÒÔÏÂÃæ¸ñʽ¾Í¿ÉÒÔ·ÃÎÊÎļþ£º
\\·þÎñÆ÷Ãû\¹²ÏíÃû\·¾¶\ÎļþÃû
¹²ÏíÃûÓÐʱҲ±»³ÆÎªÎļþËùÔÚ¾í»ò´æ´¢É豸µÄÂß¼­±êʶ£¬µ«Ê¹ÓÃËüµÄÄ¿µÄÊÇÈÃÓû§²»±Ø¹ØÐÄÕâЩ¾í»ò´æ´¢É豸ËùÔÚµÄÎïÀíλÖᣣ©
·ûºÏposix±ê×¼µÄ²Ù×÷ϵͳ£¨Èçlinux£©Ã»ÓÐÅÌ·ûµÄ¸ÅÄî¡£ËùÓеľø¶Ô·¾¶¶¼ÒÔÒ»¸öб¸Ü¿ªÊ¼£¬¶ø²»ÊÇÅÌ·û£¨Èçc:£©¡£ËùÓеÄÎļþϵͳ¶¼ÊÇÆäÖеÄ×ÓĿ¼¡£ÀýÈ磬Á½¸öÓ²ÅÌ£¬ÆäÖÐ֮һΪ¸ù£¬ÁíÒ»¸ö¿ÉÄÜÊÇÔÚ/disk2·¾¶Ï¡£
ÒòΪÐí¶àunixϵͳÉϵijÌÐò¼Ù¶¨´æÔÚµ¥Ò»µÄposixÎļþϵͳ½á¹¹£¬ËùÒÔcygwinרÃÅά»¤ÁËÒ»¸öÕë¶Ôwin32ÎļþϵͳµÄÄÚ²¿posixÊÓͼ£¬Ê¹ÕâЩ³ÌÐò¿ÉÒÔÔÚwindowsÏÂÕýÈ·ÔËÐС£ÔÚijЩ±ØÒªµÄÇé¿öÏ£¬cygwin»áʹÓÃÕâÖÖÓ³ÉäÀ´½øÐÐwin32ºÍposix·¾¶Ö®¼äµÄת»»¡£
4.1.2 cygwin mount±í
cygwinÖеÄmount³ÌÐòÓÃÀ´°Ñwin32ÅÌ·ûºÍÍøÂç¹²Ïí·¾¶Ó³Éäµ½cygwinµÄÄÚ²¿posixĿ¼Ê÷¡£ÕâÊÇÓëµäÐÍunix mount³ÌÐòÏàËÆµÄ¸ÅÄî¡£¶ÔÓÚÄÇЩ¶Ôunix²»ÊìϤ¶ø¾ßÓÐwindows±³¾°µÄµÄÈËÀ´Ëµ£¬mount³ÌÐòºÍÔçÆÚµÄdosÃüÁîjoin·Ç³£ÏàËÆ£¬¾ÍÊǰÑÒ»¸öÅÌ·û×÷ΪÆäËû·¾¶µÄ×ÓĿ¼¡£
·¾¶Ó³ÉäÐÅÏ¢´æ·ÅÔÚµ±Ç°Óû§µÄcygwin mount±íÖУ¬Õâ¸ömount table ÓÖÔÚwindowsµÄ×¢²á±íÖС£ÕâÑù£¬µ±¸ÃÓû§ÏÂÒ»´ÎµÇ¼½øÀ´Ê±£¬ÕâЩÐÅÏ¢ÓÖ´Ó×¢²á±íÖÐÈ¡³ö¡£mount ±í·ÖΪÁ½ÖÖ£¬³ýÁËÿ¸öÓû§Ìض¨µÄ±í£¬»¹ÓÐϵͳ·¶Î§µÄmount±í£¬Ã¿¸öcygwinÓû§µÄ°²×°±í¶¼¼Ì³Ð×Ôϵͳ±í¡£ÏµÍ³±íÖ»ÄÜÓÉÓµÓкÏÊÊȨÏÞµÄÓû§£¨windows ntµÄ¹ÜÀíÔ±£©Ð޸ġ£
µ±Ç°Óû§µÄmount±í¿ÉÒÔÔÚ×¢²á±í"HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v" Ï¿´µ½¡£ÏµÍ³±í
´æÔÚHKEY_LOCAL_MACHINEÏ¡£
posix¸ù·¾¶/ȱʡָÏòϵͳ·ÖÇø£¬µ«ÊÇ¿ÉÒÔʹÓÃmountÃüÁîÖØÐÂÖ¸Ïòµ½windowsÎļþϵͳÖеÄÈκη¾¶¡£cygwin´Ówin32·¾¶Éú³Éposix·¾¶Ê±£¬×ÜÊÇʹÓÃmount±íÖÐ×µÄǰ׺¡£ÀýÈçÈç¹ûc:±»Í¬Ê±°²×°ÔÚ/cºÍ/£¬cygwin½«°ÑC:/foo/barת»»³É/c/foo/bar.
Èç¹û²»¼ÓÈκβÎÊýµØµ÷ÓÃmountÃüÁ»á°ÑCygwinµ±Ç°°²×°µã¼¯ºÏÈ«²¿Áгö¡£ÔÚÏÂÃæµÄÀý×ÓÖУ¬cÅÌÊÇPOSIX¸ù£¬¶ødÅ̱»Ó³Éäµ½/d¡£±¾ÀýÖУ¬¸ùÊÇÒ»¸öϵͳ·¶Î§µÄ°²×°µã£¬Ëü¶ÔËùÓÐÓû§¶¼ÊǿɼûµÄ£¬¶ø/d½ö¶Ôµ±Ç°Óû§¿É¼û¡£
c:\> mount
f:\cygwin\bin on /usr/bin type system (binmode)
f:\cygwin\lib on /usr/lib type system (binmode)
f:\cygwin on / type system (binmode)
e:\src on /usr/src type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)
e: on /cygdrive/e type user (binmode,noumount)
»¹¿ÉÒÔʹÓÃmountÃüÁîÔö¼ÓÐµİ²×°µã£¬ÓÃumountɾ³ý°²×°µã¡£
µ±Cygwin²»Äܸù¾ÝÒÑÓеݲװµã°Ñij¸öwin32·¾¶×ª»¯Îªposix·¾¶Ê±£¬cygwin»á×Ô¶¯°ÑËüת»¯µ½Ò»¸ö´¦ÓÚȱʡposix·¾¶/cygdriveϵĵÄÒ»¸ö°²×°µã. ÀýÈ磬Èç¹ûCygwin ·ÃÎÊZ:\foo£¬¶øZÅ̵±Ç°²»ÔÚ°²×°±íÄÚ£¬ÄÇôZ:\½«±»×Ô¶¯×ª»¯³É/cygdrive/Z.
¿ÉÒÔ¸øÃ¿¸ö°²×°µã¸³ÓèÌØÊâµÄÊôÐÔ¡£×Ô¶¯°²×°µÄ·ÖÇøÏÔʾΪ¡°auto¡±°²×°¡£°²×°µã»¹¿ÉÒÔÑ¡ÔñÊÇ"textmode"»¹ÊÇ "binmode"£¬Õâ¸öÊôÐÔ¾ö¶¨ÁËÎı¾ÎļþºÍ¶þ½øÖÆÎļþÊÇ·ñ°´Í¬ÑùµÄ·½Ê½´¦Àí¡£
4.1.3 ÆäËû·¾¶Ïà¹ØÐÅÏ¢
cygpath¹¤¾ßÌṩÁËÔÚshell½Å±¾ÖнøÐÐwin32-posix·¾¶¸ñʽת»»µÄÄÜÁ¦¡£
HOME, PATH,ºÍLD_LIBRARY_PATH»·¾³±äÁ¿»áÔÚcygwin½ø³ÌÆô¶¯Ê±×Ô¶¯±»´ÓWin32¸ñʽת»»³ÉÁËPOSIX¸ñʽ(ÀýÈ磬Èç¹û´æÔÚ´Ó¸Ãwin32·¾¶µ½posix·¾¶µÄ°²×°£¬»á°Ñc:\cygwin\binתΪ/bin)¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 2 ÌõÆÀÂÛ

  1. zhangwr ÓÚ 2009-06-10 20:38:25·¢±í:

    ¸Ðл

  2. superyongzhe ÓÚ 2008-05-31 16:59:43·¢±í:

    лл£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡