¾ÕÀ¸·Î    ¸ñÂ÷    1    2    Á¦3Àå    4    5    6    7    8    ´ÙÀ½À¸·Î

3. ÆÄÀ̽㠱¸ÃàÇϱâ¿Í ¾Ë·ÁÁø ¹ö±×µé

3.1. Å×½ºÆ® ¸ðµÒÀÌ ÀÖ³ª¿ä?

¹°·ÐÀÔ´Ï´Ù. ¿©·¯ºÐÀº ±×°ÍÀ» "make test"·Î ±¸ÃàÇѵڿ¡ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù, ¶Ç´Â ±×°ÍÀ» ¼öµ¿À¸·Î ÆÄÀ̽ã ÇÁ·ÒÇÁÆ®¿¡¼­ ÀÌ ¸í·É¾î·Î ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù:

 import test.autotest
ÆÄÀ̽ã 1.4 ȤÀº ÀÌÀüÀ̶ó¸é, ´ÙÀ½À» »ç¿ëÇϼ¼¿ä

 import autotest
±× Å×½ºÆ® ¸ðµÒÀº ÆÄÀ̽ãÀÇ ¸ðµç »ç¾çÀ» Å×½ºÆ®ÇÏÁö´Â ¾Ê½À´Ï´Ù, ±×·¸Áö¸¸ ÆÄÀ̽ãÀÌ ½ÇÁ¦·Î ÀÛµ¿ÇÏ´ÂÁö È®ÁõÇϱâ À§ÇÏ¿© ¿À·£ ½Ã°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

ÁÖÀÇ: ¸¸¾à "make test"°¡ ½ÇÆÐÇÑ´Ù°í Çؼ­, ´Ü¼øÈ÷ ±× Ãâ·ÂÀ» ´º½º±×·ì¿¡ ÆíÁöÇÏÁö ¸¶¼¼¿ä -- ÀÌ°ÍÀ¸·Î´Â ±× ÇÁ·Î±×·¥À» µð¹ö±×Çϱâ À§ÇÑ ÃæºÐÇÑ Á¤º¸°¡ µÇÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, ¾î¶² Å×½ºÆ®°¡ ½ÇÆÐÇÏ´ÂÁö ¾Ë¾Æ ³»¼¼¿ä, ±×¸®°í ±× Å×½ºÆ®¸¦ ¼öµ¿À¸·Î »óÈ£´ëÈ­ ¸ðµå¿¡¼­ ½ÇÇàÇϼ¼¿ä. ¿¹¸¦ µé¾î, "make test"°¡ test_spamÀÌ ½ÇÆÐÇß´Ù°í º¸°íÇϸé, ÀÌ°ÍÀ» »óÈ£´ëÈ­ÀûÀ¸·Î Á¡°ËÇϼ¼¿ä:

 import test.test_spam
ÀÌ°ÍÀº ÀϹÝÀûÀ¸·Î ´õ¿í »ó¼¼ÇÑ Ãâ·ÂÀ» »êÃâÇϹǷΠ±× ÇÁ·Î±×·¥À» µð¹ö±×ÇϱâÀ§ÇØ Áø´ÜµÉ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ÆÄÀ̽㿡¼­ ȤÀº ¶óÀ̺귯¸®¿¡¼­, ¶Ç´Â ±× Å×½ºÆ®¿¡¼­ ¹ö±×¸¦ ¹ß°ßÇÏ°Ô µÇ¸é, ÀÌ°ÍÀ» ¼Ò½ºÆ÷Áö(SourceForge)¿¡ ÀÖ´Â ÆÄÀ̽㠹ö±× ÃßÀû±â¿¡ º¸°íÇϼ¼¿ä:

http://sourceforge.net/tracker/?func=add&group_id=5470&atid=105470


3.2. ±× Å×½ºÆ® ¸ðµÒÀ» ½ÇÇàÇÒ ¶§, ³ª´Â ºÎµ¿¼Ò¼öÁ¡ ¿¬»ê¿¡ °üÇÑ ºÒÆòÀ» µè½À´Ï´Ù, ±×·¸Áö¸¸ ºÎµ¿¼Ò¼öÁ¡ ¿¬»êÀ» ´Ù·ê ¶§´Â Àß ¸øµÈ ¾î¶² °Íµµ ¹ß°ßÇÒ ¼ö ¾ø½À´Ï´Ù.

±× Å×½ºÆ® ¸ðµÒÀº CÀÇ ºÎµ¿ ¼Ò¼öÁ¡ ¿¬»êÀÇ Àǹ̷п¡ °üÇÏ¿© °¡²û º¸ÀåµÇÁö ¾ÊÀº °¡Á¤À» ÇÏ°ï ÇÕ´Ï´Ù. ¾î¶² »ç¶÷ÀÌ ´õ ÁÁÀº ºÎµ¿ ¼Ò¼öÁ¡ Å×½ºÆ® ¸ðµÒÀ» ±âÁõÇÒ ¶§±îÁö´Â, ±× ¼º°¡½Å ºÎµ¿¼Ò¼öÁ¡ ¿¬»ê Å×½ºÆ®¸¦ ÁÖ¼®Ã³¸®ÇÏ°í ºñ½ÁÇÑ Å×½ºÆ®¸¦ ¼öµ¿À¸·Î ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.


3.3. ¼³Á¤ ½ºÅ©¸³Æ®¸¦ Àç½ÇÇàÇÏ°í ³­ ÈÄÀÇ ¸µÅ© ¿¡·¯.

ȯ°æ¼³Á¤ÀÌ º¯°æµÈ ÈÄ¿¡´Â ÀϹÝÀûÀ¸·Î "make clean"À» ½ÇÇàÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.


3.4. ½ºÅ©¸³Æ®·Î (±× ½ºÅ©¸³Æ®ÀÇ À̸§ µÚ¿¡) °Ç³×Áø ¼±ÅûçÇ׵鿡 °üÇÏ¿© ÆÄÀ̽ã ÀÎÅÍÇÁ¸®ÅÍ°¡ ºÒÆòÇÕ´Ï´Ù.

¾Æ¸¶µµ GNUÀÇ getopt¿Í, ¿¹¸¦ µé¾î -liberty¸¦ ÅëÇÏ¿©¼­ ¿¬°áÇÏ°í ÀÖ´Â °Í °°½À´Ï´Ù. ±×·¯Áö ¸¶¼¼¿ä. ºÒÆòÀÇ ÀÌÀ¯´Â GNUÀÇ getopt°¡, System VÀÇ getopt ±×¸®°í ´Ù¸¥ ½Ã½ºÅÛÀÇ getopt ±¸Çö°ú´Â ´Ù¸£°Ô, ¼±ÅûçÇ×ÀÌ ¾ø´Â °ÍÀ» ¼±ÅûçÇ× ¸®½ºÆ®ÀÇ ¸¶Áö¸·À̶ó°í °£ÁÖÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ½ºÅ©¸³Æ®¸¦ À§ÇÑ ½Å¼ÓÇÑ (±×¸®°í ȣȯ¼º ÀÖ´Â) ÇØ°á¹ýÀº "--"¸¦ ÀÎÅÍÇÁ¸®ÅÍ¿¡´Ù, ´ÙÀ½°ú °°ÀÌ Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù:

        #! /usr/local/bin/python --
»óÈ£´ëÈ­ÀûÀ¸·Î ÀÌ·¸°Ô »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù:

        python -- script.py [options]
ÁÖ¸ñÇÏ½Ç °ÍÀº ÀÛµ¿ÇÏ´Â getopt ±¸ÇöÀÌ ÆÄÀ̽㠹èÆ÷º»¿¡ (Python/getopt.c)·Î Á¦°øµÇÁö¸¸ ÀÚµ¿ÀûÀ¸·Î »ç¿ëµÇÁö´Â ¾Ê½À´Ï´Ù.


3.5. SGI¿¡ ´ëÇÑ ±¸ÃàÀ» ÇÏ´Â Áß¿¡, glmodule.c¸¦ »ý¼ºÇϱâ À§ÇÏ¿© ÆÄÀ̽ãÀ» ½ÇÇàÇÏ¿´Áö¸¸, ÆÄÀ̽ãÀº ±¸ÃàµÇÁö ¾Ê¾Ò°Å³ª ȤÀº ¼³Ä¡µÇÁö ¾Ê¾Ò½À´Ï´Ù.

¼³Á¤¿¡¼­ glmodule.c¸¦ ¾ð±ÞÇÏ°í ÀÖ´Â ¶óÀÎÀ» ÁÖ¼®Ã³¸® ÇÏ½Ã°í ¸ÕÀú ÆÄÀ̽ãÀ» gl ¾øÀÌ ±¸ÃàÇϼ¼¿ä; ±×°ÍÀ» ¼³Ä¡ÇϽðųª $PATH¿¡ ±×°ÍÀÌ ÀÖ´ÂÁö È®ÀÎÇϼ¼¿ä, ±×¸®°í ¼³Á¤ ÆÄÀÏÀ» ´Ù½Ã ÆíÁýÇϼż­ gl ¸ðµâÀ» ÄѼ¼¿ä, ±×¸®°í ´Ù½Ã ¸¸µå¼¼¿ä. "make clean"À» ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù; ±× ¸ðµâµéÀÌ ÀÖ´Â ÇϺεð·ºÅ丮¿¡¼­ "make Makefile"À» ½ÇÇàÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù (±×·¸Áö ¾ÊÀ¸¸é ´Ü¼øÈ÷ ÃÖ»óÀ§ ¼öÁØ¿¡¼­ "make"À» ½ÇÇàÇϼ¼¿ä).


3.6. Àú´Â VPATH¸¦ »ç¿ëÇÕ´Ï´Ù ±×·¯³ª ¾î¶² ¸ñÇ¥µéÀº ¼Ò½º µð·ºÅ丮¿¡ ±¸ÃàµË´Ï´Ù.

¾î¶² ½Ã½ºÅÛ¿¡¼­´Â (¿¹·Î Sun¿¡¼­´Â), ¸¸¾à ¸ñÇ¥°¡ ÀÌ¹Ì ¼Ò½º µð·ºÅ丮¿¡ Á¸ÀçÇϸé, ±¸Ãàµð·ºÅ丮 ´ë½Å¿¡ °Å±â¿¡ »ý¼ºµË´Ï´Ù. ÀÌ°ÍÀº º¸Åë ¿©·¯ºÐÀÌ ÀÌÀü¿¡ VPATH ¾øÀÌ ±¸ÃàÇÑ ÀûÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. ¼Ò½º µð·ºÅ丮¿¡¼­ "make clobber"¸¦ ½ÇÇàÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.


3.7. GNUÀÇ readline ¶óÀ̺귯¸®¿Í ¸µÅ© ¶Ç´Â ±¸Ãà°ï¶õ.

GNUÀÇ readline ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿© »óÈ£´ëÈ­ÀûÀÎ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù: ÀÌ°ÍÀ¸·Î ¿©·¯ºÐÀº ÆÄÀ̽ãÀÌ »óÈ£´ëÈ­ÀûÀ¸·Î È£ÃâµÇ¸é ¸í·É¾î ±â¾ï±â´É°ú ¶óÀÎ ÆíÁýÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¼Ò½ºµéÀº (Àû¾îµµ 2.0¿¡´Â) ÆÄÀ̽ã°ú ÇÔ²² ¹èÆ÷µË´Ï´Ù. Modules/Setup¿¡ ÀÖ´Â ´ÙÀ½ ¶óÀο¡¼­

#readline readline.c -lreadline -ltermcap

ÁÖ¼®À» Á¦°Å Çϼ¼¿ä. ȯ°æ¼³Á¤ ¼±ÅûçÇ×ÀÎ --with-readlineÀº, Àû¾îµµ ÆÄÀ̽ã 2.0¿¡¼­´Â ´õÀÌ»ó Áö¿øµÇÁö ¾Ê½À´Ï´Ù. readline ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ°í ±¸ÃàÇϴµ¥ ´ëÇÑ ¾à°£ÀÇ ÈùÆ®¸¦ µéÀÚ¸é: SGI IRIX 5¿¡¼­´Â, ´ÙÀ½°ú °°ÀÌ rldefs.h¿¡ Ãß°¡ Çϼŵµ ÁÁ½À´Ï´Ù:

        #ifndef sigmask
        #define sigmask(sig) (1L << ((sig)-1))
        #endif
¾î¶² ½Ã½ºÅÛ¿¡¼­´Â, ¸î¸îÀÇ ¼Ò½º ÆÄÀÏÀÇ ÃÖ»ó´Ü¿¡ #include "rldefs.h"¸¦ Ãß°¡ÇÒ Çʿ伺ÀÌ ÀÖ½À´Ï´Ù, ±×¸®°í VPATH »ç¾çÀ» »ç¿ëÇϽŴٸé, fooÀÇ ¿©·¯ °ªµéÀ» À§Çؼ­ foo.o: foo.c ÇüÅÂÀÇ ÀÇÁ¸¼ºÀ» Makefile ÆÄÀÏ¿¡ Ãß°¡ÇؾßÇÒ ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. readline ¶óÀ̺귯¸®´Â termcap ¶óÀ̺귯¸®ÀÇ »ç¿ëÀ» ¿ä±¸ÇÕ´Ï´Ù. ÀÌ¿Í °ü·ÃµÈ ¾Ë·ÁÁø ¹®Á¦ Çϳª´Â ±×°ÍÀÌ STDWIN°ú SGI GL ¶óÀ̺귯¸®¿ÍÀÇ Ãæµ¹À» ¾ß±âÇÏ´Â Ç׸ñÀ» Æ÷ÇÔÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. STDWINÀÇ Ãæµ¹Àº '#define werase w_erase'¶ó´Â ¶óÀÎÀ» stdwin.h ÆÄÀÏ¿¡ Ãß°¡Çϸé ÇØ°áµÉ ¼ö ÀÖ½À´Ï´Ù (STDWIN ¹èÆ÷º», ÇϺεð·ºÅ丮 H¿¡ ÀÖ½À´Ï´Ù). ÆÄÀ̽ã ȯ°æ¼³Á¤ ½ºÅ©¸³Æ®¿¡¼­ °­Á¦·Î ÅÒĸ(termcap) ¶óÀ̺귯¸®ÀÇ Á¤Àû ¹öÀüÀ» »ç¿ëÇϵµ·Ï ÇØÅ·ÇÔÀ¸·Î½á GL Ãæµ¹Àº ÇØ°áµÇ¾ú½À´Ï´Ù. readline¶óÀ̺귯¸®¿Í °ü·ÁµÈ ƯÁ¤ÇÑ ¹®Á¦µé¿¡ °ü½ÉÀÌ ÀÖÀ¸½Ã¸é ´º½º±×·ì gnu.bash.bug news:gnu.bash.bug À» Á¡°ËÇØ º¸¼¼¿ä (Àú´Â ÀÌ ±×·ìÀ» ÀÐÁö´Â ¾Ê¾ÒÁö¸¸ Á¦°¡ µè±â·Î ±×°÷ÀÌ readline ¹ö±×°¡ º¸°íµÇ¾î ÀÖ´Â °÷À̶ó°í ¾Ë°í ÀÖ½À´Ï´Ù).


3.8. ¿À·¡µÈ ¸®´ª½º 1.x ¹öÀü¿¡¼­ ¼ÒÄÏ I/O¿¡ ¹®Á¦.

ÆÄÀ̽ãÀ» ±¸ÃàÇϼÌÀ¸¸é, ±×°ÍÀ» »ç¿ëÇؼ­ Lib/linux1 µð·ºÅ丮¿¡ ÀÖ´Â regen.py ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϼ¼¿ä. ¹èÆ÷µÈ ±×´ë·ÎÀÇ ÆÄÀϵéÀº ºÐ¸íÈ÷ ¾î¶² ¸®´ª½º ¹öÀü¿¡¼­´Â ½Ã½ºÅÛ Çì´õ¿Í ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.


3.9. Ultrix¿¡¼­ ÇÁ·ÎÅäŸÀÔÀÇ ¹®Á¦.

UltrixÀÇ cc°¡ ¸Á°¡Áø°ÍÀ̶ó°í ÆǴܵ˴ϴ٠-- gcc¸¦ »ç¿ëÇϽðųª, config.h¸¦ #undef HAVE_PROTOTYPES ÆíÁýÇϼ¼¿ä.


3.10.Ç÷§Æû X¿¡¼­ ÆÄÀ̽ãÀ» ±¸ÃàÇϴµ¥ µû¸£´Â ´Ù¸¥ ¹®Á¦µé.

ÀÚ¼¼ÇÑ »çÇ×À» ¼Ò½ºÆ÷ÁöÀÇ ¹ö±× ÃßÀû±â¿¡ Á¦ÃâÇϼ¼¿ä:

  http://sourceforge.net/tracker/?group_id=5470&atid=105470
±×·¯¸é ¿ì¸®°¡ Á¶»çÇØ º¸°Ú½À´Ï´Ù. µÇµµ·ÏÀ̸é ÀÚ¼¼ÇÏ°Ô º¸³» ÁÖ½Ã±æ ¹Ù¶ø´Ï´Ù. ƯÈ÷, ¿©·¯ºÐÀÌ »ç¿ëÇϽô ÄÄÇ»ÅÍÀÇ Á¾·ù ¿î¿µÃ¼Á¦(±×¸®°í ¹öÀü)ÀÇ Á¾·ù¸¦ ¸»¾¸ÇØ ÁÖ½ÃÁö ¾ÊÀ¸¸é ¹«¾ùÀÌ ¹®Á¦ÀÎÁö ¿ì¸®°¡ ¾Ë¾Æ³»±â°¡ Èûµì´Ï´Ù. ÄÄÆÄÀÏ Ãâ·Â ·Î±×¸¦ °¡Áö°í °è½Ã¸é, ÆÄÀÏ ¿Ã¸®±â¸¦ »ç¿ëÇØ ÁÖ½Ã±æ ¹Ù¶ø´Ï´Ù -- ¸ðµç °ÍÀ» ¸Þ½ÃÁö ¹Ú½º¿¡ ºÙ¿© ³ÖÁö ¸¶¼¼¿ä.

¸¹Àº °æ¿ì¿¡, ¿ì¸®´Â °°Àº Çϵå¿þ¾î ȤÀº ¿î¿µÃ¼Á¦¿¡ Á¢±ÙÇÒ ¼ö´Â ¾ø½À´Ï´Ù, ±×·¯¹Ç·Î Á¦¹ß, ¿©·¯ºÐÀÌ ¼Ò½ºÆ÷Áö °èÁ¤À» °¡Áö°í °è½Ã¸é, ¿©·¯ºÐÀÇ º¸°í¼­¸¦ ´Ù ä¿ö ³ÖÀ¸½Ã±â Àü¿¡ ·Î±×ÀÎÀ» Çϼ¼¿ä, ȤÀº °èÁ¤ÀÌ ¾øÀ¸½Ã´Ù¸é, ÀüÀÚ ¿ìÆí ÁÖ¼Ò¸¦ Æ÷ÇÔÇϼż­ ¿©·¯ºÐ¿¡°Ô Ãß°¡ Áú¹®À» ÇÒ¼ö ÀÖµµ·Ï ÇØ ÁÖ¼¼¿ä. ¼Ò½ºÆ÷Áö¿¡ óÀ½ ·Î±×ÀÎ ÇÏ½Ã°Ô µÇ¸é ¿©·¯ºÐÀÇ º¸°í¼­¿¡ ´ëÇÏ¿© ¿¬±¸ÇÑ °»½Å»çÇ×ÀÌ ¿©·¯ºÐ¿¡°Ô º¸³»Áú °ÍÀÔ´Ï´Ù.


3.11. ¸®´ª½º¿¡¼­ µ¿Àû ÀûÀ縦 ¼³Á¤ÇÏ´Â ¹ý.

ÀÌ°ÍÀº ÀÌÁ¦ ÀÚµ¿ÀûÀÌ µÇ¾ú½À´Ï´Ù. ¿©·¯ºÐÀÇ ¸®´ª½º ¹öÀüÀÌ ELF Çü½ÄÀ» »ç¿ëÇÑ´Ù¸é ¸»ÀÌÁö¿ä (ÃÖ±ÙÀÇ ¸ðµç ¸®´ª½º´Â ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù).


3.12. ¸®´ª½º 2.0¿¡¼­ °øÀ¯ ¸ðµâÀ» ¾òÀ» ¼ö ¾ø½À´Ï´Ù (Slackware96)?

ÀÌ°ÍÀº Slackware96 ¹èÆ÷º»¿¡ ÀÖ´Â ¹ö±×ÀÔ´Ï´Ù. ÇØ°áÃ¥Àº ½±½À´Ï´Ù: /lib/libdl.so¿¡¼­ /lib/libdl.so.1À¸·Î ¿¬°áµÇ¾î ÀÖ´Â °ÍÀ» È®ÀÎÇϼż­ ´ÙÀ½ÀÇ ¿¬°áµéÀÌ ¼³Á¤µÇ¾î ÀÖ´ÂÁö »ìÆ캸¼¼¿ä: /lib/libdl.so -> /lib/libdl.so.1 /lib/libdl.so.1 -> /lib/libdl.so.1.7.14

ÀÌ·¸°Ô ¼öÁ¤ÇÑ ÈÄ¿¡ ÆÄÀ̽ãÀ» À籸ÃàÇÏ·Á°í ½ÃµµÇϱâ Àü¿¡, config.cache ÆÄÀÏÀ» rmÀ¸·Î »èÁ¦ÇÏ°í ³ª¼­, ¾Æ¸¶µµ ȯ°æ¼³Á¤ ½ºÅ©¸³Æ®¸¦ Àç½ÇÇàÇÒ ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù.


3.13. ¸®´ª½º¿¡¼­ °øÀ¯ ¸ðµâÀ» ¸¸µé ¶§ÀÇ ¹®Á¦.

ÀÌ°ÍÀº ÆÄÀ̽ãÀ» Á¤Àû ¿¬°á·Î ±¸ÃàÇÏ°í ±×¸®°í´Â ¼³Á¤ ÆÄÀÏ¿¡¼­
  *shared*  
¸¦ °¡´ÉÇϵµ·Ï ÇÒ ¶§ ÀϾ´Ï´Ù. °øÀ¯ ¶óÀ̺귯¸® ÄÚµå´Â ¹Ýµå½Ã "-fpic"À¸·Î ÄÄÆÄÀÏÇÏ¿©¾ß ÇÕ´Ï´Ù. ¸¸¾à ±× ¸ðµâÀ» À§ÇÑ a.o ÆÄÀÏÀÌ ÀÌ¹Ì Á¤Àû ¿¬°á·Î ÄÄÆÄÀϵǾî Á¸ÀçÇÑ´Ù¸é, ±×°ÍÀ» Á¦°ÅÇϰųª ȤÀº ±× ¸ðµâÀÇ µð·ºÅ丮¿¡¼­ "make clean"À» Çϼ¼¿ä.


3.14. ¸®´ª½º¿¡¼­ ¾²·¹µå¸¦ »ç¿ëÇÏ´Â ¹ý.

[±×·¹±× ½ºÅ¸ÀÎ(Greg Stein)] ¾ÆÁÖ ÃÖ±ÙÀÇ, ȤÀº ±× ÀÌ»óÀÇ libc¸¦ °¡Áö°í °è½Ã°Å³ª, LinuxThreads-0.5 ¹èÆ÷º»À» ±¸ÇÏ½Ç ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÁÖ¸ñÇÒ °ÍÀº LinuxThreads¸¦ Á¤»óÀûÀ¸·Î ¼³Ä¡Çϼ̴ٸé, ±× µð·ºÅ丮¸¦ -with-thread ¼³Á¤ ½ºÀ§Ä¡¿¡ ÀüÇô ÁöÁ¤ÇÏ½Ç ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ¼³Á¤ ½ºÅ©¸³Æ®´Â ¾Æ¹« ¹®Á¦¾øÀÌ Ã£À» ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¸ðµç °ÍÀÌ ÀûÀýÇÏ°Ô ±¸ÃàµÈ°ÍÀ» È®ÀÎÇϼÌÀ¸¸é, "make clean"À» ÇϽðí, config.cache¸¦ Á¦°ÅÇϽðí, ±× ½ºÀ§Ä¡·Î ´Ù½Ã Àç¼³Á¤ÇϽðí, ±×¸®°í ±¸ÃàÇϽʽÿÀ.

[¾Øµð ´õ½ºÆ®¸¸(Andy Dustman)] glibc ½Ã½ºÅÛ (Áï. RedHat 5.0+)¿¡ ´ëÇؼ­ ¸»ÇÏÀÚ¸é, LinuxThreads ´Â Æó±âµÇ°í POSIX ¾²·¹µå (-lpthread)°¡ ´ë½ÅÇÏ°Ô µÇ¾ú½À´Ï´Ù. ÀÌÀüÀÇ RedHatÀ¸·ÎºÎÅÍ ¾÷±×·¹À̵å Çϼ̴ٸé, LinuxThreads¸¦ "rpm -e linuxthreads linuxthreads-devel"À¸·Î Á¦°ÅÇϼ¼¿ä. ±×¸®°í --with-thread¸¦ À§¿Í °°ÀÌ Àç¼³Á¤ÇϽʽÿÀ.


3.15. C++ Äڵ带 ´ã°í ÀÖ´Â °øÀ¯ ¶óÀ̺귯¸®¿Í ¸µÅ©ÇÒ ¶§ ¿¡·¯ ¹ß»ý.

ÇÙ½É ÆÄÀ̽ã ÀÌÁøÆÄÀÏÀ» C++°ú ¸µÅ©Çϼ¼¿ä. Modules/Makefile¿¡ ÀÖ´Â LINKCCÀÇ Á¤ÀǸ¦ ¿©·¯ºÐÀÇ C++ ÄÄÆÄÀÏ·¯°¡ µÇµµ·Ï º¯°æÇϼ¼¿ä. config.c¸¦ ¾à°£ º¯°æÇϼż­ C++°ú ȣȯµÇµµ·Ï ÆíÁýÇÒ ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù.


3.16. »èÁ¦µÊ **


3.17. »èÁ¦µÊ. *


3.18. _tkinter ¸ðµâ¿¡ ´ëÇÑ ÄÄÆÄÀÏ È¤Àº ¸µÅ© ¿¡·¯

°ÅÀÇ È®½ÇÈ÷, Tcl/Tk ¸Ó¸®ÆÄÀÏ (tcl.h and tk.h)°ú »ç¿ëÇÏ°í °è½Ã´Â Tcl/Tk ¶óÀ̺귯¸® »çÀÌ¿¡ ¹öÀü ºÒÀÏÄ¡°¡ ÀÖ½À´Ï´Ù. (¿¹. ¼³Á¤ÆÄÀÏ¿¡¼­ _tkinter¿¡ ´ëÇÑ "-ltk8.0"°ú"-ltcl8.0" Àμöµé). ¿©·¯ ¹öÀüÀÇ Tcl/Tk ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù, ±×·¯³ª ¿ÀÁ÷ ÇϳªÀÇ ¹öÀüÀ¸·Î µÈ tcl.h¿Í tk.h ¸Ó¸® ÆÄÀϸ¸ÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à ¶óÀ̺귯¸®°¡ ¸Ó¸®ºÎ¿¡ ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸é, ±× ¸ðµâÀ» ¿¬°áÇÒ ¶§³ª, ±×°ÍÀ» ¼öÀÔÇÒ ¶§, ¹®Á¦¿¡ ºÀÂøÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. ´ÙÇེ·´°Ôµµ, ¹öÀü ¹øÈ£´Â °¢ ÆÄÀÏ¿¡ ¸íÈ®ÇÏ°Ô ¸í½ÃµÇ¾î À־, ½±°Ô ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù. º¸ÅëÀº ÃÖ½ÅÀÇ ¹öÀüÀ» Àç ¼³Ä¡ÇϽðųª »ç¿ëÇϽøé ÀÌ ¹®Á¦´Â ÇØ°áµË´Ï´Ù.

(¶ÇÇÑ ÁÖÀÇÇÏ½Ç °ÍÀº ÆÐÄ¡µÇÁö ¾ÊÀº ÆÄÀ̽ã 1.5.1À» Tcl/Tk 7.6/4.2 ÀÌÀü¿¡ ´ëÇÏ¿© ÄÄÆÄÀÏ ÇϽøé, Tcl_Finalize¿¡ °üÇÑ ¿¡·¯¸¦ ¸ÂÀÌÇÕ´Ï´Ù. ´ÙÀ½ÀÇ 1.5.1 ÆÐÄ¡ ÆäÀÌÁö http://www.python.org/1.5/patches-1.5.1/¸¦ ÂüÁ¶Çϼ¼¿ä.)


3.19. Tcl/Tk¸¦ À§ÇØ ÆÄÀ̽ãÀ» ¼³Á¤ÇÏ°í ±¸ÃàÇÏ¿´Áö¸¸ "import Tkinter"°¡ ½ÇÆÐÇÕ´Ï´Ù.

ºÐ¸íÈ÷, ´ç½ÅÀº ´ÙÀ½ÀÇ ¶óÀÎÀ» ¼³Á¤ÇÏ´Â °ÍÀ» Àؾî¸Ô°í °è½Ç°Ì´Ï´Ù: "TKPATH=:$(DESTLIB)/tkinter".


3.20. Tk°¡ DEC Alpha¿¡¼­ Á¤È®ÇÏ°Ô µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.

¾Æ¸¶µµ Tcl, Tk ¶Ç´Â ÆÄÀ̽ãÀ» gcc·Î ÄÄÆÄÀÏ ÇϼÌÀ» °ÍÀÔ´Ï´Ù. ±×·¯Áö ¸¶¼¼¿ä. ÀÌ Ç÷§Æû¿¡ ´ëÇؼ­´Â, 64-ºñÆ® Á¤¼ö¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î, gcc°¡ ¸Á°¡Áø Äڵ带 »ý¼ºÇÑ´Ù°í ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù. Ç¥ÁØ cc (±× ¿î¿µÃ¼Á¦¿¡ ÇÔ²² µþ·Á¿É´Ï´Ù)°¡ ÀÛµ¿ÇÕ´Ï´Ù. ±×·¡µµ gcc¸¦ »ç¿ëÇÏ½Ã°í ½ÍÀ¸½Ã¸é, Àû¾îµµ ´º½º±×·ìÀ̳ª ÀúÀÚ¿¡°Ô ¹®Á¦¸¦ º¸°íÇϽñâ Àü¿¡ cc·Î ÀçÄÄÆÄÀÏÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù; ¸¸¾à ÀÌ°ÍÀ¸·Î ±× ¹®Á¦°¡ ÇØ°áµÇ¸é, ¹ö±×¸¦ ´ë½Å¿¡ gcc °³¹ßÀڵ鿡°Ô º¸°íÇϼ¼¿ä. (¿ì¸®°¡ ¾Ë°í ÀÖ´ÂÇÑ, ´Ù¸¥ Ç÷§Æû¿¡¼­´Â gcc¿¡ ¹®Á¦°¡ ¾ø´Ù°í ¾Ë°í ÀÖ½À´Ï´Ù -- ±× ºÒ¾ÈÁ¤¼ºÀº DEC Alpha¿¡¸¸ ÇÑÁ¤µÈ´Ù°í ÆǴܵ˴ϴÙ.) Áú¹® 3.6. ¿ª½Ã ÂüÁ¶¹Ù¶ø´Ï´Ù.

Tcl/Tk¸¦ À§ÇÑ 64-bit ¹ö±×¼öÁ¤ ¹öÀüÀÌ ÀÖ½À´Ï´Ù; ´ÙÀ½À» ÂüÁ¶Çϼ¼¿ä

	http://grail.cnri.reston.va.us/grail/info/patches/tk64bit.txt


3.21. ¾à°£ÀÇ ÀϹÝÀûÀÎ ½Ã½ºÅÛ È£ÃâÀ» Æ÷½Ä½º ¸ðµâ¿¡¼­ ¹ß°ßÇÒ ¼ö ¾ø½À´Ï´Ù.

°ÅÀÇ È®½ÇÈ÷, ¼³Á¤½ºÅ©¸³Æ®¿¡ ÀÇÇؼ­ ½ÇÇàµÇ´Â ¸ðµç Å×½ºÆ®¿ë ÄÄÆÄÀϹ°µéÀº ¾î¶² ÀÌÀ¯¿¡¼­ Àΰ¡ ½ÇÆÐÇÏ°í ÀÖ½À´Ï´Ù. config.log¸¦ º¸¼Å¼­ ±× ÀÌÀ¯°¡ µÊÁ÷ÇÑ °ÍÀ» ã¾Æ º¸¼¼¿ä. ÀϹÝÀûÀÎ ÀÌÀ¯´Â µð·ºÅ丮¸¦ --with-readline ¼±ÅûçÇ׿¡ ÁöÁ¤ÇÏ´Â °ÍÀε¥ ±× µð·ºÅ丮´Â libreadline.a ÆÄÀÏÀ» Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù.


3.22. À©µµ¿ì¿¡¼­, ImportError: No module named string.

ºÐ¸íÈ÷, PYTHONPATH ȯ°æ º¯¼ö°¡ ´ÙÀ½°ú °°Àº ¾î¶² °ÍÀ¸·Î ¼³Á¤µÇ¾î ÀÖÀ» °ÍÀÔ´Ï´Ù:

set PYTHONPATH=c:\python;c:\python\lib;c:\python\scripts

(ÆÄÀ̽ãÀÌ c:\python¿¡ ¼³Ä¡µÇ¾î ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù)


3.23. gl ¸ðµâÀ» »ç¿ëÇÒ ¶§ SGI¿¡ °üÇÏ¿© ÇÙ½ÉÄÚµå ´ýÇÁ.

termcap°ú curses¶óÀ̺귯¸®¿¡¼­ÀÇ ÀÔ±¸Á¡°ú GL ¶óÀ̺귯¸®ÀÇ ÀÔ±¸Á¡ »çÀÌ¿¡ Ãæµ¹ÀÌ ÀÖ½À´Ï´Ù. GNU readline ¶óÀ̺귯¸®¿¡ ÇÊ¿äÇÏ´Ù¸é, termcap ¶óÀ̺귯¸®¿¡ ´ëÇÏ¿©´Â ÇØÅ· ¼öÁØÀÇ ÇØ°áÃ¥ÀÌ ³ª¿Í ÀÖ½À´Ï´Ù, ±×·¯³ª curses¸¦ »ç¿ëÇÒ ¶§´Â ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. °á·ÐÀ» ¸»ÇÏÀÚ¸é, curses¿Í gl ¸ðµâ µÑ ´Ù¸¦ Æ÷ÇÔÇÏ´Â ÆÄÀ̽ã ÀÌÁø ÆÄÀÏÀ» ±¸ÃàÇÒ ¼ö´Â ¾ø½À´Ï´Ù.


3.24. À©µµ¿ì¿¡¼­ DLLÀ» ±¸ÃàÇÏ´Â µ¿¾È¿¡ "Initializer not a constant" ¿¡·¯ ¹ß»ý

È®Àå ¸ðµâ¿¡ ÀÖ´Â Á¤Àû ÇüÅÂÀÇ °´Ã¼ ÃʱâÈ­ÀÚ´Â "initializer not a constant"°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ °¡Áö°í ÄÄÆÄÀÏ ½ÇÆи¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·¹µå¸¯ ·éÆ®(Fredrik Lundh)¾¾°¡ <Fredrik.Lundh@image.combitech.se> ¼³¸íÇÕ´Ï´Ù:

ÀÌ°ÍÀº MSVC¾Æ·¡¿¡¼­ DLLÀ» ±¸ÃàÇÒ ¶§ ÀϾ´Ï´Ù. ÀÌ°Í¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀº µÎ°¡Áö°¡ ÀÖ½À´Ï´Ù: ±× ¸ðµâÀ» C++·Î ÄÄÆÄÀÏ Çϰųª, ȤÀº Äڵ带 ´ÙÀ½°ú °°ÀÌ º¯°æÇÏ´Â °ÍÀÔ´Ï´Ù:

  statichere PyTypeObject bstreamtype = {
      PyObject_HEAD_INIT(NULL) /* must be set by init function */
      0,
      "bstream",
      sizeof(bstreamobject),
  ...
  void
  initbstream()
  {
      /* Patch object type */
      bstreamtype.ob_type = &PyType_Type;
      Py_InitModule("bstream", functions);
      ...
  }


3.25. ÆÄÀÌÇÁ ȤÀº ÆÄÀÏ·Î ¹æÇâÀüȯµÈ Ãâ·ÂÀÌ ¸®´ª½º¿¡¼­ »ç¶óÁý´Ï´Ù.

¾î¶² »ç¶÷µéÀº ½ºÅ©¸³Æ®¸¦ »óÈ£´ëÈ­ÀûÀ¸·Î »ç¿ëÇÒ ¶§, ½ÇÇàÀº Àß µÇÁö¸¸, ÆÄÀÌÇÁ³ª ȤÀº ÆÄÀÏ·Î ¹æÇâ ÀüȯÇÏ°Ô µÇ¸é, ¾Æ¹«·± Ãâ·Âµµ ³ª¿ÀÁö ¾Ê´Â´Ù°í º¸°íÇÕ´Ï´Ù.

    % python script.py
    ...some output...
    % python script.py >file
    % cat file
    % # no output
    % python script.py | cat
    % # no output
    %
À̹«µµ ÀÌ°ÍÀÇ ¿øÀÎÀÌ ¹«¾ùÀÎÁö´Â ¸ð¸¨´Ï´Ù, ±×·¯³ª ¸®´ª½ºÀÇ ¹ö±×ÀÓÀº È®½ÇÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ¸®´ª½º »ç¿ëÀÚµéÀº ÀÌ°Í ¶§¹®¿¡ ¿µÇâÀ» ¹ÞÁö´Â ¾Ê½À´Ï´Ù.

Àû¾îµµ ÇÑ°³ÀÇ º¸°í°¡ ÀÖ´Ù¸é (´õ »õ·Î¿î ¹öÀüÀ¸·Î) ¸®´ª½º¿Í ÆÄÀ̽ãÀ» Àç ¼³Ä¡ÇÏ°í ÀÌ ¹®Á¦¸¦ Á¦°ÅÇß´Ù°í ÇÕ´Ï´Ù; ±×·¡¼­ ÀÌ°ÍÀÌ ¾Æ¸¶µµ ÇØ°áÃ¥ÀÌ ¾Æ´Ò±î ÇÕ´Ï´Ù.


3.26. libc 5.4¸¦ °¡Áø ¸®´ª½º¿¡¼­ ¸ðµç °÷¿¡¼­ ±¸¹® ¿¡·¯

``ÆÄÀ̽ã 1.4¸¦ ¸®´ª½º ½Ã½ºÅÛ¿¡ ¼³Ä¡ÇÏ¿´½À´Ï´Ù. ¼öÀÔ ¼­¼ú¹®À» ½ÇÇàÇÏ·Á°í ÇÒ ¶§ ´ÙÀ½°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸ÂÀÌÇÏ¿´½À´Ï´Ù:''

   File "<stdin>", line 1
       import sys
          ^
   Syntax Error: "invalid syntax"
±×°ÍÀ» ½º½º·Î ÄÄÆÄÀÏ ÇÏ¿´½À´Ï±î? ÀÌ°ÍÀº º¸Åë libc 5.4.x¿Í ÀÌÀüÀÇ libc »çÀÌÀÇ ºñȣȯ¼º ¶§¹®¿¡ ¾ß±âµË´Ï´Ù. ƯÈ÷³ª, libc 5.4¿Í ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥µéÀº libc 5.2°¡ ¼³Ä¡µÈ ½Ã½ºÅÛ¿¡¼­´Â ctype.h ÆÄÀÏÀÌ ±úÁ® Àֱ⠶§¹®¿¡ ºÎÁ¤È®ÇÑ °á°ú¸¦ »êÃâÇÕ´Ï´Ù. ÀÌ °æ¿ì¿¡´Â, ÆÄÀ̽ãÀÌ ¾î¶² ¹®ÀÚ°¡ ±âÈ£ÀÎÁö µîµîÀ» ÀνÄÇÒ ¼ö ¾ø½À´Ï´Ù. ÇØ°áÃ¥Àº, ¼³Ä¡µÈ ÀÌÁøÆÄÀÏÀ» ±¸ÃàÇÒ ¶§¿¡ »ç¿ëÇÑ C ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÏ´ø°¡, ¶Ç´Â ÆÄÀ̽ãÀ» ½º½º·Î ÄÄÆÄÀÏ ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇÒ ¶§¿¡, ÄÄÆÄÀÏ·¯°¡ »ç¿ëÇÑ C ¶óÀ̺귯¸® ¸Ó¸®ºÎ ÆÄÀÏ°ú ¼³Ä¡µÈ C ¶óÀ̺귯¸®°¡ ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎÇϼ¼¿ä.

[Martin v. LoewisÀÇ ´äº¯À¸·ÎºÎÅÍ Àοë]

Ãß°¡ [Andreas JungÀ¸·ÎºÎÅÍ Àοë]: libc 5.4.xÀ¸·Î ¾÷±×·¹À̵åÇÏ¿´°í, ±×·¡µµ ¹®Á¦°¡ Áö¼ÓµÇ¸é, ±¸Çü ¹öÀüÀÇ libc¸¦ À§ÇÑ ¶óÀ̺귯¸® °æ·Î¸¦ Á¡°ËÇϼ¼¿ä. °Å±â¿¡ ÀÖ´Â libs¿Í header ÆÄÀÏ·Î libc¸¦ ±ú²ýÇÏ°Ô °»½ÅÇϼ¼¿ä. ±×¸®°í ³ª¼­ ¸ðµÎ ´Ù ÀçÄÄÆÄÀÏÇϼ¼¿ä.


3.27. ¸®´ª½º¿¡¼­ Tkinter¸¦ »ç¿ëÇÒ ¶§ XIO¿¡¼­ Ãæµ¹

ÆÄÀ̽ãÀÌ ¸®´ª½º ¾Æ·¡¿¡¼­ ¾²·¹µå·Î ±¸ÃàµÉ ¶§, Tkinter¸¦ »ç¿ëÇÏ´Â °ÍÀº ´ÙÀ½°ú °°Àº Ãæµ¹À» ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù:

  >>> from Tkinter import *
  >>> root = Tk()
  XIO:  fatal IO error 0 (Unknown error) on X server ":0.0"
        after 45 requests (40 known processed) with 1 events remaining.
ÀÌÀ¯´Â ±âº» Xlib°¡ ¾²·¹µå¸¦ Áö¿øÇϵµ·Ï ±¸ÃàµÇÁö ¾Ê¾Ò±â ¶§¹®ÀÔ´Ï´Ù. Xlib¸¦ ¾²·¹µå°¡ °¡´ÉÇϵµ·Ï À籸ÃàÇÏ¸é ¹®Á¦°¡ »ç¶óÁý´Ï´Ù. ´ë¾ÈÀûÀ¸·Î, ÆÄÀ̽ãÀ» ¾²·¹µå ¾øÀÌ À籸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù (¸ÕÀú "make clean" Çϼ¼¿ä!).

(Disclaimer: this is from memory.)


3.28. Tkinter°¡ ÀÛµ¿ÇÏ´ÂÁö ¾î¶»°Ô Å×½ºÆ® ÇÒ ¼ö ÀÖ³ª¿ä?

´ÙÀ½°ú °°ÀÌ Çغ¸¼¼¿ä:

  python
  >>> import _tkinter
  >>> import Tkinter
  >>> Tkinter._test()
ÀÌ°ÍÀº Çϳª´Â "Click me" ±×¸®°í "Quit"¶ó´Â, µÎ °³ÀÇ ¹öÆ°À» °¡Áø À©µµ¿ì Çϳª¸¦ Æ˾÷½Ãŵ´Ï´Ù.

ù ¹ø° ¼­¼ú¹®(import _tkinter)ÀÌ ½ÇÆÐÇϸé, ¿©·¯ºÐÀÇ ÆÄÀ̽㠼³Ä¡°¡ ¾Æ¸¶µµ Tcl/Tk¸¦ Áö¿øÇϵµ·Ï ¼³Á¤µÇÁö ¾ÊÀº °ÍÀÔ´Ï´Ù. À¯´Ð½º¿¡¼­, Tcl/Tk¸¦ ¼³Ä¡ÇÏ¿´´Ù¸é, _tkinter ¸ðµâ°ú TKPATH ȯ°æ º¯¼ö¸¦ »ç¿ë°¡´ÉÇϵµ·Ï Modules/SetupÀ» ÆíÁýÇÑ ÈÄ¿¡ ÆÄÀ̽ãÀ» À籸ÃàÇÏ¿©¾ß ÇÕ´Ï´Ù.

Tcl/Tk ¹öÀü ¹øÈ£ ºÒÀÏÄ¡ ȤÀº TCL_LIBRARY¾øÀ½ ¶Ç´Â TK_LIBRARY ȯ°æ º¯¼öµé¿¡ °üÇÑ ºÒÆòµéÀ» ¸¸³ª°Ô µÉ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °ÍµéÀº Tcl/Tk ¼³Ä¡ ¹®Á¦¿Í °ü·ÃÀÌ ÀÖ½À´Ï´Ù.

ÈçÇÑ ¹®Á¦´Â ¼³Ä¡µÈ Tcl/Tk ¶óÀ̺귯¸®ÀÇ ¹öÀü°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â tcl.h¿Í tk.h ¹öÀüÀ» ¼³Ä¡ÇÏ´Â °ÍÀÔ´Ï´Ù; ÀÌ°ÍÀº º¸Åë ¿¬°áÀÚ ¿¡·¯¸¦ ¾ß±âÇϰųª ȤÀº (µ¿Àû ÀûÀ縦 »ç¿ëÇÒ ¶§) °øÀ¯ ¶óÀ̺귯¸®¸¦ ÀûÀçÇÏ´Â µ¿¾È¿¡ '½Éº¼ ¾øÀ½' ºÒÆòÀ¸·Î °á·ÐÁö¾îÁý´Ï´Ù.


3.29. ÆÄÀ̽ã ÀÎÅÍÇÁ¸®ÅÍÀÇ »óÈ£´ëÈ­ ¸ðµå¿¡¼­ ÇÔ¼ö/º¯¼ö À̸§ ¿Ï¼ºÀ» ¼öÇàÇϵµ·Ï ÇÒ ¹æ¹ýÀÌ ÀÖ³ª¿ä?

(±Íµµ ¹Ý ·Î¼¶ÀÇ ±Û¿¡¼­ Àοë)

À¯´Ð½º¿¡¼­, readline ¸ðµâÀ» °¡´ÉÇϵµ·Ï Çϼ̴ٸé (Áï. À̸ƽº-½ºÅ¸ÀÏÀÇ ¸í·É¾î ¶óÀÎ ÆíÁý°ú bash-½ºÅ¸ÀÏÀÇ ¸í·É±â¾ïÀÌ ÀÛµ¿ÇÑ´Ù¸é), ¹®¼­È­µÇÁö ¾ÊÀº Ç¥ÁØ ¶óÀ̺귯¸® ¸ðµâ "rlcompleter"¸¦ ¼öÀÔÇÔÀ¸·Î½á ÀÌ°ÍÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. °£´ÜÇÑ ½Äº°ÀÚ¸¦ ä¿ö ³ÖÀ¸¸é, __main__¿¡ ÀÖ´Â Å°¿öµå, ³»Àå ±×¸®°í Àü¿ªº¯¼öµéÀ» ä¿öÁÝ´Ï´Ù; NAME.NAME...À» ¿Ï¼ºÇÒ ¶§, ±× Ç¥Çö½ÄÀ» ¸¶Áö¸· Á¡±îÁö Æò°¡ÇÏ¿©(!) ±× ¼Ó¼ºµéÀ» ä¿ö³Ö½À´Ï´Ù.

ÀÌ·±½ÄÀ¸·Î, "import string"À», "string."À̶ó°í ŸÀÚÇÏ°í, ¿Ï¼º Å°¸¦ µÎ¹ø ´©¸£¸é, ±× ¹®ÀÚ¿­ ¸ðµâÀÌ Á¤ÀÇÇÑ À̸§µéÀÇ ¸ñ·ÏÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

ÆÁ: ÅÇ Å°¸¦ ¿Ï¼º Å°·Î »ç¿ëÇÏ·Á¸é, ´ÙÀ½°ú °°ÀÌ È£ÃâÇϼ¼¿ä

    readline.parse_and_bind("tab: complete")
ÀÌ°ÍÀ» ~/.pythonrc ÆÄÀÏ¿¡ ¹èÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç, PYTHONSTARTUP ȯ°æ º¯¼ö¸¦ ~/.pythonrc¿¡ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé ÆÄÀ̽ãÀ» »óÈ£´ëÈ­ÀûÀ¸·Î ½ÇÇàÇÒ ¶§¸¶´Ù ¿Ï¼º±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÉ °ÍÀÔ´Ï´Ù.

ÁÖÀÇ (´õ ÀÚ¼¼È÷ ¾Ë·Á¸é rlcompleter.py¸¦ À§ÇÑ ¹®¼­È­ ¹®ÀÚ¿­(docstring)À» ÂüÁ¶Çϼ¼¿ä):

* ¸¸¾à __getattr__ ³¬¾Æä±â¸¦ °¡Áö°í ÀÖ´Â °´Ã¼°¡ ¹ß°ßµÈ´Ù¸é NAME.NAME... ÇüŸ¦ Æò°¡ÇÏ´Â °ÍÀº ÀÓÀÇÀûÀÎ ¾îÇø®ÄÉÀ̼ÇÀ» ½ÇÇàµÇ¾î¾ß ÇÒ ÄÚµå·Î Á¤ÀÇÇÏ¿© ¹ö¸± ¼öµµ ÀÖ½À´Ï´Ù. ¿Ö³ÄÇϸé ÀÌ »ç¾çÀ» °¡´ÉÇÏ°Ô ÇÏ´Â °ÍÀº ¾îÇø®ÄÉÀÌ¼Ç (ȤÀº »ç¿ëÀÚ)ÀÇ Ã¥ÀÓÀ̱⠶§¹®Àε¥, ÀÌ°ÍÀº Çã¿ëÇÒ ¸¸ÇÑ À§ÇèÀ̶ó°í »ý°¢ÇÕ´Ï´Ù. ´õ¿í º¹ÀâÇÑ Ç¥Çö½Ä (¿¹¸¦µé¾î, ÇÔ¼ö È£ÃâÀ̳ª ¿¬»êÀ» ÁöǥȭÇÏ´Â °Íµé)Àº Æò°¡µÇÁö ¾Ê½À´Ï´Ù.

* GNU readline´Â ¶ÇÇÑ ³»Àå ÇÔ¼ö input()°ú raw_input()¿¡ ÀÇÇؼ­ »ç¿ëµË´Ï´Ù, ±×¸®ÇÏ¿© À̰͵éÀº ¶ÇÇÑ ±× ¿Ï¼º»ç¿ë ¶§¹®¿¡ ÇýÅÃÀ» ¹Þ±âµµ/°íÅëÀ» ¹Þ±âµµ ÇÕ´Ï´Ù. ºÐ¸íÈ÷ »óÈ£´ëÈ­ÀûÀÎ ¾îÇø®ÄÉÀ̼ÇÀº ÀڽŸ¸ÀÇ ¿Ï¼º ±â´ÉÀ» ÁöÁ¤ÇÏ°í ¸ðµç ÀԷ¿¡ ´ëÇÏ¿© raw_input()À» »ç¿ëÇÔÀ¸·Î½á ÇýÅÃÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

* Ç¥ÁØÀÔ·ÂÀÌ tty ÀåÄ¡°¡ ¾Æ´Ï¶ó¸é, GNU readlineÀº Àý´ë·Î »ç¿ëµÇÁö ¾Ê½À´Ï´Ù, ±×¸®°í ÀÌ ¸ðµâÀº (±×¸®°í readline ¸ðµâ)Àº Á¶¿ëÇÏ°Ô ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.


3.30. ¿Ö ÆÄÀ̽ã ÀÎÅÍÇÁ¸®ÅÍ´Â °øÀ¯ ¶óÀ̺귯¸®Ã³·³ ±¸ÃàµÇÁö ¾Ê¾Ò³ª¿ä? *

(ÀÌ°ÍÀº À¯´Ð½ºÀÇ ¹®Á¦ÀÔ´Ï´Ù; ¸Æ°ú À©µµ¿ì¿¡¼­, ±×°ÍÀº °øÀ¯ ¶óÀ̺귯¸®ÀÔ´Ï´Ù.)

ÀÌ°ÍÀ» ´Ù¸¥ ¸ðµç Ç÷§Æû¿¡¼­ ÀÛµ¿Çϵµ·Ï ÇÏ´Â °ÍÀº Á¤¸» ¾Ç¸ùÀÔ´Ï´Ù. °øÀ¯ ¶óÀ̺귯¸®ÀÇ À̽ļºÀº °íÅëÀÔ´Ï´Ù. ³× ¹°·Ð, GNUÀÇ libtool¿¡ °üÇÏ¿© ¾Ë°í ÀÖ½À´Ï´Ù -- ±×·¯³ª ±×°ÍÀº ÆÄÀÏ À̸§ÀÇ °ü·Ê µîµîÀ» »ç¿ëÇϱ⸦ ¿ä±¸ÇÏ°í, Áö±Ý »ç¿ëÇÏ°í ÀÖ´Â ¸ðµç makefile°ú ¼³Á¤µµ±¸µéÀ» ¿ÏÀüÇÏ°Ô ±×¸®°í öÀúÇÏ°Ô ÀçÀÛ¼º Çϵµ·Ï ¿ä±¸ÇÒ °ÍÀÔ´Ï´Ù.

½ÇÁ¦ÀûÀ¸·Î, ÆÄÀ̽ãÀ» ³»ÀåÇÑ ¾îÇø®ÄÉÀ̼ÇÀº ¾ø½À´Ï´Ù -- ´õ¿í ´õ ÀϹÝÀûÀÎ °ÍÀº ÆÄÀ̽ã È®ÀåÀ» º¸À¯ÇÏ´Â °ÍÀÌ°í, ÀÌ¹Ì °øÀ¯ ¶óÀ̺귯¸®ÀÔ´Ï´Ù. ¶ÇÇÑ, ¾ö°ÝÇÑ ³»ÀåÀÚµéÀº ¶§¶§·Î ±×µéÀÌ »ç¿ëÇÏ°í ÀÖ´Â ÆÄÀ̽㠹öÀü°ú ¼³Á¤¿¡ °üÇÏ¿© ÀüÀûÀÎ ÅëÁ¦¸¦ ¿øÇÕ´Ï´Ù. ±×·¡¼­ ¾î¶µç Ç¥ÁØ °øÀ¯ ¶óÀ̺귯¸®¸¦ »ç¿ëÇϱ⸦ ¿øÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ±×·¡¼­ ¸¹Àº ¾îÇÃÀÌ ÆÄÀ̽ãÀ» ³»ÀåÇÒ ¶§ °ø°£À» Àý¾àÇÑ´Ù´Â µ¿±â°¡ ÀÌ·ÐÀûÀ¸·Î´Â ÁÁÁö¸¸, ½ÇÁ¦ÀûÀ¸·Î ±× ¸¸Å­ ¸¹ÀÌ Àý¾àÇØ ÁÙÁö´Â Àǹ®ÀÔ´Ï´Ù. (±×·¯¹Ç·Î Àú´Â °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸¸µå´Â °Í¿¡ Á߿伺À» µÎÁö ¾Ê½À´Ï´Ù.)

¸®´ª½º ½Ã½ºÅÛÀ» À§Çؼ­´Â, libpython1.5.so¸¦ ¸¸µå´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù (Ãâó´Â Minotaur ÇÁ·ÎÁ§Æ® À¥ÆäÀÌÁö http://www.equi4.com/minotaur/minotaur.html ÀÔ´Ï´Ù.):

  make distclean
  ./configure
  make OPT="-fpic -O2"
  mkdir .extract
  (cd .extract; ar xv ../libpython1.5.a)
  gcc -shared -o libpython1.5.so .extract/*.o
  rm -rf .extract


3.31. GCC·Î Solaris 2.6 (SunOS 5.6)¿¡¼­ ±¸ÃàÇÒ ¼ö ¾ø½À´Ï´Ù

Solaris 2.5¶Ç´Â 2.5.1¿¡¼­ Solaris 2.6À¸·Î ¾÷±×·¹À̵å Çϼ̴µ¥, GCC ¼³Ä¡¸¦ ¾÷±×·¹À̵å ÇÏÁö ¾ÊÀ¸¼Ì´Ù¸é, ÄÄÆÄÀÏÀº ¿¹¸¦µé¾î, ´ÙÀ½°ú °°ÀÌ ½ÇÆÐÇÒ °ÍÀÔ´Ï´Ù:

 In file included from /usr/include/sys/stream.h:26,
                  from /usr/include/netinet/in.h:38,
                  from /usr/include/netdb.h:96,
                  from ./socketmodule.c:121:
 /usr/include/sys/model.h:32: #error "No DATAMODEL_NATIVE specified"
ÇØ°áÃ¥: GCC¸¦ Solaris 2.6¿ëÀ¸·Î ±¸ÃàÇϼ¼¿ä. ´Ü¼øÈ÷ fixincludes¸¦ Àç½ÇÇà ÇÒ ¼öµµ ÀÖ°ÚÁö¸¸, »ç¶÷µéÀº ±×·¸°Ô ÇÏ´Â °ÍÀ» ¼º°øÇÑ °ÍÀ¸·Î Âø°¢ÇÕ´Ï´Ù.


3.32. "make clean"À» ½ÇÇàÇϸé ÀÕ´ÞÀ¸´Â ±¸ÃàÀ» ½ÇÆÐÇÏ°Ô ÇÏ´Â ¹®Á¦ÀÖ´Â ÆÄÀϵéÀÌ ³²´Â °Í °°½À´Ï´Ù.

´ë½Å¿¡ "make clobber"¸¦ »ç¿ëÇϼ¼¿ä.

±â»Û¸¶À½À¸·Î ±¸ÃàÇÏ°í ¼³Á¤ÇÑ ÈÄ¿¡ "make clean"À» »ç¿ëÇÏ¿© source/build µð·ºÅ丮ÀÇ Å©±â¸¦ ÁÙÀ̼¼¿ä. ÀÌ¹Ì ÆÄÀ̽ãÀ» ±¸ÃàÇϱ⸦ ½ÃµµÇØ º¸¾Ò°í ´Ù½Ã ½ÃÀÛÇÏ°íÀÚ ÇÑ´Ù¸é, "make clobber"¸¦ »ç¿ëÇÏ¿©¾ß¸¸ ÇÕ´Ï´Ù. ±×°ÍÀº "make clean"À» ÇÏ¿©ÁÖ°í ¶ÇÇÑ ÀÌÀüÀÇ ±¸ÃàÀ¸·ÎºÎÅÍ ºÎºÐÀûÀ¸·Î ±¸ÃàµÈ ÆÄÀ̽㠶óÀ̺귯¸®¿Í °°Àº ÆÄÀϵéÀ» Á¦°ÅÇÕ´Ï´Ù.


3.33. ¹ö±× º¸°í¿Í ÆÐÄ¡¸¦ Á¦ÃâÇϱâ

¹ö±× º¸°í ȤÀº ÆÐÄ¡¸¦ Á¦ÃâÇϱâ À§Çؼ­´Â, ¼Ò½º Æ÷ÁöÀÇ ÆÄÀ̽ã ÇÁ·ÎÁ§Æ®¿¡¼­ Á¦°øÇÏ´Â ÀûÀýÇÑ ¼­ºñ½º¸¦ ÀÌ¿ëÇÏ½Ã±æ ¹Ù¶ø´Ï´Ù.

¹ö±×: http://sourceforge.net/tracker/?group_id=5470&atid=105470

ÆÐÄ¡: http://sourceforge.net/tracker/?group_id=5470&atid=305470

¼Ò½ºÆ÷Áö¿¡ °èÁ¤À» °¡Áö°í °è½Ã´Ù¸é, ¹ö±× º¸°í¸¦ Á¦ÃâÇϽñâ Àü¿¡ ¸ÕÀú ·Î±×ÀÎ ÇÏ½Ã±æ ¹Ù¶ø´Ï´Ù; ÀÌ·¸°Ô ÇÏ½Ã¸é µÚ-µû¸£´Â ¹®Á¦µéÀÌ ¹ß»ýÇÏ¿´À» ¶§ ¿ì¸®°¡ ¿©·¯ºÐÀÇ º¸°í¿¡ °üÇÏ¿© ´õ ½±°Ô ¿©·¯ºÐ¿¡°Ô Á¢±ÙÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¶ÇÇÑ ¿©·¯ºÐÀÇ ¹ö±×¿¡ °üÇÑ ÀÛ¾÷°ú µ¿½Ã¿¡ ¼Ò½ºÆ÷Áö°¡ °»½Å»çÇ×À» ¿©·¯ºÐ¿¡°Ô º¸³»ÁÙ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¼Ò½ºÆ÷Áö¿¡ °èÁ¤ÀÌ ¾øÀ¸½Ã´Ù¸é, ¿©·¯ºÐÀÇ À̸§°ú ÀüÀÚ¿ìÆí ÁÖ¼Ò¸¦ º¸°í¼­ÀÇ ÇÑ ºÎºÐ¿¡ ³²°ÜÁÖ½Ã±æ ºÎŹµå¸³´Ï´Ù.


3.34. ÆÄÀ̽ã 1.5.2, ¼Ö¶ó¸®½º 7, ±×¸®°í gcc 2.95.2¾Æ·¡¿¡¼­ °øÀ¯ ¶óÀ̺귯¸®¸¦ ÀûÀçÇÒ ¼ö ¾ø½À´Ï´Ù

°øÀ¯ ¶óÀ̺귯¸®¸¦ ÀûÀçÇÏ·Á ÇÒ ¶§, ´ÙÀ½°ú °°Àº ¿¡·¯¸¦ º¼ °Ì´Ï´Ù: ImportError: ld.so.1: python: fatal: relocation error: file/usr/local/lib/python1.5/site-packages/Perp/util/du_SweepUtilc.so:
 symbol PyExc_RuntimeError: referenced symbol not found

ÆÄÀ̽ã 1.5.2, ¼Ö¶ó¸®½º 7, ±×¸®°í gcc 2.95.2¾Æ·¡¿¡¼­ ȯ°æ¼³Á¤ ½ºÅ©¸³Æ®¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. ȯ°æ¼³Á¤Àº make º¯¼ö¿¡ LINKFORSHARED=-Xlinker-export-dynamicÀ¸·Î ¼³Á¤µÇ¾î¾ß Çϴµ¥.

Modules/Makefile¿¡¼­,

¼öµ¿À¸·Î ÀÌ ¶óÀÎÀ» Modules/Makefile¿¡ »ðÀÔÇϼ¼¿ä. ÀÌ°ÍÀ¸·Î ÆÄÀ̽ãÀÌ °øÀ¯ ¶óÀ̺귯¸® È®ÀåÀ» ÀûÀçÇϵµ·Ï ±¸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù (xxx.so).


3.35. ȸ±Í Å×½ºÆ®¿¡¼­, test___all__ÀÌ ¼º´ÉÃÖÀûÈ­ ¸ðµâ¿¡¼­ ½ÇÆÐÇÕ´Ï´Ù. ¹«¾ùÀÌ ¹®Á¦Àΰ¡¿ä?

±× ¼º´ÉÃÖÀûÈ­ ¸ðµâÀ» »ç¿ëÇÏ°í, ¾Æ·¡ÀÇ ¼º´ÉÃÖÀûÈ­±â ¹®¼­¿¡ ¼³¸íµÈ´ë·Î ±× ¸ðµâÀÇ º¹»çº»À» ÀûÀýÇÏ°Ô ÃøÁ¤Çϼ̴ٸé:

current/lib/profile-calibration.html

±×·¯¸é ±× ȸ±Í Å×½ºÆ® "test___all__"Àº ÆÄÀ̽ãÀÇ ¼Ò½º µð·ºÅ丮¿¡¼­ "make test"¸¦ »ç¿ëÇÏÁö ¾Ê°í ¼öµ¿À¸·Î ±× ȸ±Í Å×½ºÆ®¸¦ ½ÇÇàÇÏ¿´À½¿¡µµ ºÒ±¸ÇÏ°í ½ÇÆÐÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÀÏÀº ÃøÁ¤µÉ ¼º´ÉÃÖÀûÈ­ ¸ðµâÀ» ´ã°í ÀÖ´Â µð·ºÅ丮¸¦ Æ÷ÇÔÇϵµ·Ï PYTHONPATH ȯ°æº¯¼ö¸¦ ¼³Á¤ÇÏ°Ô µÇ¸é ÀϾ´Ï´Ù. ¾Æ¸¶µµ ±× ¼º´ÉÃÖÀûÈ­±â¸¦ ±¸Çü ¹öÀüÀÇ ÇÁ·ÎÆÄÀÏ ¸ðµâÀ» »ç¿ëÇÏ¿© ÃøÁ¤ÇϼÌÀ» ÅÙµ¥, ±× ¸ðµâ¿¡´Â __all__ °ªÀÌ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸ç, ÆÄÀ̽ã 2.1. ¹öÀüºÎ·Î Ãß°¡µÇ¾ú½À´Ï´Ù.

±× ¹®Á¦´Â ÇØ°áµÉ ¼ö Àִµ¥ ±× ±¸Çü ¼º´ÉÃÖÀûÈ­ ÃøÁ¤ ¸ðµâÀ» Á¦°ÅÇÏ°í ÃÖ±ÙÀÇ ¹öÀüÀ» »ç¿ëÇϼż­ »õ·ÎÀÌ ÃøÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î, ÆÄÀ̽ãÀÇ °¢ ¹öÀü¿¡ ´ëÇÏ¿© Àç-ÃøÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖÀ¾´Ï´Ù, ¿Ö³ÄÇÏ¸é ¼º´ÉÀÇ Æ¯Â¡Àº ¼º´ÉÃÖÀûÈ­¿¡ ¿µÇâÀ» ÁÖ°ÔµÇ¸é ¹Ì¹¦ÇÏ°Ô º¯°æµÉ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.


¾ÕÀ¸·Î    ¸ñÂ÷    1    2    Á¦3Àå    4    5    6    7    8    ´ÙÀ½À¸·Î