· 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°¡ ÀÌ ¸ðµç °ÍÀ» °¡´ÉÇÏ°Ô Ç߱⠶§¹®ÀÌ´Ù.


ID
Password
Join
Let him who takes the Plunge remember to return it by Tuesday.


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.0053 sec