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

You are not allowed to 'LikePages'


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

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

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
Men seldom show dimples to girls who have pimples.


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