· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Software-Building-HOWTO

¸®´ª½º¿ë ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇÏ°í ÀνºÅçÇϱâ

¸®´ª½º¿ë ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇÏ°í ÀνºÅçÇϱâ

Mendel Cooper --- http://personal.riverusers.com/~thegrendel/

v1.91, 27 July 1999 ¹ø¿ª: ¹Ú¹Î¼® mpark@hrl.hitachi.co.jp
ÀÌ ±ÛÀº ¸®´ª½º¿¡¼­ "ÀϹÝÀûÀÎ" À¯´Ð½º ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷º»À» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ¾È³»¼­ÀÌ´Ù. ¾Æ¿ï·¯ "rpm"°ú "deb" Çü½ÄÀ¸·Î ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ®µé¿¡ ´ëÇؼ­µµ Á¶±Ý ´Ù·é´Ù.

1. µµÀÔ

À¯´Ð½º¿Í ¸®´ª½º¿ëÀÇ ¸¹Àº ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö°¡ ¾ÐÃàµÈ ¼Ò½º ÆÄÀÏ »óÅ·Π¹èÆ÷µÈ´Ù. ¶È°°Àº ÆÐÅ°Áö°¡ ¼­·Î ´Ù¸¥ Á¾·ùÀÇ ÄÄÇ»ÅÍ¿¡¼­ µ¹¾Æ°¡µµ·Ï ÄÄÆÄÀ쵃 ¼ö ÀÖ°í, µû¶ó¼­ ¼ÒÇÁÆ®¿þ¾î Á¦ÀÛÀÚ´Â ¿©·¯ ¹öÁ¯À» ¸¸µå´Â ¼ö°í¸¦ ´ú ¼ö ÀÖ´Ù. ÀÌ·¸°Ô Çؼ­, ÇÑ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°ÁöÀÇ ¹èÆ÷º»ÀÌ ÀÎÅÚÀ» ºñ·ÔÇØ DECÀÇ ¾ËÆÄ, RISC ¿öÅ©½ºÅ×À̼ǿ¡¼­ ¸ÞÀÎ ÇÁ·¹ÀÓ¿¡ À̸£´Â ÄÄÇ»ÅÍ¿¡¼­ ÄÄÆÄÀÏµÇ°í »ç¿ëµÈ´Ù. ÇÏÁö¸¸ ºÒÇàÇÏ°Ôµµ ÀÌ·± ¹æ½Ä¿¡¼­´Â »ç¿ëÀÚ -- ¹Ù·Î ´ç½Å -- ¿¡°Ô ¼ÒÇÁÆ®¿þ¾î¸¦ ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÒ Ã¥ÀÓÀ» Á®¾ß ÇÑ´Ù. ÇÏÁö¸¸, ÀÌ °úÁ¤À» ÀÌÇØÇÏ´Â °ÍÀº º¸±âº¸´Ù ¾î·Æ°Å³ª ½Åºñ·Î¿î ÀÏÀÌ ¾Æ´Ï´Ù. ÀÌ ¾È³»¼­°¡ º¸¿©ÁÖµíÀÌ ¸»ÀÌ´Ù.

2. ÆÄÀÏÀ» Ç®±â

´ç½ÅÀº ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ´Ù¿î¹Þ´Â µîÀÇ ¹æ¹ýÀ¸·Î ±¸Çß´Ù. ´ë°³ ±× ÆÐÅ°Áö´Â .tar.gz À̳ª .tgz À̶ó´Â ÇüÅ·ΠÇÑ ÆÄÀÏ·Î ¸ð¾Æ¼­(tarred) ¾ÐÃàÇÑ(gzipped) °ÍÀÌ´Ù. (ÈçÈ÷ "tarball"À̶ó°í ¾Ë·ÁÁ®ÀÖ´Ù) ¿ì¼± ÀÌ ÆÄÀÏÀ» Àû´çÇÑ ÀÛ¾÷ µð·ºÅ͸®·Î º¹»çÇÑ´Ù. ´ÙÀ½¿£ ¾ÐÃàÀ» Ç®°í(gunzip) ¿ø·¡ÀÇ ¿©·¯ ÆÄÀÏ·Î Ç®¾î³õ´Â´Ù(untar). tar xzvf ÆÄÀÏÀ̸§ À̶ó°í ÇÏ¸é µÈ´Ù. ¹°·Ð ÆÄÀÏÀ̸§ À̶õ ¼ÒÇÁÆ®¿þ¾î ÆÄÀÏÀÇ À̸§ÀÌ´Ù. tar¸¦ Ç®¸é º¸Åë ÇÏÀ§ µð·ºÅ͸®µéÀ» ¸¸µé°í °Å±â¿¡ Àû´çÈ÷ ÆÄÀϵéÀ» ¼³Ä¡ÇÑ´Ù. Ȥ½Ã ÆÐÅ°Áö ÆÄÀÏÀÇ È®ÀåÀÚ°¡ .Z ¶ó°í Çصµ À§ÀÇ ¹æ¹ýÀ» ¾µ ¼ö ÀÖ´Ù. uncompress¸¦ ¼öÇàÇÑ ´ÙÀ½ tar xvf ¶ó°í Çصµ µÈ´Ù. tar tzvf ÆÄÀÏÀ̸§À̶ó°í Çϸé ÀÌ °úÁ¤À» ¹Ì¸® º¼ ¼ö ÀÖ´Ù. ÀÌ ¸í·ÉÀº ½ÇÁ¦·Î ¾ÐÃàÀ» ÇØÁ¦Çϰųª ÇÏÁö´Â ¾Ê°í ÆÐÅ°Áö ¾ÈÀÇ ÆÄÀÏ ¸ñ·ÏÀ» º¸¿©ÁØ´Ù.

"tarball"À» Ç®¾î³»´Â À§ ¹æ¹ýÀº ´ÙÀ½ÀÇ µÎ °¡Áö¿Í µ¿µîÇÏ´Ù.

  • gzip -cd filename | tar xvf -
  • gunzip -c filename | tar xvf -
('-'´Â tar ¸í·ÉÀÇ ÀÔ·ÂÀ» Ç¥ÁØÀÔ·ÂÀ¸·ÎºÎÅÍ ÀÐ°Ô ÇÑ´Ù.)

»õ·Î¿î bzip2(.bz2) Çü½ÄÀÇ ¼Ò½º ÆÄÀÏÀº bzip2 -cd ÆÄÀÏÀ̸§ | tar xvf - ·Î Ç® ¼ö ÀÖ´Ù. ¶Ç tar¿¡ ÀûÀýÇÑ ÆÐÄ¡¸¦ Çß´Ù¸é (ÀÚ¼¼ÇÑ °ÍÀº Bzip2 HOWTO ¸¦ Âü°í) °£´ÜÈ÷ tar xyvf ÆÄÀÏÀ̸§ À̶ó´Â ¸í·ÉÀ¸·Î ÇÒ ¼öµµ ÀÖ´Ù. µ¥ºñ¾È ¸®´ª½º´Â È÷·Î½Ã ´ÙÄÉÄ«¿Í°¡ ¸¸µç ´Ù¸¥ tar ÆÐÄ¡¸¦ ¾²¹Ç·Î -I, --bzip2, --bunzip2 °°Àº ¿É¼ÇÀ» »ç¿ëÇÑ´Ù.

[ À§ Á¤º¸¸¦ Á¤Á¤ÇÏ°í ¾÷µ¥ÀÌÆ®Çϵµ·Ï ÇØÁØ °Í¿¡ ´ëÇØ R. Lynn°ú Fabrizio Stefani¿¡°Ô °¨»çÇÑ´Ù.]

ÆÐÅ°ÁöÀÇ ¼³Á¤ Á¤º¸¿¡ ÁöÁ¤µÈ °Í ¶§¹®¿¡, ¾î¶² ¶§´Â ¾ÐÃàµÈ ÆÄÀÏÀ» »ç¿ëÀÚÀÇ È¨ µð·ºÅ͸®³ª /, /usr/src, /opt µîÀÇ ´Ù¸¥ µð·ºÅ͸®¿¡ Ç®¾î ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ¾ÐÃàÀ» Ç® ¶§(untar) ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª¿Â´Ù¸é, ÀÌ µð·ºÅ͸® ÁöÁ¤ ¶§¹®ÀÏ ¼ö ÀÖ´Ù. ÆÐÅ°ÁöÀÇ ¹®¼­ ÆÄÀÏ, ƯÈ÷ README¿Í Ȥ½Ã ÀÖ´Ù¸é INSTALL ÆÄÀÏÀ» ÀÐ¾î º¸¶ó. ±×¸®°í ¼³Ä¡ ¿ä·É¿¡ ¸Â°Ô config ÆÄÀÏ°ú MakefileµéÀ» ÇÊ¿ä¿¡ µû¶ó °íÄ¡µµ·Ï ÇÏÀÚ. Imake ÆÄÀÏÀº ´ë°³ °Çµå·Á¼­´Â ¾ÈµÈ´Ù´Â Á¡¿¡ ÁÖÀÇÇ϶ó. °ÑÀ¸·Î µå·¯³ªÁö ¾Ê´Â °á°ú¸¦ °¡Áö°í ÀÖÀ» ¼ö Àֱ⠶§¹®ÀÌ´Ù. ´ëºÎºÐÀÇ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö´Â make install À» ¼öÇàÇÏ¸é ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» ½Ã½ºÅÛÀÇ ÀûÀýÇÑ ÀÚ¸®¿¡ °®´ÙµÎµµ·Ï ÇÏ¿© ¼³Ä¡ µð·ºÅ͸® ¹®Á¦¸¦ ÀÚµ¿ÀûÀ¸·Î ó¸®ÇÑ´Ù.

  • ÀÎÅͳÝÀÇ ´º½º±×·ì °°Àº °÷¿¡¼­´Â shar ÆÄÀÏÀ̳ª shell archive ÇüÅÂÀÇ ¼Ò½ºÆÄÀϵéÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ Çü½ÄµéÀº »ç¶÷ÀÌ ÀÐÀ» ¼ö ÀÖ´Ù´Â Á¡ ¶§¹®¿¡ »ç¿ëµÇ°í ÀÖ´Ù. ´º½º±×·ìÀÇ °ü¸®ÀÚ°¡ ¼Ò½ºÆÄÀÏÀ» Àаí Á¤¸®Çϰųª, ºÎÀûÀýÇÑ °ÍÀÏ °æ¿ì¿¡´Â »èÁ¦ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀÌ Çü½ÄÀº unshar ÆÄÀÏÀ̸§.shar ¸í·ÉÀ¸·Î Ç®¾î¾ß ÇÑ´Ù. ´Ù¸¥ °ÍÀº "tarball"°ú °°´Ù.

  • ¾î¶² ¼Ò½º ÆÄÀϵéÀº zip, arc, lha, arj, zoo, rar, shk¿Í °°ÀÌ DOS, Mac, Amiga ÀÇ ºñÇ¥ÁØÀûÀÎ ¾ÐÃà À¯Æ¿¸®Æ¼·Î 󸮵Ǿî ÀÖ´Ù. ´ÙÇàÈ÷ ÀÌµé ´ëºÎºÐÀ» ó¸®ÇÒ ¼ö ÀÖ´Â ¸®´ª½º¿ë À¯Æ¿¸®Æ¼°¡ sunsite µî¿¡ ÀÖ´Ù.

¶§·Î´Â Ç®¾î³õÀº ¼Ò½º ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®Çϰųª ¹ö±× ¼öÁ¤»çÇ×À» Àû¿ëÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ·² ¶§´Â º¯°æ »çÇ×À» ³ª¿­ÇÑ patch³ª diff ÆÄÀÏÀ» »ç¿ëÇÑ´Ù. ÀÌ°ÍÀº README³ª ±âŸ ¹®¼­¸¦ ÅëÇØ ¾Ë ¼ö ÀÖ´Ù. Larry WallÀÇ ¸·°­ÇÑ À¯Æ¿¸®Æ¼ patch¸¦ »ç¿ëÇÏ´Â º¸Åë ¹æ¹ýÀº patch < patchfile ÀÌ´Ù.

ÀÌÁ¦´Â ¼³Ä¡ °úÁ¤ °¡¿îµ¥ ÄÄÆÄÀÏ ´Ü°è·Î ³Ñ¾î°¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

3. make ¾²±â

MakefileÀº ÄÄÆÄÀÏ °úÁ¤ÀÇ ¿­¼è´Ù. °¡Àå °£´ÜÇÑ ÇüÅ·Πº¸¸é, MakefileÀº ÆÐÅ°ÁöÀÇ ½ÇÇà °¡´ÉÇÑ ºÎºÐÀÎ "¹ÙÀ̳ʸ® ÆÄÀÏ"À» ÄÄÆÄÀÏÇϱâ À§ÇÑ ÇϳªÀÇ ½ºÅ©¸³Æ®´Ù. MakefileÀº ¼Ò½º ÆÄÀÏÀ» ¸ðµÎ ´Ù½Ã ÄÄÆÄÀÏÇÏÁö ¾Ê°í ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ °»½ÅÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÒ ¼öµµ ÀÖÁö¸¸, ±×°ÍÀº ¶Ç ´Ù¸¥ À̾߱â(ȤÀº ¶Ç ´Ù¸¥ ±Û)ÀÌ´Ù.

¾î´À ½ÃÁ¡¿¡ MakefileÀº cc³ª gcc¸¦ ½ÇÇà½ÃŲ´Ù. cc³ª gcc´Â »ç½ÇÀº ¼ø¼­¿¡ µû¶ó È£ÃâµÈ Àü󸮱â¿Í C(ȤÀº C++) ÄÄÆÄÀÏ·¯, ¸µÄ¿ÀÇ ÁýÇÕÀÌ´Ù. ÀÌ °úÁ¤À» ÅëÇØ ¼Ò½º´Â ½ÇÁ¦·Î ½ÇÇà½Ãų ¼ö ÀÖ´Â ¹ÙÀ̳ʸ®·Î º¯È¯µÈ´Ù.

´ë°³ make ¶ó°í Ä¡±â¸¸ Çϸé make¸¦ ½ÃÀÛÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô Çϸé ÀϹÝÀûÀ¸·Î ¼³Ä¡ÇÏ·Á°í ÇÏ´Â ÆÐÅ°Áö¿¡ ÇÊ¿äÇÑ ¸ðµç ½ÇÇà ÆÄÀϵéÀ» ÄÄÆÄÀÏÇÑ´Ù. ÇÏÁö¸¸ make´Â ÆÄÀϵéÀ» Àû´çÇÑ µð·ºÅ͸®¿¡ ¼³Ä¡ÇѴٰųª (make install), ¹¬Àº object ÆÄÀÏÀ» »èÁ¦ÇÏ´Â µî(make clean), ´Ù¸¥ ÀÛ¾÷µéµµ ÇÒ ¼ö ÀÖ´Ù. make -n À̶ó°í Çϸé make¿¡ ÀÇÇØ ¼öÇàµÉ ¸ðµç ¸í·ÉµéÀ» ½ÇÇàÇÏÁö´Â ¾Ê°í º¸¿©Áֱ⸸ ÇϹǷΠÄÄÆÄÀÏ °úÁ¤À» ¹Ì¸® º¼ ¼ö ÀÖ´Ù.

ÀϹÝÀûÀÎ MakefileÀ» ¾²´Â °ÍÀº ¸Å¿ì °£´ÜÇÑ ¼ÒÇÁÆ®¿þ¾î »ÓÀÌ´Ù. Á»´õ º¹ÀâÇÑ ¼³Ä¡ °úÁ¤¿¡´Â ¶óÀ̺귯¸®¿Í include ÆÄÀϵéÀÇ À§Ä¡, °³º° ÄÄÇ»ÅÍÀÇ ÀÚ¿ø µî¿¡ µû¶ó MakefileÀ» ¸ÂÃâ ÇÊ¿ä°¡ ÀÖ´Ù. ƯÈ÷ ÄÄÆÄÀÏ¿¡ X11 ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÒ °æ¿ì°¡ ÀÌ¿¡ ÇØ´çµÈ´Ù. ÀÌ ÀÛ¾÷Àº Imake¿Í xmkmf°¡ ó¸®ÇÑ´Ù.

man ÆäÀÌÁö¿¡¼­´Â ImakefileÀº MakefileÀÇ "ÅÛÇø´"À̶ó ÇÏ°í ÀÖ´Ù. imake À¯Æ¿¸®Æ¼´Â Imakefile·ÎºÎÅÍ ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ¸Â´Â MakefileÀ» ±¸¼ºÇÑ´Ù. ÇÏÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì ´ç½ÅÀº imake À¯Æ¿¸®Æ¼ÀÇ ÇÁ·±Æ® ¿£µå(front end)·Î¼­ imake¸¦ ºÒ·¯³»´Â ½© ½ºÅ©¸³Æ®ÀÎ xmkmf¸¦ ¼öÇà½Ãų °ÍÀÌ´Ù. ±¸Ã¼ÀûÀÎ Áö½Ã´Â ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¿¡ µé¾îÀÖ´Â README³ª INSTALL ÆÄÀÏÀ» Àо¾Æ¶ó. (Ȥ½Ã ¼Ò½º ÆÄÀϵéÀÇ ¾ÐÃàÀ» Ǭ ´ÙÀ½¿¡ ±âº» µð·ºÅ͸®¿¡ Imake ÆÄÀÏÀÌ ÀÖ´Ù¸é, xmkmf¸¦ ¼öÇàÇ϶ó´Â ¾ê±â´Ù.) ÀÌ °úÁ¤¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ºÐ¼®Àº Imake¿Í xmkmfÀÇ man ÆäÀÌÁö¸¦ Àо¾Æ¶ó.

xmkmf¿Í make´Â root°¡ ½ÇÇà½ÃÄÑ¾ß ÇÒ ¼öµµ ÀÖ´Ù´Â Á¡¿¡ À¯ÀÇÇ϶ó. ƯÈ÷ ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» /usr/binÀ̳ª /usr/local/bin µð·ºÅ͸®·Î ¿Å±â±â À§Çؼ­ make installÀ» ½ÇÇà½Ãų ¶§ ±×·¸´Ù. rootÀÇ ±ÇÇÑÀÌ ¾ø´Â ÀÏ¹Ý »ç¿ëÀڷμ­ make¸¦ »ç¿ëÇϸé write access denied ¶ó´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸°Ô µÇ±â ½±´Ù. ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¾²±â Çã°¡±ÇÀ» °®°í ÀÖÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ¸¸µé¾îÁø ¹ÙÀ̳ʸ® ÆÄÀϵéÀÌ ´ç½Å°ú ´Ù¸¥ ÀûÀýÇÑ »ç¿ëÀڵ鿡°Ô ÀûÇÕÇÑ ½ÇÇà Çã°¡±ÇÀ» °®°í ÀÖ´ÂÁöµµ È®ÀÎÇØ¾ß ÇÑ´Ù.

xmkmf´Â ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ¸Â´Â »õ·Î¿î MakefileÀ» ¸¸µé±â À§Çؼ­ Imake ÆÄÀÏÀ» »ç¿ëÇÑ´Ù. º¸Åë xmkmf´Â -a ¿É¼Ç°ú ÇÔ²² »ç¿ëÇÑ´Ù. make Makefiles, make includes, make depend ¸¦ ÀÚµ¿ÀûÀ¸·Î ½ÇÇàÇϱâ À§Çؼ­´Ù. ÀÌ·¸°Ô Çϸé ÄÄÆÄÀÏ·¯¿Í ¸µÄ¿¸¦ À§ÇØ º¯¼öµéÀ» ¼³Á¤ÇÏ°í ¶óÀ̺귯¸®ÀÇ À§Ä¡¸¦ Á¤ÀÇÇÑ´Ù. ¶§·Î´Â Imake ÆÄÀÏÀÌ ¾ø°í ´ë½Å °°Àº ¿ªÇÒÀ» ÇÏ´Â INSTALL À̳ª configure ¶ó´Â ½© ½ºÅ©¸³Æ®°¡ ÀÖÀ» ¼öµµ ÀÖ´Ù. configure¸¦ ½ÇÇà½ÃÅ°·Á¸é ./configure ¶ó°í ÇØ¾ß ÇÑ´Ù´Â Á¡¿¡ ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÇöÀç µð·ºÅ͸®ÀÇ Á¤È®ÇÑ configure ½ºÅ©¸³Æ®¸¦ È£ÃâÇϱâ À§Çؼ­´Ù. ´ëºÎºÐÀÇ °æ¿ì ¹èÆ÷º»ÀÇ README ÆÄÀÏ¿¡ ¼³Ä¡ °úÁ¤¿¡ ´ëÇÑ ¼³¸íÀÌ µé¾î ÀÖ´Ù.

º¸Åë xmkmf³ª ¼³Ä¡ ½ºÅ©¸³Æ®°¡ ¸¸µé¾î³½ Makefile ¼ÓÀ» Á÷Á¢ »ìÆ캸´Â °ÍÀÌ ÁÁ´Ù. ´ë°³ MakefileÀº ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ÀûÇÕÇÏÁö¸¸, °æ¿ì¿¡ µû¶ó¼­´Â MakefileÀ» º¯°æÇϰųª, ¿¡·¯¸¦ ¼ÕÀ¸·Î ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¼öµµ ÀÖ´Ù.

´ë°³ ·çÆ®·Î¼­ make installÀ» Çϸé, »õ·Î ¸¸µç ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» ÀûÀýÇÑ ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¼³Ä¡ÇÏ°Ô µÈ´Ù. ¿äÁòÀÇ ¸®´ª½º ¹èÆ÷º»ÀÇ °æ¿ì, ½Ã½ºÅÛ Àüü¿ëÀÇ ¹ÙÀ̳ʸ® ÆÄÀϵéÀº º¸Åë /usr/bin, /usr/X11R6/bin, /usr/local/bin¿¡ ¼³Ä¡µÈ´Ù. ¿ø·¡ ¼³Ä¡Çß´ø ¸®´ª½ºÀÇ ÀϺΰ¡ ¾Æ´Ï±â ¶§¹®¿¡ º°µµÀÇ ¹ÙÀ̳ʸ® ÆÄÀÏ·Î ³²°ÜµÎ±â À§Çؼ­ »õ·Î¿î ÆÐÅ°Áö´Â /usr/local/bin¿¡ ¼³Ä¡ÇÏ´Â °ÍÀÌ ÁÁ´Ù.

¿ø·¡ »ó¾÷¿ë UNIX¸¦ À§ÇØ ¸¸µé¾îÁø ÆÐÅ°Áö´Â /opt³ª ±âŸ ³¸¼± µð·ºÅ͸®¿¡ ¼³Ä¡µÇµµ·Ï µÇ¾î ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ °æ¿ì, ÁöÁ¤µÈ µð·ºÅ͸®°¡ ¾ø´Ù¸é, ´ç¿¬È÷ ¼³Ä¡ ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª¿À°Ô µÈ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº root ·Î¼­ /opt µð·ºÅ͸®¸¦ ¸¸µé¾î¼­ ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÏ°í, ÇØ´ç µð·ºÅ͸®¸¦ PATH ȯ°æº¯¼ö¿¡ ³Ö´Â °ÍÀÌ´Ù. ¶Ç´Â /usr/local/bin µð·ºÅ͸®·Î ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé ¼öµµ ÀÖ´Ù.

ÀϹÝÀûÀÎ ¼³Ä¡ ¼ø¼­¸¦ Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù.

  • README ÆÄÀÏ ¹× ±×¹ÛÀÇ °¡´ÉÇÑ ¹®¼­¸¦ Àд´Ù.
  • xmkmf -a³ª, INSTALL, configure¸¦ ½ÇÇàÇÑ´Ù.
  • MakefileÀ» È®ÀÎÇÑ´Ù.
  • ÇÊ¿äÇϸé, make clean, make Makefiles, make includes, make depend¸¦ ½ÇÇàÇÑ´Ù.
  • make¸¦ ½ÇÇàÇÑ´Ù.
  • ÆÄÀÏÀÇ Çã°¡±ÇÀ» È®ÀÎÇÑ´Ù.
  • ÇÊ¿äÇϸé make install¸¦ ½ÇÇàÇÑ´Ù.

ÁÖÀÇÁ¡:

  • º¸Åë ÆÐÅ°ÁöÀÇ ÄÄÆÄÀÏÀº root·Î¼­ ÇÏÁö ¾Ê´Â´Ù. root·Î su¸¦ ÇÏ´Â °ÍÀº ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¼³Ä¡ÇÒ ¶§¿¡¸¸ ÇÊ¿äÇÏ´Ù.
  • make¿Í ±× »ç¿ë¹ý¿¡ Àͼ÷ÇØÁø ´ÙÀ½¿¡´Â, ¼³Ä¡ÇÏ·Á´Â ÆÐÅ°Áö¿¡ Æ÷ÇÔµÈ È¤Àº »õ·Î ¸¸µé¾îÁø Ç¥ÁØ Makefile¿¡ gcc¸¦ À§ÇÑ ÃÖÀûÈ­ ¿É¼ÇÀ» Ãß°¡ÇÏ°í ½ÍÀ» ¼öµµ ÀÖ´Ù. ÈçÇÑ ¿É¼ÇÀº -O2, -fomit-frame-pointer, -funroll-loops, (ÆæƼ¾ö cpu¶ó¸é) -mpentium µîÀÌ´Ù. MakefileÀ» º¯°æÇÒ ¶§¿¡´Â ÁÖÀÇÇØ¾ß ÇÑ´Ù.
  • make·Î ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¸¸µç ´ÙÀ½¿¡´Â stripÀ» ÇÏ°í ½ÍÀ» ¼ö°¡ ÀÖ´Ù. stripÀ̶õ ¹ÙÀ̳ʸ® ÆÄÀÏ¿¡¼­ ½Éº¼¸¯ µð¹ö±ë Á¤º¸¸¦ Á¦°ÅÇؼ­ ±× Å©±â¸¦ »ó´çÈ÷ ÁÙ¿©ÁÖ´Â ¸í·ÉÀÌ´Ù. ¹°·Ð ÀÌ·¸°Ô ÇÏ¸é µð¹ö±ëÀº ºÒ°¡´ÉÇÏ´Ù.
  • Pack Distribution Project´Â º°µµÀÇ Ä÷º¼Ç µð·ºÅ͸®¿¡ ¼³Ä¡µÈ ÆÄÀÏµé »çÀÌÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ ó¸®Çϵµ·Ï Python ½ºÅ©¸³Æ®·Î ÀÛ¼ºµÈ µµ±¸µé¿¡ ±â¹ÝÇϴµ¥, ¾ÐÃàµÈ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ¸¸µå´Â ¶Ç´Ù¸¥ ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ÀÌ ¾ÐÃà ÆÐÅ°ÁöµéÀº º¸ÅëÀÇ tarballÀÌÁö¸¸, /coll°ú /pack µð·ºÅ͸®¿¡ ¼³Ä¡µÈ´Ù. ÀÌ ¹èÆ÷º»µéÀ» ¾²·Á¸é À§ÀÇ »çÀÌÆ®¿¡¼­ Pack-Collection À» ´Ù¿î¹Þ¾Æ¾ß ÇÑ´Ù.

4. ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ® ÆÄÀÏ

4.1 rpms, ¹«¾ùÀÌ À߸øµÇ¾ú³ª?

¼Ò½º·ÎºÎÅÍ ¼öµ¿À¸·Î ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â °ÍÀº ºÐ¸íÈ÷ ¾î¶² ¸®´ª½º »ç¿ëÀڵ鿡°Ô´Â ¸Å¿ì °Ì³ª´Â ÀÏÀÌ´Ù. ±×·¡¼­ ÀαâÀÖ´Â rpm°ú deb ȤÀº ´õ »õ·Î¿î Stampede slp ÆÐÅ°Áö Æ÷¸ËÀ» »ç¿ëÇÏ°ï ÇÑ´Ù. rpm ¼³Ä¡°¡ º¸ÅëÀº ºÎµå·´°í ºü¸¦ ¼ö ÀÖ´Ù. ¾î´À ¾Ç¸í³ôÀº ¿î¿µ üÁ¦¿¡¼­ ¼ÒÇÁÆ®¿þ¾î¸¦ ¼³Ä¡ÇÏ´Â °Í ¸¸Å­À̳ª ¸»ÀÌ´Ù. ÇÏÁö¸¸ ÀÚµ¿À¸·Î ¼³Ä¡µÇ´Â ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ® ÆÄÀÏÀÇ ¾àÁ¡¿¡ ´ëÇؼ­µµ ºÐ¸íÈ÷ »ý°¢ÇØ º¸¾Æ¾ß ÇÑ´Ù.

ù°, ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö°¡ º¸ÅëÀº ¸ÕÀú "tarball"·Î ¹èÆ÷µÇ¸ç, ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ® ÆÄÀÏÀº ¸çÄ¥¿¡¼­ ¸îÁÖ ½ÉÁö¾î´Â ¸î´Þ µÚ´Ê°Ô ³ª¿Â´Ù´Â °ÍÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ÇöÀçÀÇ rpm ÆÐÅ°Áö´Â ÃÖ½ÅÀÇ "tarball"¿¡ ºñÇØ Àû¾îµµ ¸¶ÀÌ³Ê ¹öÁ¯ 2 Á¤µµ ´Ê´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù. µû¶ó¼­ ¼ÒÇÁÆ®¿þ¾îÀÇ Ã·´ÜÀ» µû¶ó°¡°í ½ÍÀº »ç¶÷À̶ó¸é, rpmÀ̳ª deb°¡ ³ª¿À±â¸¦ ±â´Ù¸± ¼ö ¾øÀ» °ÍÀÌ´Ù. ´ú ÀαâÀÖ´Â ÆÐÅ°Áö¶ó¸é ¾Æ¿¹ rpmÀ¸·Î ¸¸µé¾îÁöÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù.

µÑ°, "tarball" ÆÐÅ°Áö°¡ º¸´Ù ¿ÏÀüÇϸç, ´õ ¸¹Àº ¿É¼ÇÀ» °¡Áö°í ÀÖ°í, ´õ ÃÖÀûÈ­½ÃÅ°±â ½±´Ù. ¹ÙÀ̳ʸ® ÆÄÀÏÀÇ rpm ¹èÆ÷º»Àº ¿ø·¡ ¹èÆ÷º»ÀÇ ±â´É °¡¿îµ¥ ÀϺθ¦ °¡Áö°í ÀÖÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ¼Ò½º rpmÀº Àüü ¼Ò½º Äڵ带 Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç, rpm --recompile ÆÐÅ°ÁöÀ̸§.rpm À̳ª rpm --rebuild ÆÐÅ°ÁöÀ̸§.rpm ¿É¼ÇÀ¸·Î ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ¿©¾ß ÇÑ´Ù.

¼Â°, ¾î¶² ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ® ÆÄÀϵéÀº Á¦´ë·Î ¼³Ä¡µÇÁö ¾ÊÀ¸¸ç, ¼³Ä¡°¡ µÇ¾ú´Ù°í Çصµ Á¤»óÀûÀ¸·Î Á¾·áµÇÁö ¸øÇÏ°í core-dump¸¦ ³¾ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ÀÇÁ¸ÇÏ°í ÀÖ´Â ¶óÀ̺귯¸®ÀÇ ¹öÁ¯ÀÌ ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ÀÖ´Â °Í°ú ´Ù¸£±â ¶§¹®ÀÏ ¼öµµ ÀÖ°í, Á¦´ë·Î ÆÐÅ°ÁöÈ­µÇÁö ¾Ê¾ÒÀ» ¼öµµ ÀÖÀ¸¸ç, ȤÀº ±×Àú ½ÇÇà¿¡ ½ÇÆÐÇÑ °Í(plain broken)ÀÏ ¼öµµ ÀÖ´Ù. ¾î¶² °æ¿ì°Ç, rpmÀ̳ª deb¸¦ ¼³Ä¡Çß´Ù¸é, ´ç½ÅÀº ±× rpmÀ̳ª deb ÆÐÅ°Áö¸¦ ¸¸µç »ç¶÷ÀÇ ¼÷·Ãµµ¸¦ ¹Ï¾î¾ß¸¸ ÇÑ´Ù.

³¡À¸·Î, ¼Ò½º¸¦ ¸¸Áö°í ±×°ÍÀ¸·ÎºÎÅÍ ¹è¿ì±â À§Çؼ­´Â, ¼Ò½º Äڵ带 ¼Õ À§¿¡ °®°í ÀÖ´Â ÆíÀÌ ÁÁ´Ù. ¼Ò½º Äڵ带 ¾ÐÃà ÆÄÀÏ·Î °®°í ÀÖ´Â ÆíÀÌ º°µµÀÇ ¼Ò½º rpmÀ¸·Î °®°í ÀÖ´Â Æí¿¡ ºñÇØ ÈξÀ ´õ ¼ö¿ùÇÏ´Ù.

rpm ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÏ´Â °ÍÀÌ ²À ¾Æ¹« »ý°¢¾øÀÌ °¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ù. ÀÇÁ¸¼º¿¡ ¹®Á¦°¡ ÀÖÀ¸¸é rpm ¼³Ä¡´Â ½ÇÆÐÇÒ °ÍÀÌ´Ù. ºñ½ÁÇÑ °æ¿ì·Î, rpmÀÌ ´ç½Å ½Ã½ºÅÛ¿¡ ÀÖ´Â °Í°ú ´Ù¸¥ ¹öÁ¯ÀÇ ¶óÀ̺귯¸®¸¦ ¿ä±¸ÇÑ´Ù¸é, ¼³Ä¡´Â Á¦´ë·Î µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ´ç½ÅÀÌ Áö±Ý ÀÖ´Â ¶óÀ̺귯¸®¿¡¼­ ¾ø´Â ¶óÀ̺귯¸®·ÎÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé¾îÁØ´Ù Çصµ ¸»ÀÌ´Ù. rpm ¼³Ä¡°¡ Æí¸®Çϱâ´Â ÇÏÁö¸¸, "tarball" ¼³Ä¡°¡ ½ÇÆÐÇÏ´Â °Í°ú °°Àº ÀÌÀ¯·Î ½ÇÆÐÇÏ´Â °æ¿ì°¡ ÀÚÁÖ ÀÖ´Ù.

´ç½ÅÀº ÇÊ¿äÇÑ ¾²±â Çã°¡±ÇÀ» °®±â À§Çؼ­ rpm°ú debÀÇ ¼³Ä¡¸¦ root·Î¼­ Çؾ߸¸ Çϴµ¥, ÀÌ°ÍÀº ½É°¢ÇÑ ÀáÀçÀû º¸¾È ¹®Á¦¸¦ ¾ß±âÇÑ´Ù. ´ç½ÅÀÌ »ý°¢¾øÀÌ ½Ã½ºÅÛÀÇ ¹ÙÀ̳ʸ® ÆÄÀÏ°ú ¶óÀ̺귯¸®µéÀ» ¸ÁÃĹö¸®°Å³ª, ½ÉÁö¾î ´ç½Å ½Ã½ºÅÛÀ» Æı«ÇÒ Æ®·ÎÀÌ ¸ñ¸¶¸¦ ¼³Ä¡ÇÒ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. µû¶ó¼­ rpm°ú deb ÆÐÅ°Áö¸¦ "¹ÏÀ» ¼ö ÀÖ´Â ÀÚ·á¿ø"À¸·ÎºÎÅÍ ¾ò´Â °ÍÀÌ Áß¿äÇÏ´Ù. ¾î¶² °æ¿ì¿¡³ª ´ç½ÅÀº rpm ÆÐÅ°Áö¸¦ ¼³Ä¡Çϱâ Àü¿¡, rpm --cecksig ÆÐÅ°ÁöÀ̸§.rpm ¸í·ÉÀ¸·Î (MD5 checksum°ú ´ëÁ¶ÇÏ¿©) '¼­¸í È®ÀÎ'À» Çؾ߸¸ ÇÑ´Ù. ¸¶Âù°¡Áö·Î rpm -K --nopgp ÆÐÅ°ÁöÀ̸§.rpmÀ» ¼öÇàÇÒ °ÍÀ» °­·ÂÇÏ°Ô ±ÇÇÑ´Ù. deb ÆÐÅ°Áö¿¡¼­ ÀÌ¿¡ ÇØ´çÇÏ´Â ¸í·ÉÀº dpkg -I | --info ÆÐÅ°ÁöÀ̸§.deb ¿Í dpkg -e | --control ÆÐÅ°ÁöÀ̸§.deb ÀÌ´Ù.

  • rpm --checksig gnucash-1.1.23-4.i386.rpm
    
    
    gnucash-1.1.23-4.i386.rpm: size md5 OK

  • rpm -K --nopgp gnucash-1.1.23-4.i386.rpm
    
    
    gnucash-1.1.23-4.i386.rpm: size md5 OK

ÁøÂ¥ ÆíÁýÁõ ȯÀÚ(ÀÌ Á¤µµ¶ó¸é ÆíÁý±¤À̶ó°í ºÎ¸£´Â °æ¿ì°¡ ´õ ¸¹´Ù)¶ó¸é, ÆÐÅ°Áö¸¦ Ç®¾î¼­ ±× ±¸¼º¿ä¼Ò¸¦ È®ÀÎÇϱâÀ§ÇÑ unrpm°ú rpmunpack À¯Æ¿¸®Æ¼¸¦ Sunsite utils/package directoryÀÇ utils/package µð·ºÅ͸®¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù.

Klee DieneÀº ¼³Ä¡µÈ .deb ÆÄÀÏ¿¡ ¹®Á¦°¡ ÀÖ´ÂÁö MD5 checksum°ú ºñ±³ÇÏ¿© È®ÀÎÇÏ´Â dpkgcert¶ó´Â ½ÇÇèÀûÀÎ ÆÐÅ°Áö¸¦ ÀÛ¼ºÇß´Ù. Debian ftp archive¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. ÇöÀçÀÇ ÆÐÅ°Áö À̸§ ¹× ¹öÁ¯Àº dpkgcert_0.2-4.1_all.deb ÀÌ´Ù. "http://dpkgcert.jimpick.com" name="Jim Pick Software">»çÀÌÆ®´Â dpkgcert°¡ ÀüÇüÀûÀÎ µ¥ºñ¾È ½Ã½ºÅÛ ³»ÀÇ ÆÐÅ°ÁöµéÀ» °ËÁõÇϵµ·Ï ÇÏ´Â ½ÇÇèÀûÀÎ ¼­¹ö µ¥ÀÌÅͺ£À̽º¸¦ ¿î¿µÇÏ°í ÀÖ´Ù.

°¡Àå ´Ü¼øÇÏ°Ô´Â, rpm -i ÆÐÅ°ÁöÀ̸§.rpm °ú dpkg --install ÆÐÅ°ÁöÀ̸§.deb ¸í·ÉÀ¸·Î ÀÚµ¿ÀûÀ¸·Î ¼ÒÇÁÆ®¿þ¾î¸¦ Ç®¾î¼­ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ ¸í·ÉÀ» ¸Í¸ñÀûÀ¸·Î ¾²¸é ´ç½Å ½Ã½ºÅÛÀ» ÇØÄ¥ ¼öµµ ÀÖÀ¸¹Ç·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù.

À§ÀÇ °æ°í´Â Á¤µµ´Â ´ú ÇÏÁö¸¸ ½½·¢¿þ¾îÀÇ pkgtool ¼³Ä¡ À¯Æ¿¸®Æ¼¿¡µµ ¿ª½Ã Àû¿ëµÈ´Ù. ¸ðµç "ÀÚµ¿È­µÈ" ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡´Â ÁÖÀǸ¦ ¿äÇÏ´Â °ÍÀÌ´Ù.

martian¿Í alien ÇÁ·Î±×·¥Àº rpm, deb, StampedeÀÇ slp, tar.gz ÆÐÅ°Áö Çü½ÄÀ» ¼­·Î º¯È¯ÇØÁØ´Ù. ÀÌ ÇÁ·Î±×·¥µéÀ» ¾²¸é ÀÌ ÆÐÅ°ÁöµéÀ» ¸ðµç ¸®´ª½º ¹èÆ÷º»¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

´õ ÀÚ¼¼ÇÑ Á¤º¸°¡ ÇÊ¿äÇϸé rpm°ú dpkg ¸í·ÉÀÇ man ÆäÀÌÁö¸¦ ÁÖÀÇÇؼ­ Àаí, RPM HOWTO¿Í TFUGÀÇ Quick Guide to Red Hat's Package Manager, The Debian Package Management Tools¸¦ ÂüÁ¶Ç϶ó.

4.2 rpmsÀÇ ¹®Á¦: ÇÑ °¡Áö ¿¹

Jan Hubicka´Â xaos¶ó´Â ¸Å¿ì ÈǸ¢ÇÑ ÇÁ·¢Å» ÆÐÅ°Áö¸¦ ¸¸µé¾ú´Ù. ±×ÀÇ È¨ÆäÀÌÁö¿¡¼­ .tar.gz°ú rpm·Î µÈ ÆÐÅ°ÁöµéÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. ÆíÀǸ¦ À§Çؼ­ "tarball" º¸´Ù´Â rpm ¹öÁ¯À» »ç¿ëÇϱâ·Î ÇÏÀÚ.

ºÒÇàÇÏ°Ôµµ rpm ¹öÁ¯ÀÇ xaos¸¦ ¼³Ä¡Çϴµ¥ ½ÇÆÐÇß´Ù. µÎ º°°³ÀÇ rpm ÆÇÀÌ ¸ðµÎ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê¾Ò´Ù.

rpm -i --test XaoS-3.0-1.i386.rpm

error: failed dependencies:
        libslang.so.0 is needed by XaoS-3.0-1
        libpng.so.0 is needed by XaoS-3.0-1
        libaa.so.1 is needed by XaoS-3.0-1

rpm -i --test xaos-3.0-8.i386.rpm

error: failed dependencies:
        libaa.so.1 is needed by xaos-3.0-8

ÀÌ»óÇÑ °ÍÀº libslang.so.0, libpng.so.0, libaa.so.1ÀÌ ¸ðµÎ ½ÃÇèµÈ ½Ã½ºÅÛÀÇ /usr/lib µð·ºÅ͸®¿¡ ÀÖ¾ú´Ù´Â °ÍÀÌ´Ù. xaosÀÇ rpmµéÀº ¸±¸®Áî ¹øÈ£´Â °°¾Æµµ Á¶±Ý ´Ù¸¥ ¹öÁ¯ÀÇ ¶óÀ̺귯¸®¸¦ ¾²µµ·Ï ÄÄÆÄÀϵǾúÀ½ÀÌ Æ²¸²¾ø´Ù.

½ÃÇè»ï¾Æ xaos-3.0-8.i386.rpmÀ» --nodeps ¿É¼ÇÀ» ÁÖ¾î °­Á¦·Î ¼³Ä¡ÇØ º¸ÀÚ. xaos¸¦ ½ÇÇà½ÃÄÑ º¸Áö¸¸, ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù.

xaos: error in loading shared libraries: xaos: undefined symbol: __fabsl

¿Ö ÀÌ·¸°Ô µÇ´ÂÁö ¾Ë¾Æº¸±â À§ÇØ, °è¼Ó ½ÃµµÇØ º¸±â·Î ÇÏÀÚ. xaos ½ÇÇàÆÄÀÏÀÌ ¾î¶² ¶óÀ̺귯¸®¿¡ ÀÇÁ¸ÇÏ°í ÀÖ´ÂÁö ã¾Æº¸±â À§ÇØ ldd¸¦ ½ÇÇà½ÃÄÑ º¸¸é, ÇÊ¿äÇÑ °øÀ¯ ¶óÀ̺귯¸®°¡ ¸ðµÎ ÀÖ´Ù´Â °ÍÀ» º¸¿©ÁØ´Ù. /usr/lib/libaa.so.1 ¶óÀ̺귯¸®¿¡ nmÀ» ½ÇÇàÇؼ­ ±× ½Éº¼¸¯ ·¹ÆÛ·±½º ¸ñ·ÏÀ» º¸¸é, ÀÌ ¶óÀ̺귯¸®¿¡´Â Á¤¸» __fabslÀÌ ºüÁ®ÀÖ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ¹°·Ð ÀÌ ºüÁ®ÀÖ´Â ·¹ÆÛ·±½º´Â ´Ù¸¥ ¶óÀ̺귯¸®¿¡¼­ ºüÁø °ÍÀÏ ¼öµµ ÀÖÁö¸¸... ¶óÀ̺귯¸®¸¦ ¹Ù²ÙÁö ¾Ê´Â ÇÑ, ´õ ÀÌ»ó ¾î¿ ¼ö°¡ ¾ø´Ù.

rpmÀº ÀÌÁ¤µµ·Î ÃæºÐÇÏ´Ù. ÀÌÁ¦ "tarball" Áï XaoS-3.0.tar.gzÀ» Ȩ ÆäÀÌÁö³ª ftp »çÀÌÆ®¿¡¼­ ´Ù¿î¹Þ´Â´Ù. ÀÌ ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇغ¸±â·Î ÇÏÀÚ. ./configure, make¸¦ ½ÇÇà½ÃÅ°°í, ¸¶Áö¸·À¸·Î (·çÆ®·Î¼­) make installÀ» ½ÇÇàÇÑ´Ù. ¹®Á¦¾øÀÌ ÀÛµ¿ÇÑ´Ù.

ÀÌ°ÍÀº ¹Ì¸® ÄÄÆÄÀÏµÈ ÆÐÅ°Áö°¡ ±× ÀåÁ¡ º¸´Ù ´õ ¸¹Àº ¹®Á¦¸¦ ÀÏÀ¸Å°´Â ¸¹Àº ¿¹ ÁßÀÇ ÇϳªÀÏ »ÓÀÌ´Ù.

5. Termcap °ú Terminfo¿¡ °ü·ÃµÈ À̽´

man ÆäÀÌÁö¿¡ ÀÇÇϸé, "terminfo´Â ½ºÅ©¸° ÁöÇâÀûÀÎ ÇÁ·Î±×·¥µé¿¡ ÀÇÇØ ÀÌ¿ëµÇ´Â, Å͹̳ÎÀ» ±â¼úÇÑ µ¥ÀÌÅÍ º£À̽º"ÀÌ´Ù. terminfo´Â ÅؽºÆ®¸¦ Å͹̳ο¡ Ç¥½ÃÇϱâ À§ÇØ »ç¿ëµÇ´Â Á¦¾î ½ÃÄö½º (escape code)ÀÇ ÀϹÝÀûÀÎ ÁýÇÕÀ» Á¤ÀÇÇϸç, ƯÁ¤ÇÑ µå¶óÀ̹ö ÇÊ¿ä¾øÀÌ ¼­·Î ´Ù¸¥ Å͹̳ΠÇϵå¿þ¾î¸¦ Áö¿øÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. terminfo ¶óÀ̺귯¸®´Â ÇöÀçÀÇ ¸®´ª½º ¹èÆ÷º»¿¡¼­ /usr/share/terminfo ¿¡ À§Ä¡ÇÑ´Ù.

terminfo µ¥À̹ö º£À̽º´Â ÀÌÀüÀÇ termcap°ú ÀÌÁ¨ Æó¹°ÀÌ µÈ termlibÀ» °ÅÀÇ ¹Ð¾î³Â´Ù. termcapÀ» ¿ä±¸ÇÏ´Â ÆÐÅ°Áö¸¦ ´Ù·ê ¶§¸¦ Á¦¿ÜÇÏ°í´Â, ÇÁ·Î±×·¥À» ¼³Ä¡Çϴµ¥ ÀÌ ¹®Á¦±îÁö ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø´Ù.

ÀÌÁ¦ ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷º»ÀÌ terminfo¸¦ »ç¿ëÇÏ°í ÀÖÁö¸¸, ¿À·¡µÈ ÀÀ¿ë ÇÁ·Î±×·¥µé°úÀÇ È£È¯¼ºÀ» À§ÇØ ¿À·¡µÈ termcap ¶óÀ̺귯¸®¸¦ À¯ÁöÇÏ°í ÀÖ´Ù. (/etc/termcapÀ» º¸¶ó.) °¡²û termcap¿¡ ¸µÅ©µÈ ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ ¼³Ä¡µÇ¾î¾ß Çϴ Ưº°ÇÑ È£È¯¼º ÆÐÅ°Áö°¡ ÀÖ´Ù. ¸Å¿ì µå¹°°Ô´Â ¼Ò½º ÆÄÀÏ¿¡¼­ #define termcap À̶ó´Â ¹®ÀåÀ» ÁÖ¼®¹® ó¸®ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ¿¡ ´ëÇÑ ÃÖÁ¾ÀûÀÎ Á¤º¸´Â ´ç½ÅÀÌ »ç¿ëÇÏ´Â ¹èÆ÷º»ÀÇ ÀûÀýÇÑ ¹®¼­ ÆÄÀÏ¿¡¼­ È®ÀÎÇϵµ·Ï Ç϶ó.

6. a.out ¹ÙÀ̳ʸ® ÆÄÀÏ°úÀÇ È£È¯¼º

¸Å¿ì µå¹® °æ¿ìÀÌÁö¸¸, a.out ¹ÙÀ̳ʸ® ÆÄÀÏÀ» »ç¿ëÇؾ߸¸ ÇÒ ¼öµµ ÀÖ´Ù. ¼Ò½º Äڵ带 ¾òÀ» ¼ö ¾ø´Ù°Å³ª, ¾î¶² ÀÌÀ¯¿¡¼­µç ¼Ò½º·ÎºÎÅÍ »õ·Î¿î ELF ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.

ÀÌ·² ¶§, ELF·Î ¼³Ä¡µÈ ¸®´ª½º ½Ã½ºÅÛÀº ´ë°³ /usr/i486-linuxaout/lib µð·ºÅ͸®¿¡ ¿Ïº®ÇÑ a.out ¶óÀ̺귯¸®µéÀ» °¡Áö°í ÀÖ´Ù. a.out ¶óÀ̺귯¸®´Â ELF ¶óÀ̺귯¸®¿ÍÀÇ È¥¶õÀ» ÇÇÇϱâ À§ÇØ ELF¿Í ´Ù¸£°Ô ¹öÁ¯À» ºÙÀδÙ. µû¶ó¼­ a.out ¹ÙÀ̳ʸ® ÆÄÀÏÀº ½ÇÇàµÉ ¶§ ¿Ã¹Ù¸¥ ¶óÀ̺귯¸®¸¦ ãÀ» ¼ö ÀÖ¾î¾ß ÇÏÁö¸¸, Ç×»ó ÀÌ·¸°Ô µÇÁö´Â ¾Ê´Â´Ù.

Ä¿³ÎÀÌ a.out Áö¿ø ±â´ÉÀ» ÀÚü ³»¿¡³ª ¸ðµâ·Î¼­ °®µµ·Ï ÄÄÆÄÀϵǾú¾î¾ß ÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇ϶ó. ÇÊ¿äÇϸé Ä¿³ÎÀ» ´Ù½Ã ÄÄÆÄÀÏÇÒ ¼öµµ ÀÖ´Ù. ¾î¶² ¸®´ª½º ¹èÆ÷º»Àº Ưº°ÇÑ È£È¯¿ë À¯Æ¿¸®Æ¼¸¦ ¼³Ä¡ÇØ¾ß Çϱ⵵ ÇÑ´Ù. ¿¹¸¦ µé¾î a.outÀÇ X ÀÀ¿ë ÇÁ·Î±×·¥À» À§Çؼ­, µ¥ºñ¾È¿¡¼­´Â xcompat¸¦ ¼³Ä¡ÇØ¾ß ÇÑ´Ù.

6.1 ¿¹

Jerry Smith´Â ¸î ³â Àü¿¡ rolodex¶ó´Â ¸Å¿ì Æí¸®ÇÑ ÇÁ·Î±×·¥À» ®´Ù. ÀÌ ÇÁ·Î±×·¥Àº Motif ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏÁö¸¸, ´ÙÇàÈ÷µµ Á¤ÀûÀ¸·Î ¸µÅ©µÈ a.out Çü½ÄÀÇ ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. ºÒÇàÇÑ °ÍÀº lesstif ¶óÀ̺귯¸®¸¦ ½á¼­ ´Ù½Ã ÄÄÆÄÀÏ ÇÏ·Á¸é ¼Ò½º¸¦ ¼ö¾øÀÌ ¶â¾î°íÃÄ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ´õ Å« ºÒÇàÀº a.outÀÌ ¾î¶² ELF ½Ã½ºÅÛ¿¡¼­´Â ´ÙÀ½°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ ÅͶ߸°´Ù´Â °ÍÀÌ´Ù.

xrolodex: can't load library '//lib/libX11.so.3'
No such library

ÀÌ ¶§, /usr/i486-linuxaout/lib¿¡´Â ±×·± ¶óÀ̺귯¸®°¡ ÀÖÁö¸¸ xrolodex´Â ±× ¶óÀ̺귯¸®¸¦ ½ÇÇà Áß¿¡ ãÁö ¸øÇÑ °ÍÀÌ´Ù. °£´ÜÇÑ ÇØ°áÃ¥Àº /lib ¶óÀ̺귯¸®¿¡ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé¾îÁÖ´Â °ÍÀÌ´Ù.

ln -s /usr/i486-linuxaout/lib/X11.so.3.1.0 libX11.so.3

libXt.so.3°ú libc.so.4 ¶óÀ̺귯¸®µµ ºñ½ÁÇÑ ¸µÅ©¸¦ ¸¸µé¾îÁÖ¾î¾ß ÇÑ´Ù. ¹°·Ð ÀÌ·± ÀϵéÀº root·Î¼­ ÇØ¾ß ÇÑ´Ù. À̶§ ÀÌ¹Ì ÀÖ´Â ¶óÀ̺귯¸®¸¦ µ¤¾î¾²°Å³ª ¹öÁ¯ ¹øÈ£¿¡ Ãæµ¹À» ÀÏÀ¸Å°´Â °ÍÀÌ ¾Æ´ÑÁö ¾ÆÁÖ È®½ÇÈ÷ ÇØ¾ß ÇÑ´Ù´Â Á¡À» ¸í½ÉÇ϶ó. ´ÙÇàÈ÷µµ »õ·Î¿î ELF ¶óÀ̺귯¸®´Â ÀÌ·± ¹®Á¦¸¦ ¿¹»óÇÏ°í ¹Ì¸® a.out ¶óÀ̺귯¸® º¸´Ù ³ôÀº ¹öÁ¯ ¹øÈ£¸¦ °¡Áö°í ÀÖ´Ù.

À§ÀÇ ¼¼ ¸µÅ©¸¦ ¸¸µé¾îÁÖ°í ³ª¸é, xrolodex´Â Àß ½ÇÇàµÈ´Ù.

xrolodex ÆÐÅ°Áö´Â ¿ø·¡ Spectro¿¡ ¿Ã·ÁÁ³Áö¸¸, ±×°÷¿¡¼­´Â Áö¿öÁø °Í °°´Ù. Áö±ÝÀº Sunsite¿¡¼­ tar.Z Çü½ÄÀÇ ¼Ò½º ÆÄÀÏ[512k]·Î ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù.

7. ¹®Á¦ÇØ°á

¿¡·¯ ¾øÀÌ xmkmf¿Í make¿¡ ¼º°øÇß´Ù¸é, ´ÙÀ½ Àý·Î ³Ñ¾î°¡µµ ÁÁ´Ù. ÇÏÁö¸¸ "½ÇÁ¦ »ýÈ°"¿¡¼­´Â ù¹ø¿¡ Á¦´ë·Î µÇ´Â ÀÏÀº °ÅÀÇ ¾ø´Ù. À̶§°¡ ´ç½ÅÀÇ ÀçÄ¡¸¦ ½ÃÇèÇÒ ¶§´Ù.

7.1 ¸µÅ© ¿¡·¯

  • xmkmf¸¦ ½ÇÇàÇßÀ½¿¡µµ make°¡ ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö¸¦ ³»°í ½ÇÆÐÇß´Ù°í °¡Á¤ÇÏÀÚ. Ling error: -lX11: No such file or directory ÀÌ °æ¿ì Imake ÆÄÀÏÀÌ Á¦´ë·Î ¼³Á¤µÇÁö ¾Ê¾ÒÀ» °¡´É¼ºÀÌ Å©´Ù. MakefileÀÇ Ã¹ºÎºÐ¿¡ ÀÖ´Â ´ÙÀ½°ú °°Àº ÁÙµéÀ» È®ÀÎÇØ º¸¶ó.
    LIB=            -L/usr/X11/lib
    INCLUDE=        -I/usr/X11/include/X11
    LIBS=           -lX11 -lc -lm
    
    -L°ú -I ½ºÀ§Ä¡´Â °¢°¢ ÄÄÆÄÀÏ·¯¿Í ¸µÄ¿¿¡°Ô ¶óÀ̺귯¸®¿Í include ÆÄÀϵéÀ» ¾îµð¿¡¼­ ã¾Æ¾ß ÇÏ´ÂÁö ¾Ë·ÁÁÖ´Â °ÍÀÌ´Ù. ÀÌ ¿¹¿¡¼­´Â X11 ¶óÀ̺귯¸®´Â /usr/X11/lib µð·ºÅ͸®¿¡, X11ÀÇ include ÆÄÀϵéÀº /usr/X11/include/X11 µð·ºÅ͸®¿¡ ÀÖ¾î¾ß ÇÑ´Ù. ´ç½ÅÀÇ ÄÄÇ»ÅÍ´Â ÀÌ¿Í ´Ù¸£´Ù¸é, Makefile¿¡ ÇÊ¿äÇÑ ¼öÁ¤À» °¡ÇÏ°í, make¸¦ ´Ù½Ã ÇØ º¸µµ·Ï Ç϶ó.

  • ´ÙÀ½°ú °°ÀÌ ¼öÇÐ ¶óÀ̺귯¸® ÇÔ¼ö¿¡ ´ëÇÑ Á¤ÀǵÇÁö ¾ÊÀº ÂüÁ¶(undefined reference)°¡ ÀÖÀ» °æ¿ì:
             /tmp/cca011551.o(.text+0x11): undefined reference to `cos'
    
    ÀÌ ¹®Á¦¿¡ ´ëÇÑ ÇعýÀº Makefile ³»ÀÇ LIBÀ̳ª LIBS ºÎºÐ(À§ÀÇ ¿¹¸¦ º¸¶ó)¿¡ -lm À» ´õÇÔÀ¸·Î½á ¼öÇÐ ¶óÀ̺귯¸®¸¦ ¸í½ÃÀûÀ¸·Î ¸µÅ©ÇÏ´Â °ÍÀÌ´Ù.

  • xmkmf°¡ ½ÇÆÐÇßÀ» ¶§ ÇØ º¼ ¼ö ÀÖ´Â ¶Ç´Ù¸¥ °ÍÀº ´ÙÀ½ÀÇ ½ºÅ©¸³Æ®´Ù.
             make -DUseInstalled -I/usr/X386/lib/X11/config
    
    ÀÌ°ÍÀº xmkmf¿Í µ¿µîÇÑ Àú¼öÁØ ¸í·É(bare bone)ÀÇ ÀÏÁ¾ÀÌ´Ù.

  • ¸Å¿ì µå¹® °æ¿ìÁö¸¸, root·Î¼­ ldconfig¸¦ ½ÇÇà½ÃÅ°´Â °ÍÀÌ ÇعýÀÌ µÉ ¼öµµ ÀÖ´Ù.
    
    
    # ldconfig ´Â °øÀ¯ ¶óÀ̺귯¸®ÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ °»½ÅÇÑ´Ù. ÀÌ°ÍÀº ¹Ýµå½Ã ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ò ¼öµµ ÀÖ´Ù.

  • ¾î¶² MakefileÀº ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ÀÖ´Â ¶óÀ̺귯¸®¿¡ ´ëÇØ ÀνĵÇÁö ¾ÊÀº(unrecognized) º°¸í(alias)¸¦ »ç¿ëÇϱ⵵ ÇÑ´Ù. ¿¹¸¦ µé¾î, ÄÄÆÄÀÏÀº libX11.so.6À» ¿ä±¸ÇÏÁö¸¸ /usr/X11R6/lib¿¡´Â ±×·± ÆÄÀÏÀ̳ª ¸µÅ©°¡ ¾øÀ» ¼ö ÀÖ´Ù. ÇÏÁö¸¸ libX11.so.6.1Àº ÀÖ´Ù. ÇØ°áÃ¥Àº root·Î¼­ ln -s /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/lib/libX11.so.6 À» ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ´ÙÀ½¿¡´Â ldconfig¸¦ ½ÇÇà½ÃÄÑ¾ß ÇÒ ¼öµµ ÀÖ´Ù.

  • ¶§·Î´Â ¼Ò½º¸¦ ÄÄÆÄÀÏÇϱâ À§ÇØ ¿À·¡µÈ X11R5ÀÇ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÒ ¼öµµ ÀÖ´Ù. /usr/X11R6/lib¿¡ R5ÀÇ ¶óÀ̺귯¸®°¡ ÀÖ´Ù¸é(óÀ½ ¸®´ª½º¸¦ ¼³Ä¡ÇÒ ¶§ ÀÌ°ÍÀ» ¼³Ä¡Çϵµ·Ï ¿É¼ÇÀ» ÁÖ¾ú´Ù¸é), ¼ÒÇÁÆ®¿þ¾î¸¦ ÄÄÆÄÀÏÇϱâ À§ÇØ ÇÊ¿äÇÑ ¸µÅ©°¡ Á¦´ë·Î ÀÖ´ÂÁö¸¸ È®ÀÎÇÏ¸é µÈ´Ù. R5 ¶óÀ̺귯¸®ÀÇ À̸§Àº libX11.so.3.1.0, libXaw.so.3.1.0, libXt.so.3.1.0 ÀÌ´Ù. º¸Åë libX11.so.3 -> libX11.so.3.1.0°ú °°Àº ¸µÅ©°¡ ÇÊ¿äÇÏ´Ù. ¼ÒÇÁÆ®¿þ¾î°¡ libX11.so -> libX11.so.3.1.0 ÇüÅÂÀÇ ¸µÅ©¸¦ ÇÊ¿ä·Î ÇÒ ¼öµµ ÀÖ´Ù. ¹°·Ð "ºüÁ®ÀÖ´ø" ¸µÅ©¸¦ ¸¸µé·Á¸é, root·Î¼­ ln -s libX11.so.3.1.0 libX11.so ¸í·ÉÀ» ¾´´Ù.

  • ¾î¶² ÆÐÅ°Áö´Â ¶óÀ̺귯¸®¸¦ ÃֽŠ¹öÁ¯À¸·Î ¼³Ä¡Çϵµ·Ï ¿ä±¸Çϱ⵵ ÇÑ´Ù. ¿¹¸¦ µé¾î, StarDivision GmbHÀÇ StarOffice ÆÐÅ°Áö 4.x ¹öÁ¯µéÀº 5.4.4 ÀÌ»óÀÇ ¹öÁ¯À» °¡Áø libc¸¦ ¿ä±¸Çϱâ·Î ¾Ç¸íÀÌ ³ô¾Ò´Ù. ±×º¸´Ù µÚ¿¡ ³ª¿Â StarOffice 5.0µµ »õ·Î¿î glibc 2.1 ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÏ°í ³ª¸é ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. ´ÙÇàÈ÷µµ, ±× ´ÙÀ½¿¡ ³ª¿Â StarOffice 5.1Àº ÀÌ ¹®Á¦¸¦ ÇØ°áÇß´Ù. ¿À·¡µÈ ¹öÁ¯ÀÇ StarOffice¸¦ ½ÇÇà½ÃÅ°·Á¸é, root·Î¼­ ¶óÀ̺귯¸®µéÀ» ÀûÀýÇÑ µð·ºÅ͸®¿¡ º¹»çÇÏ°í, ¿À·¡µÈ ¶óÀ̺귯¸®¸¦ »èÁ¦ÇÑ ´ÙÀ½ ½Éº¼¸¯ ¸µÅ©¸¦ ´Ù½Ã ¼³Á¤ÇØ¾ß ÇÑ´Ù. (ÀÌ¿¡ ´ëÇÑ Á¤º¸°¡ ´õ ÇÊ¿äÇϸé ÃֽŠ¹öÁ¯ÀÇ StarOffice miniHOWTO¸¦ º¸¶ó.) ÁÖÀÇ: ½Ç¼öÇÏ¸é ´ç½ÅÀÇ ½Ã½ºÅÛÀÌ ÀÛµ¿ÇÏÁö ¾Êµµ·Ï ÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î, ÀÌ °úÁ¤¿¡¼­´Â ±Øµµ·Î ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. °»½ÅµÈ ÃֽŠ¶óÀ̺귯¸®´Â ´ë°³ Sunsite¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ÃֽŠ¶óÀ̺귯¸®´Â ´ë°³ Sunsite¿¡¼­ ãÀ» ¼ö ÀÖ´Ù.

7.2 ´Ù¸¥ ¹®Á¦µé

  • ¼³Ä¡µÇ¾î ÀÖ´Â Perl À̳ª ±×¹ÛÀÇ ½© ½ºÅ©¸³Æ®°¡ No such file or directory¶ó´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ ³¾ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì¿¡´Â ÆÄÀÏÀÌ ½ÇÇà °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´ÂÁö Çã°¡±ÇÀ» È®ÀÎÇÏ°í, ½ºÅ©¸³Æ®°¡ È£ÃâÇÏ´Â ½©À̳ª ÇÁ·Î±×·¥ÀÌ ÁöÁ¤µÈ À§Ä¡¿¡ ÀÖ´ÂÁö ÆÄÀÏÀÇ Çì´õ ºÎºÐÀ» È®ÀÎÇϵµ·Ï ÇÑ´Ù. ¿¹¸¦ µé¾î ½ºÅ©¸³Æ®°¡ ¾Æ·¡¿Í °°ÀÌ ½ÃÀÛÇÑ´Ù°í ÇÏÀÚ.
    #!/usr/local/bin/perl
    
    PerlÀÌ »ç½ÇÀº /usr/local/binÀÌ ¾Æ´Ï¶ó /usr/bin µð·ºÅ͸®¿¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é, ÀÌ ½ºÅ©¸³Æ®´Â ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â µ¥¿¡´Â µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ½ºÅ©¸³Æ® ÆÄÀÏÀÇ Çì´õ¸¦ #!/usr/bin/perl·Î ¹Ù²Ù°Å³ª, ln -s /usr/bin/perl /usr/local/bin/perl ·Î Á¤È®ÇÑ µð·ºÅ͸®·ÎÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ Ãß°¡ÇØ ÁÖ¸é µÈ´Ù.

  • ¾î¶² X11 ¼ÒÇÁÆ®¿þ¾î¸¦ ÄÄÆÄÀÏÇÏ·Á¸é Motif ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ´Ù. Ç¥ÁØÀûÀÎ ¸®´ª½º ¹èÆ÷º»¿¡´Â Motif ¶óÀ̺귯¸®°¡ ¾øÀ¸¸ç, ÇöÀç Motif´Â 100-200 ´Þ·¯´Ù. (¸¹Àº °æ¿ì ÇÁ¸®¿þ¾îÀÎ Lesstif µµ ¾µ ¼ö ÀÖÁö¸¸.) ¾î¶² ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇϱâ À§ÇØ Motif°¡ ÇÊ¿äÇѵ¥, Motif ¶óÀ̺귯¸®¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é Á¤ÀûÀ¸·Î ¸µÅ©µÈ ¹ÙÀ̳ʸ®¸¦ ±¸ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Á¤Àû ¸µÅ©´Â ¶óÀ̺귯¸® ·çƾµéÀ» ¹ÙÀ̳ʸ® ÀÚü¿¡ ³Ö´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÏ¸é ¹ÙÀ̳ʸ® ÆÄÀÏÀº ÈξÀ Ä¿ÁöÁö¸¸, ÇØ´ç ¶óÀ̺귯¸®°¡ ¾ø´Â ½Ã½ºÅÛ¿¡¼­µµ ¼öÇà½Ãų ¼ö ÀÖ´Ù.
    
    
    ÄÄÆÄÀÏÀ» À§ÇØ ´ç½Å ½Ã½ºÅÛ¿¡ ¾ø´Â ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ´Ù¸é, ±× ÆÐÅ°Áö´Â ¸µÅ© ¿¡·¯(undefined reference error)¸¦ ÀÏÀ¸Å³ °ÍÀÌ´Ù. ±×·± ¶óÀ̺귯¸®´Â ºñ½Ñ °ÍÀ̰ųª, ´Ù¸¥ ¾î¶² ÀÌÀ¯·Î ã±â ¾î·Á¿î °ÍÀÏ ¼ö ÀÖ´Ù. ±×·± °æ¿ì¿¡´Â Á¤ÀûÀ¸·Î ¸µÅ©µÈ ¹ÙÀ̳ʸ®¸¦ ÆÐÅ°Áö Á¦ÀÛÀÚ³ª ¸®´ª½º »ç¿ëÀÚ ±×·ì¿¡°Ô¼­ ±¸ÇÏ´Â °ÍÀÌ °¡Àå ½¬¿î ÇØ°áÃ¥ÀÌ´Ù.

  • configure ½ºÅ©¸³Æ®¸¦ ¼öÇà½ÃÄ×´õ´Ï ´ç½ÅÀÌ ÄÄÆÄÀÏÇÏ·Á´Â ÆÐÅ°Áö¿Í´Â °ü°è¾ø¾î º¸ÀÌ´Â ÀÌ»óÇÑ MakefileÀ» ¸¸µå´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ°ÍÀº ´ç½ÅÀÇ path ÁßÀÇ ´Ù¸¥ ¾îµò°¡¿¡¼­ ¹ß°ßµÈ ¾û¶×ÇÑ configure¸¦ ¼öÇàÇß´Ù´Â ¶æÀÌ´Ù. ÀÌ·± ÀÏÀ» ÇÇÇÏ·Á¸é Ç×»ó ./configure·Î ½ÇÇàÇϵµ·Ï ÇÏÀÚ.

  • ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷º»Àº ¿¾³¯ÀÇ lib 5¿¡¼­ libc 6 /glibc 2 ¶óÀ̺귯¸®·Î ¹Ù²î¾ú´Ù. ¿¾³¯ ¶óÀ̺귯¸®¿Í ÇÔ²² ÀÛµ¿Çϵµ·Ï ¹Ì¸® ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®¶ó¸é ´ç½ÅÀÌ ¶óÀ̺귯¸®¸¦ ¾÷±×·¹À̵åÇÒ °æ¿ì ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ´Ù. ÇعýÀº ÇÁ·Î±×·¥À» ¼Ò½º¿¡¼­ºÎÅÍ ´Ù½Ã ÄÄÆÄÀÏÇϵçÁö, ¹Ì¸® ÄÄÆÄÀÏµÈ »õ·Î¿î ¹ÙÀ̳ʸ®¸¦ ¾ò´Â °ÍÀÌ´Ù. Ȥ½Ã ´ç½ÅÀÌ ½Ã½ºÅÛÀ» libc 6À¸·Î ¾÷±×·¹À̵åÇÏ´Â ÁßÀÌ°í ÀÌ·± ¹®Á¦¸¦ °æÇèÇß´Ù¸é Eric GreenÀÇ Glibc 2 HOWTO¸¦ Âü°íÇϵµ·Ï Ç϶ó.
    
    
    glibc ¹öÁ¯µé »çÀÌ¿¡´Â ¾à°£ÀÇ È£È¯µÇÁö ¾Ê´Â Á¡ÀÌ ÀÖ´Ù´Â °Í¿¡ ÁÖÀÇÇ϶ó. ÀÌ ¶§¹®¿¡ glibc 2.1¿¡¼­ ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®´Â glibc 2.0°ú´Â ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù°Å³ª ±× ¹Ý´ëÀÇ °æ¿ì°¡ ÀÖÀ» ¼ö ÀÖ´Ù.

  • ¶§·Î´Â Makefile ¾ÈÀÇ ÄÄÆÄÀÏ ¿É¼Ç¿¡¼­ -ansi ¿É¼ÇÀ» Á¦°ÅÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ·¸°Ô Çϸé gcc°¡ °®°í ÀÖ´Â ANSI ÀÌ¿ÜÀÇ Æ¯Â¡µéÀ» È°¼ºÈ­½ÃÅ°¸ç, ÀÌ·± Ư¡µéÀ» ¿ä±¸ÇÏ´Â ÆÐÅ°ÁöµéÀ» ÄÄÆÄÀÏÇÒ ¼ö ÀÖ°Ô µÈ´Ù. (ÀÌ »ç½ÇÀ» ÁöÀûÇØ ÁØ Sebastien Blondeel¿¡°Ô °¨»çÇÑ´Ù.)

  • ¾î¶² ÇÁ·Î±×·¥µéÀº root ±ÇÇÑÀ¸·Î ½ÇÇàµÇµµ·Ï Çϱâ À§ÇØ setuid root¸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô ÇÏ´Â ¸í·ÉÀº root·Î¼­ chmod u+s ÆÄÀÏÀ̸§ ÇÏ´Â °ÍÀÌ´Ù. (ÇÁ·Î±×·¥ÀÌ ±× ÀÌÀü¿¡ ¹Ì¸® root ¼ÒÀ¯·Î µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù´Â Á¡¿¡ ÁÖÀÇÇ϶ó.) ÀÌ ¸í·ÉÀº ÆÄÀÏ Çã°¡±Ç ³»ÀÇ setuid ºñÆ®¸¦ ¼³Á¤ÇÏ´Â ±â´ÉÀ» ÇÑ´Ù. ÀÌ ¹®Á¦´Â ÇÁ·Î±×·¥ÀÌ ¸ðµ©À̳ª cd-rom µå¶óÀÌºê °°Àº ½Ã½ºÅÛ Çϵå¿þ¾î¿¡ Á¢±ÙÇϰųª, ¾î´À ƯÈ÷ ¾Ç¸í³ôÀº ¿¡¹Ä·¹ÀÌ¼Ç ÆÐÅ°Áö ó·³ ÄÜ¼Ö ¸ðµå¿¡¼­ SVGA ¶óÀ̺귯¸®¸¦ È£ÃâÇÒ °æ¿ì ÀϾ´Ù. ÇÁ·Î±×·¥ÀÌ root·Î¼­´Â ½ÇÇàµÇÁö¸¸, ÀÏ¹Ý »ç¿ëÀÚ¿¡°Ô´Â access denied ¿¡·¯ ¸Þ½ÃÁö¸¦ ³»º¸³½´Ù¸é ÀÌ Çã°¡±Ç ¹®Á¦¸¦ ÀǽÉÇغ¸±â ¹Ù¶õ´Ù.

    ÁÖÀÇ: root·ÎÀÇ setuid¸¦ °¡Áø ÇÁ·Î±×·¥Àº ½Ã½ºÅÛ¿¡ º¸¾È »óÀÇ À§Çè ¿äÀÎÀÌ µÉ ¼ö ÀÖ´Ù. ÀÌ·± ÇÁ·Î±×·¥Àº rootÀÇ ±ÇÇÑÀ» °®°í ½ÇÇàµÇ¸ç µû¶ó¼­ ½É°¢ÇÑ ¼Õ»óÀ» ³¢Ä¥ ÀáÀç·ÂÀ» °®°í ÀÖ´Ù. µû¶ó¼­ setuid ºñÆ®¸¦ ÁÖ±â Àü¿¡ ÇÁ·Î±×·¥ÀÌ ¹«¾ùÀ» ÇÏ´ÂÁö, °¡´ÉÇÏ´Ù¸é ¼Ò½º¸¦ »ìÆ캽À¸·Î½á, È®ÀÎÇϵµ·Ï Ç϶ó.

7.3 º¯°æ(tweaking)°ú ¹Ì¼¼ÇÑ Á¶Á¤(fine tuning)

´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ °¡Àå ÁÁÀº ÄÄÆÄÀÏ ¿É¼ÇµéÀÌ ¼³Á¤µÇ¾î ÀÖ´ÂÁö È®ÀÎÇϱâ À§Çؼ­ MakefileÀ» µé¿©´Ùº¸°í ½ÍÀ» ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î -O2 ¿É¼ÇÀ» ÁÖ¸é ÃÖ°í ¼öÁØÀÇ ÃÖÀûÈ­¸¦ ¼±ÅÃÇÏ°Ô µÇ°í, -fomit-frame-pointer ¿É¼ÇÀº (µð¹ö±ëÀº ºÒ°¡´ÉÇÏ°Ô µÇÁö¸¸) ¹ÙÀ̳ʸ®¸¦ ´õ ÀÛ°Ô ¸¸µé¾î ÁØ´Ù. ÀÚ½ÅÀÌ ¹«¾ùÀ» ÇÏ°í ÀÖ´ÂÁö ¸ð¸¥´Ù¸é ÀÌ·± °ÍµéÀ» °Çµå¸®Áö ¾Êµµ·Ï Ç϶ó. ±×¸®°í ¾î¶² °æ¿ì¿¡µç ½ÃÇè»ï¾Æ ±×³É ÄÄÆÄÀÏÇؼ­ Á¦´ë·Î µ¹¾Æ°¡´Â °ÍÀ» È®ÀÎÇÑ ´ÙÀ½¿¡ Çϵµ·Ï Ç϶ó.

7.4 ´õ µµ¿òÀÌ ÇÊ¿äÇÒ ¶§ °¡ º¼ °÷

³» °æÇè¿¡ ÀÇÇϸé, ÀÀ¿ë ÇÁ·Î±×·¥ °¡¿îµ¥ ±×´ë·Î ¹®Á¦¾øÀÌ ÄÄÆÄÀϵǴ °ÍÀº ¾à 25% Á¤µµ¿´´Ù. 50% ³²ÁþÀº °£´ÜÇÏ°Ç ²ûÂïÇÒ Á¤µµ°Ç ³ë·ÂÇϸé ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù. Áï »ó´ç¼öÀÇ ÆÐÅ°ÁöµéÀº ¾Æ¹«¸® Çصµ ÄÄÆÄÀÏÇÒ ¼ö°¡ ¾ø´Ù´Â ¶æÀÌ´Ù. ±×·¸´Ù°í Çصµ, ÀÌ ÆÐÅ°ÁöµéÀÇ ÀÎÅÚ ELF ¹× a.out ¹ÙÀ̳ʸ®¸¦ Sunsite³ª TSX-11 archive »çÀÌÆ®¿¡¼­ ãÀ» °¡´É¼ºµµ ÀÖ´Ù. ·¹µå ÇÞ°ú µ¥ºñ¾Èµµ ÈçÈ÷ ¾²ÀÌ´Â ¸®´ª½º ¼ÒÇÁÆ®¿þ¾îÀÇ ´ëºÎºÐÀÌ ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ®·Î ÀúÀåµÇ¾î ÀÖ´Ù. ȤÀº ¼ÒÇÁÆ®¿þ¾îÀÇ Á¦ÀÛÀÚ°¡ ´ç½ÅÀÇ Æ¯º°ÇÑ ÃëÇâÀÇ ÄÄÇ»Å͸¦ À§ÇØ ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®¸¦ Á¦°øÇØ ÁÙ ¼öµµ ÀÖ´Ù.

¹Ì¸® ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®¸¦ ¾ò¾ú´Ù¸é, ´ç½ÅÀÇ ½Ã½ºÅÛ°úÀÇ È£È¯¼ºÀ» È®ÀÎÇϱâ À§ÇØ ´ÙÀ½ »çÇ×µéÀ» Á¡°ËÇØ¾ß ÇÑ´Ù.

  • ¹ÙÀ̳ʸ®°¡ ´ç½ÅÀÇ Çϵå¿þ¾î(¿¹¸¦ µé¾î ÀÎÅÚ x86)¿¡¼­ ÀÛµ¿ÇØ¾ß ÇÑ´Ù.
  • ¹ÙÀ̳ʸ®°¡ ´ç½ÅÀÇ Ä¿³Î°ú ȣȯµÇ´Â °ÍÀ̾î¾ß ÇÑ´Ù.(a.out À̳ª elf)
  • ´ç½ÅÀÇ ¶óÀ̺귯¸®°¡ ÃÖ½ÅÀÇ °ÍÀ̾î¾ß ÇÑ´Ù.
  • ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ÀûÀýÇÑ ¼³Ä¡ À¯Æ¿¸®Æ¼(rpmÀ̳ª deb)°¡ ÀÖ¾î¾ß ÇÑ´Ù.

¸¸¾à ¸ðµç ½Ãµµ°¡ ½ÇÆÐÇÑ´Ù¸é, comp.os.linux.x³ª comp.os.linux.development °°Àº ÀûÀýÇÑ ´º½º±×·ì¿¡¼­ µµ¿òÀ» ãÀ» ¼ö ÀÖ´Ù.

Ȥ½Ã ¸ðµç ³ë·ÂÀÌ ¼öÆ÷·Î µ¹¾Æ°¬´Ù°í ÇÏ´õ¶óµµ, ÃÖ¼ÒÇÑ ´ç½ÅÀº ÃÖ¼±À» ´ÙÇßÀ¸¸ç ±× °úÁ¤¿¡¼­ ¸¹Àº °ÍÀ» ¹è¿üÀ» Å×´Ï ³Ê¹« ³«½ÉÇÒ ÇÊ¿ä´Â ¾ø´Ù.

8. ¸¶Áö¸· ´Ü°è

(.bashrc³ª .cshrc ¾È¿¡) ¾î¶² ȯ°æ º¯¼ö¸¦ ¼³Á¤ÇØ¾ß ÇÏ´ÂÁö, ¶Ç .Xdefaults¿Í .Xresources ÆÄÀÏÀ» °íÃÄ¾ß ÇÏ´ÂÁö °áÁ¤Çϱâ À§ÇØ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°ÁöÀÇ ¹®¼­¸¦ ÀÐ¾î º¸¾Æ¶ó.

ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±âº» ¼³Á¤ ÆÄÀÏÀÌ ÀÖÀ» ¼öµµ ÀÖ´Ù. ¿ø·¡ÀÇ ¹èÆ÷º»ÀÌ Xfoo ¶ó¸é º¸Åë Xfoo.ad¶ó´Â À̸§ÀÌ´Ù. ÀÌ·± ÆÄÀÏÀÌ ÀÖÀ¸¸é ´ç½ÅÀÇ ÄÄÇ»ÅÍ¿¡ ¸Âµµ·Ï Xfoo.ad ÆÄÀÏÀ» ÆíÁýÇؼ­, Xfoo ·Î ¹Ù²Û ´ÙÀ½(mv), root·Î¼­ /usr/lib/X11/app-defaults µð·ºÅ͸®¿¡ ¼³Ä¡Çϵµ·Ï ÇÑ´Ù. ÀÌ·¸°Ô ÇÏÁö ¾ÊÀ¸¸é ¼ÒÇÁÆ®¿þ¾î°¡ ÀÌ»óÇÏ°Ô ÀÛµ¿Çϰųª ¾Æ¿¹ ÀÛµ¿ÇÏÁö ¾Ê°Ô µÉ ¼ö ÀÖ´Ù.

´ëºÎºÐÀÇ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¿¡´Â Çϳª ÀÌ»óÀÇ ¹Ì¸® Æ÷¸ËµÈ man ÆäÀÌÁö°¡ ÀÖ´Ù. root·Î¼­ Xfoo.man ÆÄÀÏÀ» /usr/man, /usr/local/man, /usr/X11R6/man ÀÇ Àû´çÇÑ µð·ºÅ͸®(man1 - man9)¿¡ º¹»çÇÏ°í, ±×¿¡ ¸ÂÃç À̸§À» ¹Ù²Ù¾î ÁØ´Ù. ¿¹¸¦ µé¾î Xfoo.man À» /usr/man/man4¿¡ µÎ¾ú´Ù¸é, Xfoo.4 ·Î À̸§À» °íÃÄ¾ß ÇÑ´Ù. (mv Xfoo.man Xfoo.4) °ü·Ê¿¡ µû¸£¸é, »ç¿ëÀÚ°¡ ¾²´Â ±âº» ¸í·ÉÀº man1, °ÔÀÓÀº man6, °ü¸®¿ë ÆÐÅ°Áö´Â man8ÀÌ´Ù. (ÀÚ¼¼ÇÑ °ÍÀº man docsÀ» º¸¶ó.) ¹°·Ð ¿øÇÑ´Ù¸é ´ç½Å ½Ã½ºÅÛ¿¡¼­´Â ÀÌ¿Í ´Ù¸£°Ô ÇÒ ¼öµµ ÀÖ´Ù.

¾î¶² ÆÐÅ°Áö¿¡´Â Makefile¿¡ install ¿É¼ÇÀÌ ºüÁ® À־, ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ÀûÀýÇÑ ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¼³Ä¡ÇÏÁö ¾Ê´Â´Ù. ÀÌ·± °æ¿ì¿¡´Â ¼öµ¿À¸·Î /usr/bin, /usr/local/bin, /usr/X11R6/bin µîÀÇ ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¹ÙÀ̳ʸ®µéÀ» º¹»çÇؼ­ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù. ¹°·Ð root·Î¼­. ¸®´ª½º ¹èÆ÷º»ÀÌ ±âº»À¸·Î ¼³Ä¡ÇÏÁö ¾Ê´Â ¹ÙÀ̳ʸ®´Â /usr/local/binÀÌ ±ÇÀåµÈ´Ù´Â Á¡À» ¿°µÎ¿¡ µÎÀÚ.

´ëºÎºÐÀÇ °æ¿ì, À§ÀÇ ÀýÂ÷µéÀÇ ÀϺΠȤÀº ÀüºÎ°¡ make install·Î ÀÚµ¿ÀûÀ¸·Î 󸮵ȴÙ. ÆÐÅ°Áö¿¡ µû¶ó make install.man À̳ª make install_man ÀÌ ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ·± °æ¿ì¿¡´Â README³ª INSTALL ÆÄÀÏ¿¡ ¸í½ÃµÇ¾î ÀÖÀ» °ÍÀÌ´Ù.

9. ù¹ø° ¿¹: Xscrabble

Matt ChapmanÀÇ XscrabbleÀ̶ó´Â ÇÁ·Î±×·¥ÀÌ ÀÖÀ¸¸é Àç¹ÌÀÖ°Ú´Ù°í »ý°¢Çß´Ù. ³ª´Â ÀÚÁÖ ScrabbleTM¸¦ µè±â ¶§¹®ÀÌ´Ù. ³ª´Â ÀÌ ÇÁ·Î±×·¥À» ´Ù¿î¹Þ¾Æ¼­ ¾ÐÃàÀ» Ç®°í, README ÆÄÀÏ¿¡ ÀÖ´Â ¾Æ·¡ÀÇ ¼ø¼­´ë·Î ÄÄÆÄÀÏÇß´Ù.

     xmkmf
     make Makefiles
     make includes
     make

¹°·Ð ÀÌ·¸°Ô Çؼ­ Á¦´ë·Î µÈ °Ç ¾Æ´ÏÁö¸¸...

gcc -o xscrab -O2 -O -L/usr/X11R6/lib 
init.o xinit.o misc.o moves.o cmove.o main.o xutils.o mess.o popup.o
widgets.o display.o user.o CircPerc.o
-lXaw -lXmu -lXExExt -lXext -lX11 -lXt -lSM -lICE -lXExExt -lXext -lX11
-lXpm -L../Xc -lXc

BarGraf.o(.text+0xe7): undefined reference to `XtAddConverter'
BarGraf.o(.text+0x29a): undefined reference to `XSetClipMask'
BarGraf.o(.text+0x2ff): undefined reference to `XSetClipRectangles'
BarGraf.o(.text+0x375): undefined reference to `XDrawString'
BarGraf.o(.text+0x3e7): undefined reference to `XDrawLine'
etc.
etc.
etc...

³ª´Â ÀÌ¿¡ ´ëÇØ comp.os.linux.x ´º½º±×·ì¿¡ ¹°¾îº¸¾Ò°í, ¾î¶² »ç¶÷ÀÌ Xt, Xaw, Xmu, X11 ¶óÀ̺귯¸®°¡ ¸µÅ© ´Ü°è¿¡¼­ ¹ß°ßµÇÁö ¾Ê¾ÒÀ½ÀÌ Æ²¸²¾ø´Ù°í Ä£ÀýÇÏ°Ô °¡¸£ÃÄ ÁÖ¾ú´Ù. Èì...

ÆÐÅ°Áö¿¡´Â µÎ °³ÀÇ ÁÖµÈ MakefileÀÌ ÀÖ¾ú°í, ±× Áß src µð·ºÅ͸®¿¡ ÀÖ´Â °ÍÀÌ ³» ÁÖÀǸ¦ ²ø¾ú´Ù. Makefile ³»ÀÇ ÇÑ ÁÙÀÌ LOCAL_LIBSÀ» ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ°í ÀÖ¾ú´Ù. LOCAL_LIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) ¸µÅ©°¡ ãÁö ¸øÇÑ ¶óÀ̺귯¸®µé·ÎÀÇ ÂüÁ¶°¡ ¿©±â ÀÖ¾ú´Ù.

LOCAL_LIBS ·ÎÀÇ ´ÙÀ½¹ø ÂüÁ¶¸¦ ã´Ù°¡, ³ª´Â ±× MakefileÀÇ 495 Çà¿¡¼­ ´ÙÀ½À» ¹ß°ßÇß´Ù.

      $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBS) $(LDLIBS)
$(EXTRA_LOAD_FLAGS)

ÀÌÁ¦ ÀÌ LDLIBS´Â ¹«¾ùÀ̾úÀ»±î?

      LDLIBS = $(LDPOSTLIB) $(THREADS_LIBS) $(SYS_LIBRARIES)
$(EXTRA_LIBRARIES)

SYS_LIBRARIES Àº ´ÙÀ½°ú °°¾Ò´Ù.

 SYS_LIBRARIES = -lXpm -L../Xc -lXc
±×·¸´Ù! ¿©±â ãÀ» ¼ö ¾ø´ø ¶óÀ̺귯¸®µéÀÌ ÀÖ¾ú´Ù.

¸µÄ¿°¡ LOCAL_LIBS Àü¿¡ LDLIBS¸¦ º¸¾Æ¾ß ÇÏ´Â °ÍÀÏ °¡´É¼ºÀÌ ÀÖ¾ú´Ù. µû¶ó¼­ óÀ½À¸·Î ½ÃµµÇØ º¼ ÀÏÀº 495 ÇàÀÇ $(LOCAL_LIBS)¿Í $(LDLIBS)¸¦ ¹Ù²ã¼­ ¾Æ·¡¿Í °°ÀÌ ÇÏ´Â °ÍÀ̾ú´Ù.

        $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LDLIBS) $(LOCAL_LIBS)
$(EXTRA_LOAD_FLAGS)                          ^^^^^^^^^^^^^^^^^^^^^^^

³ª´Â À§¿Í °°ÀÌ ¹Ù²ã¼­ ´Ù½Ã make¸¦ ½ÇÇàÇغ¸¾Ò°í, À̹ø¿¡´Â Á¦´ë·Î ½ÇÇàµÇ¾ú´Ù. ¹°·Ð XscrabbleÀº ¾ÆÁ÷ µð·ºÅ͸®ÀÇ À̸§À» ¹Ù²Û´Ù°Å³ª ¼Ò½º ÆÄÀÏ ÁßÀÇ Çϳª¿¡ ÀÖ´Â ¸î¸î ¼±¾ð¹®À» ÁÖ¼® ó¸®ÇÏ´Â µî, ¼¼ºÎÀûÀÎ Á¶Á¤°ú º¯°æÀÌ ÇÊ¿äÇßÁö¸¸, ÀÌ ÆÐÅ°Áö´Â ±× µÚ ¿À·§µ¿¾È ³ª¸¦ Áñ°Ì°Ô ÇØÁÖ¾ú´Ù.

[»õ ¹öÁ¯ÀÇ XscrabbleÀº ÀÌÁ¦ rpm Çü½ÄÀ¸·Î ±¸ÇÒ ¼ö ÀÖÀ¸¸ç, ¹®Á¦¾øÀÌ ¼³Ä¡µÈ´Ù.]

Xscrabble¸¦ ¾òÀ¸·Á¸é Matt Chapman¿¡°Ô e-mailÀ» Çϰųª, ±×ÀÇ È¨ ÆäÀÌÁö¿¡¼­ ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù.

       ScrabbleÀº Milton Bradley Co., Inc.ÀÇ µî·ÏµÈ »óÇ¥ÀÌ´Ù.

10. µÎ¹ø° ¿¹: Xloadimage

ÀÌ ¿¹ÀÇ ¹®Á¦ ù¹ø°º¸´Ù ½±´Ù. xloadimage ÇÁ·Î±×·¥À» ³» ±×·¡ÇÈ µµ±¸ ¸ðÀ½¿¡ Ãß°¡Çϸé ÁÁ°Ú´Ù°í »ý°¢Çß´Ù. ³ª´Â xloadi41.gz ÆÄÀÏÀ» Mui¿Í Quercia°¡ ¾´ X User Tools¶ó´Â ÈǸ¢ÇÑ Ã¥ÀÇ ºÎ·Ï CD¿¡ ÀÖ´Â ¼Ò½º µð·ºÅ͸®¿¡¼­ Á÷Á¢ º¹»çÇß´Ù. ±â´ëÇÑ ´ë·Î, tar xzvf·Î ÆÄÀÏÀ» Ç® ¼ö ÀÖ¾ú´Ù. ÇÏÁö¸¸ make´Â °í¾àÇØ º¸ÀÌ´Â ¿¡·¯¸¦ ³»°í´Â Áß´ÜµÇ¾î ¹ö·È´Ù.

gcc -c -O -fstrength-reduce -finline-functions -fforce-mem
-fforce-addr -DSYSV  -I/usr/X11R6/include
-DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\" mcidas.c

In file included from /usr/include/stdlib.h:32,
                 from image.h:23,
                 from xloadimage.h:15,
                 from mcidas.c:7:
/usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215:
conflicting types for `wchar_t'
/usr/X11R6/include/X11/Xlib.h:74: previous declaration of
`wchar_t'
make[1]: *** [mcidas.o] Error 1
make[1]: Leaving directory
`/home/thegrendel/tst/xloadimage.4.1'
make: *** [default] Error 2

¿¡·¯ ¸Þ½ÃÁö¿¡ °áÁ¤ÀûÀÎ ´Ü¼­°¡ µé¾îÀÖ´Ù.

image.h ÆÄÀÏÀÇ 23° ÁÙÀ» º¸¸é...

       #include <stdlib.h>

Aha, xloadimageÀÇ ¼Ò½º ¾îµò°¡¿¡¼­ wchar_t°¡ Ç¥ÁØ include ÆÄÀÏÀÎ stdlib.h¿¡¼­ Á¤ÀÇµÈ °ÍÀ¸·Î ´Ù½Ã Á¤ÀǵǾú´Ù. ¸ÕÀú stdlib.h´Â Æ÷ÇÔ½Ãų ÇÊ¿ä°¡ ¾øÀ» µí ÇϹǷΠimage.hÀÇ 23° ÁÙÀ» ÁÖ¼®¹®À¸·Î ¸¸µé¾î º¸ÀÚ.

ÀÌÁ¦ ¼³Ä¡ °úÁ¤Àº ¾Æ¹«·± Ä¡¸íÀûÀÎ ¿¡·¯ ¾øÀÌ ÁøÇàµÈ´Ù. xloadimage ÆÐÅ°Áö´Â Áö±Ý Á¤È®È÷ ÀÛµ¿ÇÏ°í ÀÖ´Ù.

11. ¼¼¹ø° ¿¹: Fortune

ÀÌ ¿¹´Â C ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ Áö½ÄÀÌ Á¶±Ý ÇÊ¿äÇÏ´Ù. À¯´Ð½º³ª ¸®´ª½º¿ë ¼ÒÇÁÆ®¿þ¾îÀÇ ¸¹Àº ºÎºÐÀÌ C·Î ¾²¿©Á® ÀÖÀ¸¹Ç·Î, ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡¿¡ ´ëÇؼ­ ÁøÁöÇÑ »ç¶÷À̶ó¸é ÃÖ¼ÒÇÑ Á¶±ÝÀº C¸¦ ¹è¿öµÎ´Â °ÍÀÌ ÁÁ´Ù.

¾Ç¸í³ôÀº fortune ÇÁ·Î±×·¥Àº ¸®´ª½º°¡ ¶ã ¶§¸¶´Ù "fortune cookie"¶ó°í ºÒ¸®´Â Àç¹ÌÀÖ´Â °Ý¾ðÀ» º¸¿©ÁØ´Ù. ºÒÇàÇÏ°Ôµµ(unfortunately, ¹ßÀ½°®°í ³ó´ãÇÏ´Â °Å´Ù), 2.0.30 Ä¿³ÎÀ» »ç¿ëÇÏ´Â ·¹µå ÇÞ ¹èÆ÷ÆÇ¿¡¼­ fortuneÀ» ÄÄÆÄÀÏÇÏ·Á°í ÇÏ¸é ½É°¢ÇÑ ¿¡·¯°¡ »ý±ä´Ù.

~/fortune# make all


gcc -O2 -Wall -fomit-frame-pointer -pipe   -c fortune.c -o
fortune.o
fortune.c: In function `add_dir':
fortune.c:551: structure has no member named `d_namlen'
fortune.c:553: structure has no member named `d_namlen'
make[1]: *** [fortune.o] Error 1
make[1]: Leaving directory `/home/thegrendel/for/fortune/fortune'
make: *** [fortune-bin] Error 2

fortune.c¸¦ »ìÆ캸¸é, ÇØ´çµÇ´Â ÁÙÀº ´ÙÀ½°ú °°´Ù.

   if (dirent->d_namlen == 0)
            continue;
        name = copy(dirent->d_name, dirent->d_namlen);

¿ì¸®´Â dirent¶ó´Â ±¸Á¶Ã¼¸¦ ã¾Æ¾ß ÇÏÁö¸¸, ÀÌ ±¸Á¶Ã¼´Â fortune.c ¾È¿¡ ¼±¾ðµÇ¾î ÀÖÁö ¾ÊÀ¸¸ç, grep dirent¸¦ ÇغÁµµ ´Ù¸¥ ¼Ò½º ÆÄÀϵ鿡¼­µµ ãÀ» ¼ö ¾ø´Ù. ÇÏÁö¸¸, fortune.cÀÇ Á¦ÀÏ À§¿¡ ´ÙÀ½°ú °°Àº ÁÙÀÌ ÀÖ´Ù.

#include <dirent.h>

ÀÌ°ÍÀº ½Ã½ºÅÛ ¶óÀ̺귯¸®ÀÇ include ÆÄÀÏ·Î º¸À̹ǷÎ, dirent.h¸¦ ãÀ» ³í¸®ÀûÀÎ À§Ä¡´Â /usr/include ´Ù. ½ÇÁ¦·Î /usr/include¿¡´Â dirent.h ÆÄÀÏÀÌ ÀÖÁö¸¸, ±× ÆÄÀÏÀº dirent ±¸Á¶Ã¼ÀÇ Á¤ÀǸ¦ Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê´Ù. ÀÌ ÆÄÀÏÀº ±× ´ë½Å ¶Ç´Ù¸¥ dirent.h ÆÄÀÏÀ» ÂüÁ¶ÇÏ°í ÀÖ´Ù.

#include <linux/dirent.h>

¸¶Ä§³», /usr/include/linux/dirent.h¿¡¼­, ¹Ù¶ó´ø ±¸Á¶Ã¼ ¼±¾ðÀ» ã¾Ò´Ù.

struct dirent {
        long            d_ino;
        __kernel_off_t  d_off;
        unsigned short  d_reclen;
        char            d_name[256]; /* We must not include limits.h! */
};

¹°·Ð ÀÌ ±¸Á¶Ã¼ ¼±¾ðÀº d_namelen À» Æ÷ÇÔÇÏ°í ÀÖÁö ¾ÊÁö¸¸, ±×¿¡ ÇØ´çµÉ ¸¸ÇÑ "Èĺ¸"´Â µÎ °³ ÀÖ´Ù. °¡Àå ±×·² µí ÇÑ °ÍÀº d_reclenÀε¥, ÀÌ ±¸Á¶Ã¼ ¸â¹ö´Â ¹«¾ùÀΰ¡ÀÇ ±æÀ̸¦ ³ªÅ¸³»´Â °Í °°°í ¶Ç short integer ÇüÀ̱⠶§¹®ÀÌ´Ù. ¶Ç ÇϳªÀÇ °¡´É¼ºÀº, d_inoÀε¥ ±× À̸§°ú ÀÚ·áÇüÀ¸·Î º¸¾Æ inodeÀÇ ¹øÈ£ÀÏ °Í °°´Ù. ¿ì¸®´Â ¾Æ¸¶µµ "directory entry" ±¸Á¶Ã¼¸¦ ´Ù·ç°í ÀÖ´Â µí ÇÏ´Ù. ±× ¿ø¼ÒµéÀº ÆÄÀÏÀÇ ¼Ó¼º, ±× À̸§, inode, ±æÀÌ(ºí·° ¼ö)¸¦ ³ªÅ¸³¾ °ÍÀÌ´Ù. À̰͵µ (d_reclen °ú d_ino ¿¡ ´ëÇÑ) ¿ì¸®ÀÇ ÃßÃøÀ» È®ÀÎÇØ ÁÖ´Â °ÍÀ¸·Î º¸ÀδÙ.

fortune.c ÆÄÀÏÀ» ÆíÁýÇؼ­, 551°ÁÙ°ú 553°ÁÙÀÇ d_namelen¿¡ ´ëÇÑ ÂüÁ¶¸¦ d_reclen¿¡ ´ëÇÑ ÂüÁ¶·Î °íÄ¡µµ·Ï ÇÏÀÚ. ´Ù½Ã make all À» ÇØ º¸ÀÚ. ¼º°øÀÌ´Ù. ¿¡·¯ ¾øÀÌ ÄÄÆÄÀϵǾú´Ù. ¿ì¸®´Â ÀÌÁ¦ fortuneÀ¸·ÎºÎÅÍ ½Ñ °ª¿¡ ½º¸±À» ´À³¥ ¼ö ÀÖ´Ù.

12. ³×¹ø° ¿¹: Hearts

À̹ø¿¡´Â 80³â´ë¿¡ Bob Ankeney°¡ À¯´Ð½º ½Ã½ºÅÛÀ» À§ÇØ ÀÛ¼ºÇß°í, 1992³â¿¡ Mike YangÀÌ °íÃÆÀ¸¸ç, Áö±ÝÀº Jonathan Badger°¡ °ü¸®ÇÏ°í ÀÖ´Â °í»ö⿬ÇÑ ¿¾ °ÔÀÓÀÎ Hearts´Ù. ±× ¼±Á¶´Â Oregon ¼ÒÇÁÆ®¿þ¾îÀÇ Don Backus°¡ ¾´ ÈξÀ ´õ ¿À·¡µÈ ÆĽºÄ® ÇÁ·Î±×·¥À¸·Î ³ªÁß¿¡ Jeff HemmerlingÀÌ °³Á¤Çß´Ù. ¿ø·¡´Â ´ÙÁß »ç¿ëÀÚ Å¬¶óÀ̾ðÆ®¸¦ ¿°µÎ¿¡ µÐ °ÍÀÌÁö¸¸, ÄÄÇ»Å͸¦ »ó´ë·Î ÇÑ ´ÜÀÏ »ç¿ëÀÚ ¸ðµåµµ °¡´ÉÇÏ´Ù. ¼¼·ÃµÈ ¸éÀÌ ºÎÁ·ÇÏ°í ÄÄÇ»ÅÍ »ó´ë°¡ º°·Î °­ÇÏÁö ¾ÊÁö¸¸, ±×·¡ÇÈÀº ÈǸ¢ÇÏ´Ù. À¯´Ð½º¿Í ¸®´ª½º¿¡¼­ °¡´ÉÇÑ °ÍÀº Áö±ÝÀ¸·Î¼­µµ Ä£ÀýÇÑ Hearts °ÔÀÓ ¹Û¿¡´Â ¾ø´Â µí ÇÏ´Ù.

±× ³ªÀÌ¿Í Ç÷Åë ¶§¹®¿¡, ÀÌ ÆÐÅ°Áö´Â ƯÈ÷ ¸®´ª½º ½Ã½ºÅÛ¿¡ ¼³Ä¡Çϱ⠾î·Æ´Ù. ¼³Ä¡¸¦ À§Çؼ­´Â ±æ°í °ñÄ¡¾ÆÇ ÀÏ·ÃÀÇ ÆÛÁñÀ» Ç®¾î¾ß ÇÑ´Ù. ÀÌ °úÁ¤Àº Àγ»¿Í °áÀÇÀÇ ÈÆ·ÃÀ̶ó ÇÒ ¼ö ÀÖ´Ù.

½ÃÀÛÇϱâ Àü¿¡, motif ³ª lesstif ¶óÀ̺귯¸®°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö È®ÀÎÇϵµ·Ï Ç϶ó.

xmkmf

make

client.c: In function `read_card':
client.c:430: `_tty' undeclared (first use in this function)
client.c:430: (Each undeclared identifier is reported only once
client.c:430: for each function it appears in.)
client.c: In function `scan':
client.c:685: `_tty' undeclared (first use in this function)
make: *** [client.o] Error 1

client.c¿¡ ¹üÀÎÀÌ ÀÖ´Ù.

#ifndef SYSV
        (buf[2] != _tty.sg_erase) && (buf[2] != _tty.sg_kill)) {
 #else
        (buf[2] != CERASE) && (buf[2] != CKILL)) {
#endif

client.cÀÇ 39° ÁÙ¿¡

#define SYSV
¸¦ ´õÇÑ´Ù. ÀÌ·¸°Ô Çϸé _tty·ÎÀÇ ÂüÁ¶¸¦ ¹«½ÃÇÑ´Ù.

make

client.c:41: sys/termio.h: No such file or directory
make: *** [client.o] Error 1

¸®´ª½º ½Ã½ºÅÛ¿¡¼­´Â termio.h ÆÄÀÏÀÌ /usr/include ¿¡ ÀÖ´Ù. ´õ ¿À·¡µÈ À¯´Ð½º¿¡¼­´Â /usr/include/sys¿¡ ÀÖ´Ù. µû¶ó¼­, clinet.cÀÇ 41° ÁÙÀ»

#include <sys/termio.h>
¿¡¼­
#include <termio.h>
·Î ¹Ù²Û´Ù.

make

gcc -o hearts -g      -L/usr/X11R6/lib client.o hearts.o select.o connect.o
sockio.o start_dist.o  -lcurses -ltermlib       
/usr/bin/ld: cannot open -ltermlib: No such file or directory
collect2: ld returned 1 exit status
make: *** [hearts] Error 1

¿äÁòÀÇ ¸®´ª½º ¹èÆ÷º»Àº ±¸½ÄÀÇ termlib µ¥ÀÌÅͺ£À̽º º¸´Ù´Â terminfo³ª termcapÀ» »ç¿ëÇÑ´Ù.

MakefileÀÇ 655° ÁÙ,

CURSES_LIBRARIES = -lcurses -ltermlib
¸¦

CURSES_LIBRARIES = -lcurses -ltermcap
·Î ¹Ù²Û´Ù.

make

gcc -o xmhearts -g      -L/usr/X11R6/lib xmclient.o hearts.o select.o
connect.o sockio.o start_dist.o gfx.o  -lXm_s -lXt -lSM -lICE -lXext -lX11
-lPW       
/usr/bin/ld: cannot open -lXm_s: No such file or directory
collect2: ld returned 1 exit status

lesstifÀÇ ÁÖ ¶óÀ̺귯¸®´Â libXm_s°¡ ¾Æ´Ï¶ó libXmÀÌ´Ù. µû¶ó¼­ Makefile¸¦ °íÄ£´Ù.

653° ÁÙ:

XMLIB = -lXm_s $(XTOOLLIB) $(XLIB) -lPW

´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

XMLIB = -lXm $(XTOOLLIB) $(XLIB) -lPW

make

gcc -o xmhearts -g      -L/usr/X11R6/lib xmclient.o hearts.o select.o
connect.o sockio.o start_dist.o gfx.o  -lXm -lXt -lSM -lICE -lXext -lX11 -lPW       
/usr/bin/ld: cannot open -lPW: No such file or directory
collect2: ld returned 1 exit status
make: *** [xmhearts] Error 1

´Ã ÇÏ´ø ÀǽÉÀ» Çغ¸ÀÚ

PW¶óÀ̺귯¸®°¡ ¾ø´Ù. Makefile¸¦ °íÄ£´Ù.

653° ÁÙ,

XMLIB = -lXm $(XTOOLLIB) $(XLIB) -lPW

¸¦ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

XMLIB = -lXm $(XTOOLLIB) $(XLIB) -lPEX5
(The PEX5 lib comes closest to PW.)

make

rm -f xmhearts
gcc -o xmhearts -g      -L/usr/X11R6/lib xmclient.o hearts.o select.o
connect.o sockio.o start_dist.o gfx.o  -lXm -lXt -lSM -lICE -lXext -lX11 -lPEX5       

µåµð¾î make¿¡ ¼º°øÇß´Ù. (¸¸¼¼!)

¼³Ä¡:

root·Î¼­ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

[root@localhost hearts]# make install
install -c -s  hearts /usr/X11R6/bin/hearts
install -c -s  xmhearts /usr/X11R6/bin/xmhearts
install -c -s  xawhearts /usr/X11R6/bin/xawhearts
install in . done

½ÃÇè»ï¾Æ µ¹·Áº¸ÀÚ.

rehash

(¿ì¸®´Â tcsh ½©À» ¾²°í ÀÖ´Ù.)

xmhearts

localhost:~/% xmhearts
Can't invoke distributor!

heats ÆÐÅ°ÁöÀÇ README ÆÄÀÏ¿¡ ´ÙÀ½°ú °°ÀÌ ÀûÇô ÀÖ´Ù.

     heartsd, hearts_dist¿Í hearts.instr¸¦ local.h¿¡ Á¤ÀÇµÈ HEARTSLIB µð·ºÅ͸® 
     ¾È¿¡ µÎ°í, ÀÌ ÆÄÀϵ鿡 ´©±¸³ª Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï Ç϶ó.

local.h ÆÄÀÏ ³»¿ë:

/* where the distributor, dealer and instructions live */

#define HEARTSLIB "/usr/local/lib/hearts"

ÀÌ°ÍÀº RTFMÀÇ °íÀüÀûÀÎ °æ¿ì´Ù.

root·Î¼­ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

cd /usr/local/lib

mkdir hearts

cd !$

¼³Ä¡µÉ ÆÄÀϵéÀ» ÀÌ µð·ºÅ͸®¿¡ º¹»çÇÑ´Ù.

cp /home/username/hearts/heartsd .

cp /home/username/hearts/hearts_dist .

cp /home/username/hearts/hearts.instr .

´Ù½Ã ÇÑ ¹ø ½ÃÇè»ï¾Æ µ¹·Áº¸ÀÚ.

xmhearts

Çѵ¿¾È µ¹¾Æ°¡´Ù°¡ dealer died! ¶ó´Â ¸Þ½ÃÁö¸¦ ³»¸ç Á״´Ù.

"distributor"¿Í "dealer"´Â Çϵå¿þ¾îÀÇ Æ÷Æ®µéÀ» Á¶»ç(scan)ÇÑ´Ù. µû¶ó¼­ ¿ì¸®´Â ÀÌ ÇÁ·Î±×·¥µéÀÌ rootÀÇ ±ÇÇÑÀ» ÇÊ¿ä·Î ÇÏ´ÂÁö ÀǽÉÇØ¾ß ÇÑ´Ù.

root·Î¼­ ´ÙÀ½°ú °°ÀÌ Çغ¸ÀÚ,

chmod u+s /usr/local/lib/heartsd

chmod u+s /usr/local/lib/hearts_dist

(¾Õ¼­ À̾߱âÇßµíÀÌ, suidµÈ ¹ÙÀ̳ʸ®´Â º¸¾È »óÀÇ ÇãÁ¡À» ¸¸µé ¼öµµ ÀÖ´Ù´Â °Í¿¡ ÁÖÀÇÇ϶ó.)

xmhearts

µåµð¾î µ¹¾Æ°£´Ù!

Hearts´Â ¼±»çÀÌÆ®¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù.

13. ´Ù¼¸¹ø° ¿¹: XmDipmon

Bullwinkle: Hey Rocky, watch me pull a rabbit out of my hat.
Rocky:      But that trick never works.
Bullwinkle: This time for sure.
            Presto!
            Well, I'm gettin' close.
Rocky:      And now it's time for another special feature.
            --- "Rocky and His Friends"

XmDipmon Àº ÀÎÅÍ³Ý ¿¬°á »óŸ¦ º¸¿©ÁÖ´Â ¹öÆ°À» Ç¥½ÃÇÏ´Â ÀÛ°í Àç¹ÌÀÖ´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ´Ù. ³°Àº ÀüÈ­¼±¿¡¼­´Â ÈçÈ÷ ¿¬°áÀÌ ²÷¾îÁö°ï Çϴµ¥, ±×·± °æ¿ì¿¡´Â ¹Ý¦°Å¸®¸é¼­ °æ°íÀ½À» ³½´Ù. ºÒÇàÈ÷µµ, XmDipmonÀº dip °ú¸¸ ÀÛµ¿Çϴµ¥, À̶§¹®¿¡ ÀÎÅÍ³Ý ¿¬°á¿¡ chat¸¦ ¾²´Â ´ëºÎºÐÀÇ »ç¶÷µé¿¡°Ô´Â ¾µ¸ð°¡ ¾ø´Ù.

XmDipmon À» ÄÄÆÄÀÏÇÏ´Â °ÍÀº ¹®Á¦°¡ ¾Æ´Ï´Ù. XmDipmonÀº Motif ¶óÀ̺귯¸®¿¡ ¸µÅ©µÇ¾î ÀÖÁö¸¸, Lesstif¿Íµµ Àß ÄÄÆÄÀϵǰí Àß ½ÇÇàµÈ´Ù. À̹ø µµÀüÀº chat¸¦ ¾µ ¶§µµ ÀÛµ¿µÇµµ·Ï ÆÐÅ°Áö¸¦ °íÄ¡´Â °ÍÀÌ´Ù. ÀÌ ÀÛ¾÷Àº ½ÇÁ¦·Î ¼Ò½º Äڵ带 ¶«ÁúÇÏ´Â °Í±îÁö Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç, µû¶ó¼­ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ Áö½ÄÀÌ ¾î´À Á¤µµ ÇÊ¿äÇÏ´Ù.

         "½ÇÇàµÇ¸é, xmdipmon Àº /etc/dip.pid ¶ó´Â ÆÄÀÏÀ» È®ÀÎÇÑ´Ù. (-pidfile ÀÇ 
         ¸í·ÉÇà ÀÎÀÚ¸¦ ½á¼­ ´Ù¸¥ ÆÄÀÏÀ» ãµµ·Ï ÇÒ ¼öµµ ÀÖ´Ù.)  ÀÌ ÆÄÀÏÀº dip 
         µ¥¸óÀÇ PID ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. (dip ´Â ÀÏ´Ü ¿¬°áÀÌ ÀÌ·ç¾îÁö¸é ÀÚ½ÅÀ» 
         µ¥¸ó ¸ðµå·Î ÀüȯÇÑ´Ù.)"
                       --- XmDipmon README ÆÄÀϷκÎÅÍ Àοë.

-pidfile ¿É¼ÇÀ» ÁÖ¾î ½ÇÇàÇϸé, XmDipmonÀÌ chat ·Î±×ÀÎÀÌ ¼º°øÇßÀ» ¶§¿¡¸¸ Á¸ÀçÇÏ´Â ´Ù¸¥ ÆÄÀÏÀ» È®ÀÎÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ¸í¹éÇÑ È帴 ¸ðµ©ÀÇ lock ÆÄÀÏÀÌ´Ù. µû¶ó¼­ xmdipmon -pidfile /var/lock/LCK..ttyS3 ·Î ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ º¸ÀÚ. (ÀÌ ¸í·ÉÀº ¸ðµ©ÀÌ 4¹ø com Æ÷Æ®, Áï ttyS3¿¡ ÀÖ´Ù°í °¡Á¤ÇÑ °ÍÀÌ´Ù.) ÇÏÁö¸¸ ÀÌ°ÍÀº ¹®Á¦ÀÇ ÀϺθ¦ Ǭ °ÍÀÏ »ÓÀÌ´Ù. ÇÁ·Î±×·¥Àº °è¼Ó dip µ¥¸óÀ» °¨½ÃÇϸç, µû¶ó¼­ ¿ì¸®´Â dip µ¥¸ó ´ë½Å chat³ª ppp¿Í °ü·ÃµÈ ÇÁ·Î¼¼½º¸¦ °¨½ÃÇϵµ·Ï ¹Ù²ã¾ß ÇÑ´Ù.

¼Ò½º ÆÄÀÏÀº Çϳª ¹Û¿¡ ¾øÀ¸¸ç, ´ÙÇàÈ÷µµ ÁÖ¼®¹®ÀÌ Àß ´Þ·ÁÀÖ´Ù. xmdipmon.c ÆÄÀÏÀ» º¸¸é, Çì´õ°¡ ¾Æ·¡¿Í °°ÀÌ µÇ¾î ÀÖ´Â getProcFile ÇÔ¼ö¸¦ ãÀ» ¼ö ÀÖ´Ù.

/*****
* Name:                 getProcFile
* Return Type:  Boolean
* Description:  tries to open the /proc entry as read from the dip pid file.
<snip>
*****/

°áÁ¤ÀûÀÎ ´Ü¼­´Ù. ÇÔ¼ö ³»ºÎ¸¦ ã¾Æº¸ÀÚ.

                        /* we watch the status of the real dip deamon */
                        sprintf(buf, "/proc/%i/status", pid);
                        procfile = (String)XtMalloc(strlen(buf)*sizeof(char)+1);
                        strcpy(procfile, buf);
                        procfile[strlen(buf)] = '\0';

¹üÀÎÀº 2383° ÁÙÀÌ´Ù.

                        sprintf(buf, "/proc/%i/status", pid);
                                      ^^^^^^^^^^^^^^^^^^^^^

ÀÌ ÇÔ¼ö°¡ dip µ¥¸ó ÇÁ·Î¼¼½º°¡ ½ÇÇàµÇ°í ÀÖ´ÂÁö °Ë»çÇÏ´Â °ÍÀÌ´Ù. ±×·¯¸é, ´ë½Å pppd µ¥¸óÀ» °¨½ÃÇϵµ·Ï ÇÏ·Á¸é ÀÌ ºÎºÐÀ» ¾î¶»°Ô °íÄ¡¸é µÉ±î?

pppd ÀÇ ¸ÇÆäÀÌÁö¸¦ º¸ÀÚ.

FILES
       /var/run/pppn.pid (BSD or Linux), /etc/ppp/pppn.pid (others)
                     Process-ID for pppd process on ppp interface unit n.

xmdipmon.cÀÇ 2383° ÁÙÀ» ¾Æ·¡¿Í °°ÀÌ °íÄ¡ÀÚ.

                        sprintf(buf, "/var/run/ppp0.pid" );

°íÄ£ ÆÐÅ°Áö¸¦ ´Ù½Ã ÄÄÆÄÀÏÇÏÀÚ. ¹®Á¦¾øÀÌ ÄÄÆÄÀϵȴÙ. ÀÌÁ¦ »õ·Î¿î ¸í·ÉÇà ÀÎÀÚ¸¦ ½á¼­ ½ÃÇèÇØ º¸ÀÚ. ¾Æ¸¶ ½ÅÅëÇÏ°Ô Àß ½ÇÇàµÉ °ÍÀÌ´Ù. ÀÎÅÍ³Ý ¼­ºñ½º Á¦°øÀÚ(ISP)·Î ppp ¿¬°áÀÌ ÀÌ·ç¾îÁ® ÀÖÀ» ¶§¿¡´Â ÀÛ°í ÆĶõ ¹öÆ°ÀÌ Ç¥½ÃµÇ°í, ¿¬°áÀÌ ²÷¾îÁö¸é ¹Ý¦°Å¸®¸é¼­ °æ°íÀ½À» ³½´Ù. ÀÌÁ¦ ¿ì¸®´Â ¿Ïº®ÇÏ°Ô ÀÛµ¿ÇÏ´Â chat ¸ð´ÏÅ͸¦ °®°Ô µÇ¾ú´Ù.

XmDipmon´Â Ripley Linux Tools¿¡¼­ ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù.

14. ¼Ò½º ¸ðÀ½À» ãÀ» ¼ö ÀÖ´Â °÷

´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ À¯Æ¿¸®Æ¼³ª ´Ù¸¥ ÇÁ·Î±×·¥µéÀ» Ãß°¡Çϱâ À§ÇØ »õ·Î ¾òÀº Áö½ÄÀ» ¾²°í ½Í´Ù¸é, ¼Ò½º ¸ðÀ½À» Linux Applications and Utilities PageÀ̳ª Red Hat, InfoMagic, Linux Systems Labs, Cheap Bytes µîÀÇ ¸Å¿ì Àú·ÅÇÑ °¡°ÝÀÇ ½Ãµð·ÒÀ» ÅëÇؼ­ ±¸ÇÒ ¼ö ÀÖ´Ù.

¼Ò½º Äڵ带 Àß Á¤¸®ÇØ µÐ °÷À¸·Î´Â comp sources UNIX archive°¡ ÀÖ´Ù.

¸¹Àº À¯´Ð½º ¼Ò½º ÄÚµåµéÀÌ alt.sources ´º½º±×·ì¿¡ °ÔÀçµÇ¾î ÀÖ´Ù. ƯÁ¤ÇÑ ÆÐÅ°ÁöÀÇ ¼Ò½º Äڵ带 ã°í ÀÖ´Ù¸é, °ü·ÃµÈ alt.sources.wanted ´º½º±×·ì¿¡ °Ô½Ã¹°À» ¿Ã¸®¸é µÈ´Ù. comp.os.linux.announce ´º½º±×·ìµµ È®ÀÎÇØ º¼ ¸¸ÇÑ °÷ÀÌ´Ù. Unix sources ¸ÞÀϸµ ¸®½ºÆ®¿¡ µî·ÏÇÏ·Á¸é, subscribe ¸Þ½ÃÁö¸¦ º¸³»µµ·Ï Ç϶ó.

alt.sources ´º½º±×·ìÀÇ °Ô½Ã¹° ¸ðÀ½Àº ´ÙÀ½ÀÇ ftp »çÀÌÆ®¿¡ ÀÖ´Ù.

15. ¸¶Áö¸· À̾߱â

ÇÑ ¸¶µð·Î, °íÁýÀÌ ¸ðµç Â÷À̸¦ ¸¸µå´Â °ÍÀÌ´Ù. (±×¸®°í Æ÷±âÇÒ ¼±À» ³ôÀÌ µÎ´Â °ÍÀÌ Æ²¸²¾øÀÌ µµ¿òÀÌ µÈ´Ù.) ¸ðµç µµÀüÀÌ ±×·¸µíÀÌ, ½Ç¼ö·ÎºÎÅÍ ¹è¿ì´Â °ÍÀÌ Áö±ØÈ÷ Áß¿äÇÏ´Ù. °¢°¢ÀÇ ½Ç¼ö, ¸ðµç ½ÇÆа¡ ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡ ±â¼úÀÇ ´ÞÀÎÀÌ µÇ±â À§ÇØ ÇÊ¿äÇÑ Áö½ÄÀ» ´õÇØ ÁÙ °ÍÀÌ´Ù.

16. Âü°í ¹®Çå°ú ´õ ÀÐÀ» ²¨¸®


BORLAND C++ TOOLS AND UTILITIES GUIDE, Borland International, 1992, pp. 9-42.
[º¼·£µå C++ 3.1 ¹öÁ¯°ú ÇÔ²² ¹èÆ÷µÈ ¸Å´º¾ó ÁßÀÇ Çϳª.  µµ½º¸¦ À§ÇØ Àý¸§¹ßÀÌ·Î
±¸ÇöµÈ º¼·£µå C++À» ÀÌ¿ëÇÏ¿©, ±¸¹®(syntax)°ú °³³ä ÀÛ¼º¿¡ ´ëÇØ »ó´çÈ÷
ÁÁÀº ¼Ò°³¸¦ Á¦°øÇÑ´Ù.]

DuBois, Paul: SOFTWARE PORTABILITY WITH IMAKE, O'Reilly and Associates,
1996, ISBN 1-56592-226-3.
[³ª´Â ÀÌ ±ÛÀ» ¿Ï¼ºÇϵµ·Ï Àо ÀûÀÌ ¾ø¾úÁö¸¸, imake ·¹ÆÛ·±½ºÀÇ °áÁ¤ÆÇÀ̶ó´Â
ÆòÆÇÀÌ´Ù.]

Frisch, Aeleen: ESSENTIAL SYSTEM ADMINISTRATION (2nd ed.), O'Reilly and
Associates, 1995, ISBN 1-56592-127-5.
[°¢º°È÷ Ź¿ùÇÑ ½Ã½ºÅÛ °ü¸® ÇÚµåºÏÀÌÁö¸¸, ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡¿¡ ´ëÇؼ­´Â °£´ÜÇÑ
½ºÄÉÄ¡ Á¤µµ ¸¸À¸·Î ´Ù·ç°í ÀÖ´Ù.]

Hekman, Jessica: LINUX IN A NUTSHELL, O'Reilly and Associates, 1997, ISBN
1-56592-167-4.
[¸®´ª½º ¸í·É¾î Àü¹Ý¿¡ ´ëÇÑ ÈǸ¢ÇÑ ·¹ÆÛ·±½º.]

Lehey, Greg: PORTING UNIX SOFTWARE, O'Reilly and Associates, 1995, ISBN
1-56592-126-7.

Mayer, Herbert G.: ADVANCED C PROGRAMMING ON THE IBM PC, Windcrest Books,
1989, ISBN 0-8306-9363-7.
[°í±Þ C ÇÁ·Î±×·¡¸Ó¶ó¸é Áï°¢ ÀÀ¿ëÇÒ ¼ö ÀÖ´Â ¾ÆÀ̵ð¾î·Î °¡µæÇÑ Ã¥.  ¾Ë°í¸®Áò¿¡
´ëÇÑ Å¹¿ùÇÑ Çؼ³, ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ´ëÇÑ Ç³ÀÚ, Àç¹Ì.  ¾ÈŸ±õ¸¸ ÀýÆÇÀÌ´Ù.]

Mui, Linda and Valerie Quercia: X USER TOOLS, O'Reilly and Associates,
1994, ISBN 1-56592-019-8, pp. 734-760.

Oram, Andrew and Steve Talbott: MANAGING PROJECTS WITH MAKE, O'Reilly
and Associates, 1991, ISBN 0-937175-90-0.

Peek, Jerry and Tim O'Reilly and Mike Loukides: UNIX POWER TOOLS,
O'Reilly and Associates / Random House, 1997, ISBN 1-56592-260-3.
[ȯ»óÀûÀÎ ¾ÆÀ̵ð¾îÀÇ ¿øõ.  ±×¸®°í ÀÌ ±Û¿¡¼­ ¼³¸íµÈ ¹æ¹ýÀ» ½á¼­ ¼Ò½º ÄÚµå·ÎºÎÅÍ
¼³Ä¡ÇÒ ¼ö ÀÖ´Â À¯Æ¿¸®Æ¼°¡ Àܶà ÀÖ´Ù.]

Stallman, Richard M. and Roland McGrath: GNU MAKE, Free Software
Foundation, 1995, ISBN 1-882114-78-7.
[Àеµ·Ï ¿ä±¸µÇ´Â ±Û.]

Waite, Mitchell, Stephen Prata, and Donald Martin: C PRIMER PLUS, Waite Group
Press, ISBN 0-672-22090-3,.
[¾Æ¸¶µµ C ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ÃÖ°íÀÇ ÀÔ¹®¼­.  Ãʺ¸ÀÚ¸¦ À§ÇÑ ÀÚ¼¼ÇÑ Çؼ³.  »õ·Î¿î
Æǵµ Áö±Ý ±¸ÇÒ ¼ö ÀÖ´Ù.]

Welsh, Matt and Lar Kaufman: RUNNING LINUX, O'Reilly and Associates,
1996, ISBN 1-56592-151-8.
[¸î¸î ºÐ¾ß¿¡¼­´Â ±íÀÌ°¡ ºÎÁ·ÇÏÁö¸¸, ¿©ÀüÈ÷ ¸®´ª½º Àü¹Ý¿¡ ´ëÇÑ ÃÖ°íÀÇ ·¹ÆÛ·±½º.] 


dpkg, gcc, gzip, imake, ldconfig, ldd, make, nm, patch,
rpm, shar, strip, tar, termcap, terminfo, xmkmfÀÇ ¸Ç ÆäÀÌÁö.

David FetterÀÇ BZIP2 HOWTO.

Eric GreenÀÇ Glibc2 HOWTO.

Daniel BarlowÀÇ LINUX ELF HOWTO.

Donnie BarnesÀÇ RPM HOWTO.

Matthew BorowskiÀÇ StarOffice miniHOWTO.

[ÀÌ HOWTOµéÀº ´ç½Å ½Ã½ºÅÛÀÇ /usr/doc/HOWTO³ª /usr/doc/HOWTO/mini µð·ºÅ͸®¿¡ ÀÖÀ» °ÍÀÌ´Ù. ÅؽºÆ®, HTML, SGML Æ÷¸ËÀÇ °³Á¤ ¹öÁ¯µéÀº LDP »çÀÌÆ® ¹× ÇØ´ç ÀúÀÚÀÇ È¨ ÆäÀÌÁö¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù.]

17. °¨»çÀÇ ±Û

ÀÌ HOWTO ÀÇ ÀúÀÚ´Â ¾Æ·¡ÀÇ »ç¶÷µéÀÌ º¸³»ÁØ Á¦¾È°ú ¼öÁ¤, °Ý·Á¿¡ ´ëÇØ °¨»çÇÑ´Ù.

  • R. Brock Lynn
  • Michael Jenner
  • Fabrizio Stefani

ÀÌ HOWTO ¸¦ ÀÌÅ»¸®¾Æ¾î¿Í ÀϺ»¾î·Î ¹ø¿ªÇÑ ÁÁÀº Ä£±¸µé¿¡°Ôµµ ¿ª½Ã ¿µ¿¹¸¦ µ¹¸°´Ù.

±×¸®°í ¹°·Ð Linux Documentation ProjectÀÇ Greg Hankins ¿Í Tim Bynum ¿¡°Ôµµ °¨»ç¿Í Âù¾ç°ú ÃູÀ» º¸³½´Ù. LDP°¡ ÀÌ ¸ðµç °ÍÀ» °¡´ÉÇÏ°Ô Ç߱⠶§¹®ÀÌ´Ù.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:30
Processing time 0.0047 sec