¦b Linux ¤U«Ø¥ß³nÅé®M¥ó <author> <tt>§@ªÌ:<url url="mailto:thegrendel@theriver.com" name="Mendel Leo Cooper"></tt> <tt><htmlurl url="http://personal.riverusers.com/~thegrendel/" name="http://personal.riverusers.com/~thegrendel/"></tt><newline> <tt>ĶªÌ:<url url="mailto:r6921068@ms.cc.ntu.edu.tw" name="J.S.Lin"></tt> <date>v1.52, 27 December 1997 <abstract> ³o¬O¥÷¼sªx«ü¤Þ¤å¥ó,¥i¥Î¨Ó«Ø¥ß"¤@¯ë©Ê" UNIX ³nÅéµo¦æ®M¥ó¦b Linux ¤U. </abstract> <!-- Table of contents --> <toc> <!-- Begin the document --> <sect>²¤¶ <p> «Ü¦h³nÅé®M¥ó´£¨Ñµ¹¦U¦¡ UNIX, ¥]¬A Linux, ¬O±N­ì©l½XÀÉ®×À£ÁY¦¨ÀÉ®×(archives)¦Óµo¦æªº. ¬Û¦Pªº®M¥ó¥i¥H«Ø¥ß¥H«K¦b¤£¦P¹ï¶Hªº¾÷¾¹¤W°õ¦æ, ¨Ã¥B³o¥i¸`¬Ù¨Ç³nÅ馨«~¦Ó§K©ó¥²¶·»s³y¦UºØµo¦æª©¥». ³nÅé®M¥óªº³æ¤@µo¦æª©¥»µ²ªG¯à°õ¦æ¦b¦U¦¡¹êÅé(incarnations), ¹³¬O¦b Intel ¾÷¾¹, DEC Alpha, RISC ¤u§@¯¸, ¬Æ¦Ü¬O¹qºâ¥D¾÷. ¦ý¤£©¯ªº¬O, ³o±N"«Ø¥ß"³nÅ骺¤u§@±Àµ¹¤F³Ì²×¨Ï¥ÎªÌ(end user), ¹ê»Ú¤W¬O"¨t²ÎºÞ²zªÌ", §Y§¤¦bÁä½L«eªº¦P§Ó...§A. ÁöµM³o¼Ë, »{¯u¨Ó»¡³o¹Lµ{¨Ã¤£¬O¹³¥¦¬Ý°_¨Ó¨º»ò¥i©È©Î¤£¥i«äij, ´N¹³³o«ü¤Þ©Ò¸Ñ»¡¤@¼Ë. <sect>±q¨ú±o¶}©l <p> §A¦³¤U¸ü©Î¨ä¥¦¤è¦¡¨ú±o¤@­Ó³nÅé®M¥ó. ³Ì±`¨£±¡ªp¬O¥¦³Q¥´¥]°_¨Ó (<em>tarred</em>) ¦Ó¥B³QÀ£ÁY (<em>gzipped</em>), ¦¨¬° <tt>.tar.gz</tt> ©Î <tt>.tgz</tt> §Î¦¡. ­º¥ý±N¥¦½Æ»s¨ì¤@¤u§@¥Ø¿ý. µM«á¥Î <em>untar</em> ©M <em>gunzip</em> ³B²z¥¦. ³B²z¥¦³Ì¾A¦Xªº©R¥O¬O <bf>tar xzvf <em>filename</em></bf>, ³oùتº <em>filename</em> ·íµM¬O³nÅéÀɦW. ³oºØ¸Ñ¶}µ{§Ç±`±`·|¦w¸Ë¾A·íÀɮצb¥¦©Ò¶}±Òªº¤l¥Ø¿ý¤¤. ª`·Nªº¬O¦pªG®M¥ó¦WºÙ¦³ <em>.Z</em> µ²§À, ¨º±N­n¨Ï¥Î <bf>uncompress PACKAGENAME</bf>, µM«á¦A¥Î <bf>tar xvf PACKAGENAME</bf> ¦Ó¤£­n¥Î¤§«eªº¨BÆJ. ¦³®É¥´¥]°_¨ÓªºÀÉ®×¥²¶· <em>untarred</em> ¥B¦w¸Ë¦Û¨Ï¥ÎªÌªº®a¥Ø¿ý(home directory), ©ÎªÌ¤]³\¬O¦b¬Y­Ó¨ä¥¦¥Ø¿ý, ¹³¬O®M¥ó³]©w¸ê®Æ©Ò«ü©wªº. °²­Y§A³]ªk­n <em>untar</em> ¥¦¦Ó±o¨ìªº¬O¿ù»~°T®§, ¤]³\´N¬O¨º­ì¦]. Ū¤@¤U®M¥ó¤å¥ó, ¯S§O¬O <tt>README</tt> ©M/©Î <tt>Install</tt> ÀÉ®×, ¦pªG¦s¦b, ½s¿è³]©wÀɮשM/©Î <tt>Makefiles</tt> ¦p©Ò»Ý­nªº, §Y»P¦w¸Ë«ü¥Ü²Å¦X. ª`·Nªº¬O³q±` <bf>¤£</bf> ¥h§ó§ï <tt>Imake</tt> ÀÉ®×, ¦]¬°³o¥i¯à¦³¥¼¹w´Áªºµ²ªG. ¬Y¨Ç³nÅé®M¥ó¤¹³\¦Û°Ê¦w¸Ëµ{§Ç,¥¦¬OÂǥѰõ¦æ <bf>make install</bf> ¨Ó©ñ¸m¤G¤¸½X¦b¾A·í¨t²Î¦ì¸m. °¸¦Ó, §A¥i¯à»Ý­n¨Ï¥Î <tt>patchÀÉ®×</tt>,¸ÓÀɮצ³¦C¥X­ì¥»ªº»P·sªº­ì©lÀɮתº®t²§, ¨Ó¤É¯Å©Î¥[¤J¯äÂÎ(bug)ªº­×¥¿¦Ü¥¼¥´¥](unarchived)ªº­ì©lÀÉ®×. docÀÉ®×»P/©Î <tt>README</tt> ÀÉ®×·|§iª¾§A³oºâ¤£ºâ¸Ó±¡ªp. ¹ï©ó¨Ï¥Î Larry Wall ªº±j¤O <tt>­×¸É(patch)</tt> ¤u¨ã¤§¥¿±`ªº»yªk(syntax)¬O <bf>patch < patchfile</bf>. §A²{¦b¥i¥H¶}©l¶i¦æ <em>«Ø¥ß</em> ¹Lµ{¶¥¬q¤F. <sect>¨Ï¥Î Make <p> <tt>Makefile</tt> ¬O«Ø¥ß¹Lµ{ªº­«ÂI. ¦b¥¦ªº³Ì²³æªº§Î¦¡, Makefile ´N¬O­Ó script ,¥¦¬O¥Î¨Ó½sĶ©Î«Ø¥ß"¤G¤¸½X",®M¥óªº¥i°õ¦æ³¡¤À. Makefile¤]¥i¥H´£¨Ñ³nÅé®M¥ó¤É¯Åªº¤u¨ã,¦Ó¤£»Ý­n­«·s½s͍C¤@­Ó¦b®M¥ó¤¤ªº­ì©lÀÉ®×, ¦ý¨ä¦³¤£¦Pªº±¡ªp(©Î¬O¤£¦Pªº¬ù©w). ¬Y¨Ç¯SÂI¬O, Makefile ¶}±Ò <tt>cc</tt> ©Î <tt>gcc</tt>. ³o¹ê»Ú¤W¬O­Ó«e³B²z¾¹, C (or C++) ½s;¹, ©M ³sµ²¾¹, «ö·Ó¨º­Ó¶¶§Ç. ³o¹Lµ{Âà´«­ì©l½X(source)¬°¥i¯u¥¿¥h°õ¦æªº¤G¤¸½X(binaries). ¤U«ü¥O <em>make</em> ³q±`¥u­nÁä¤J <bf>make</bf>. ³o³q±`«Ø¥ß°Q½×¤¤ªº®M¥ó©Ò¦³»Ý­nªº¥i°õ¦æÀÉ. µM¦Ó, <em>make</em> ¤]°µ¨ä¥L¤u§@,¹³¬O¦w¸ËÀɮצܦX¾Aªº¥Ø¿ý (<bf>make install</bf>) ¦Ó¥B§R°£Âªº object ÀÉ®× (<bf>make clean</bf>). °õ¦æ <bf>make -n</bf> ¤¹³\¹wÄý«Ø¥ß¹Lµ{, ´N¬O¦C¥X©Ò¦³ make ©Ò³ê°_ªº(triggered)©Ò¦³©R¥O, ¦ý¨S¦³¯uªº¥h°õ¦æ¥¦­Ì. ¥u¦³¦b³Ì²³æªº³nÅé¨Ï¥Î¤@¯ë©Êªº Makefile. ¸û½ÆÂøªº¦w¸Ë»Ý­n®Ú¾Ú¨ç¦¡®w(libraries), include ÀÉ®×¥H¤Î§A­Ó§O¾÷¾¹¸ê·½©Ò¦b¥Ø¿ý¨Ó¶q¨­©w»s. ³o¯S§O¬O·í»Ý­n <tt>X11</tt> libraries ¨Ó¦w¸Ë«Ø¥ß®É. <em>Imake</em> ©M <em>xmkmf</em> ¥i§¹¦¨³o¼Ëªº¤u§@. ¤Þ¥Î¦Û man page,Imakefile ¬O­Ó"¼ÒªO(template)"ªº Makefile. imake ¤u¨ã°Ñ¦Ò Imakefile ®Ú¾Ú§Aªº¨t²Î³y¥X¦X¾Aªº Makefile. µM¦Ó,´X¥G¦b©Ò¦³ªº±¡ªp¤U,§A­n°õ¦æ xmkmf, ¥¦¬O­n¤U imake «ü¥O¥Îªº shell script, ¤]´N¬O­Ó«eºÝ¤¶­±(front end). ¹î¾\¤@¤U¤ºªþ¦b³nÅéÀÉ®×¶¡ªº README ©Î INSTALL ÀÉ®×¥H¨ú±o¯S§Oªº«ü¥Ü. ¦Ü©ó§ó¸Ô²Óªº¨BÆJ¤ÀªR,½Ð¾\Ū imake ©M xmkmf ªº man pages. ­nª¾¹Dªº¬O <em>xmkmf</em> ©M <em>make</em> ¥i¯à»Ý­n¥H root ¨­¤À¨Ó¤U«ü¥O, ¯S§O¬O·í <bf>make install</bf> ¨Ó·h²¾¤G¤¸½X¨ì <tt>/usr/bin</tt> ©Î <tt>/usr/local/bin</tt> ¥Ø¿ý. ¥H¤@¯ë¨Ï¥ÎªÌªº¨­¤À¦Ó¤£¨ã root Åv¤O ¨Ó¨Ï¥Î make ±N¥i¯à·|¾É­P <tt>write access denied</tt> ªº¿ù»~°T®§, ¦]¬°§A¯Ê¤Ö¼g¤J(write)¦Ü¨t²Î¥Ø¿ýªºÅv­­. ¤]Àˬd¤@¤U, ©Ò³y¥X¨Óªº¤G¤¸½X¹ï§A»P¥ô¦ó¨ä¥L¾A¥Îªº¨Ï¥ÎªÌ¦³¾A¦Xªº°õ¦æ(execute)Åv­­. ¤U«ü¥O <bf>xmkmf</bf> ¨Ó¨Ï¥Î <em>Imake</em> ÀÉ®×, «Ø¥ß¤@­Ó·sªº¦Ó¥B¾A¦X§A¨t²Îªº Makefile. ¥¿±`¦a¤U«ü¥O <bf>xmkmf</bf> ³£·|ªþ¥[ <bf>-a</bf> ¤Þ¼Æ, ¦]¦Ó¦Û°Ê¦a°µ <em>make Makefiles, make includes,</em> ©M <em>make depend</em> ªº°Ê§@. ³o·|³]©wÅܼÆ(variables)©Mµ¹©w¨ç¦¡®w(library) ¦ì¸mµ¹½s;¹©M³sµ²¾¹. ¦³®É·|¨S¦³ <em>Imake</em> ÀÉ®×, ¤Þ¦Ó¥N¤§ªº¬O¦³ <em>INSTALL</em> ©M <em>configure</em> ªº script, ¤]·|¨ì³o¼Ëªº¥Øªº. ª`·Nªº¬O¦pªG§A­n°õ¦æ <em>configure</em>, ¨º­n¤U«ü¥O <bf>./configure</bf> ¥H½T«O¦b¥Ø«e¥Ø¿ý¤U¥¿½Tªº script <em>configure</em> ¬O³Q©I¥s. ¦b¤j³¡¤Àªº±¡ªp, ¦bµo¦æ®M¥ó¤¤ªº <em>README</em> ÀÉ®×·|»¡©ú¦w¸Ë¨BÆJ. ³q±`¤@­Ó¦nªº¤èªk¬O±q¥~Æ[À˵ø¤@¤U <tt>Makefile</tt> ¬O <tt>xmkmf</tt> ©Î ¨ä¤¤¤@­Ó¦w¸Ëªº scripts ©Ò³y¥X¨Óªº. Makefile ¥¿±`¤U·|¬°§Aªº¨t²Î¦Ó­×¥¿, ¦ý§A°¸¦Ó¥i¯à»Ý­n"±Û§á(tweak)"©Î¤â°Ê¦a­×¥¿¿ù»~. §Aªº¤@¯ë¦w¸Ë¨BÆJ±N·|¬O: <itemize> <item>Ū¤@¤U <em>README</em> ÀɮשM¨ä¥¦¦X¥Îªº¤å¥ó. <item>°õ¦æ <bf>xmkmf -a</bf>, ÁÙ¬O <em>INSTALL</em> ©Î <em>configure</em> script. <item>Àˬd¤@¤U <tt>Makefile</tt>. <item>¦pªG»Ý­n, °õ¦æ¤@¤U <bf>make clean</bf>, <bf>make Makefiles</bf>, <bf>make includes</bf>, and <bf>make depend</bf>. <item>°õ¦æ <bf>make</bf>. <item>Àˬd¤@¤UÅv­­. <item>¦pªG»Ý­n, °õ¦æ¤@¤U <bf>make install</bf>. </itemize> <sect>§JªA§xÃø <p> ¦pªG¥Î <bf>xmkmf</bf> ©M/©Î <bf>make</bf> «Ü¦¨¥\¨S¦³¿ù»~, §A¥i¥HµÛ¤â©ó <ref id="finalsteps" name="next section">. µM¦Ó, ¦b¯u¹ê¥Í¬¡, «Ü¤Ö¨Æ±¡¦b²Ä¤@¦¸´N¥¿½Tªº¤u§@. ³o´N¬O·í§Aªº¾÷´¼Â×´I®É,­n«i©ó¹Á¸Õ. <sect1>³sµ²¿ù»~ <p> <itemize> <item>¦pªG <bf>make</bf> ¥¢±Ñ¦Ó¥X²{¦³ <tt>Link error: -lX11: No such file or directory</tt>, ¬Æ¦Ü¬O¦b¨Ï¥Î <bf>xmkmf</bf> «á. ³o¥i¯à·N¨ýµÛ <em>Imake</em> ÀɮרS¦³¾A·í¦a¸Ë¦n. Àˬd <em>Makefile</em> ªº²Ä¤@³¡¤À¦³¨S¦³¹³³o¼Ëªº´X¦æ: <tscreen><verb> LIB= -L/usr/X11/lib INCLUDE= -I/usr/X11/include/X11 LIBS= -lX11 -lc -lm </verb></tscreen> <tt>-L</tt> ©M <tt>-I</tt> ¤Á´«¾¹(switches)·|³q§i½s;¹©M³sµ²¾¹¤À§O¥h­þùØ´M§ä <em>library</em> ©M <em>include</em> ÀÉ®×. ¦b³o¨Ò¤l, <em>X11 libraries</em> À³¸Ó¬O¦b <tt>/usr/X11/lib</tt> ¥Ø¿ý, ¦Ó <em>X11 include ÀÉ®×</em> À³¸Ó¬O¦b <tt>/usr/X11/include/X11</tt>¥Ø¿ý. ¦pªG³o¦b§Aªº¾÷¾¹¤W¬O¤£¹ïªº, ¥²¶·§ïÅÜ <em>Makefile</em> ¦Ó¥B¦A¸Õ¸Õ <bf>make</bf>. </itemize> <itemize> <item>¦b«D±`¤Öªº±¡ªp, ¥H <em>root</em> ¨­¤À¶]¤@¤U <bf>ldconfig</bf> ¤]³\¬O­Óµª®×: <bf># /etc/ldconfig -n /lib</bf> ±N·|§ó·s¦@¨É¦¡¨ç¦¡®w²Å¸¹³sµ² (shared library symbolic links). <em>³o¦b¥¿±`ªº±¡§Î¤U¤£¬O»Ý­nªº</em>. </itemize> <itemize> <item>¥Ø«e¥t¤@¥ó¨Æ¬O¦pªG <bf>xmkmf</bf> ¥¢±Ñ, «h¸Õ¸Õ¤U¦C script: <tscreen><verb> make -DUseInstalled -I/usr/X386/lib/X11/config </verb></tscreen> </itemize> <itemize> <item>¦³®É­ì©l½X»Ý­n¨Ï¥Îª©ªº X11R5 libraries ¨Ó«Ø¥ß. ¦pªG§A¦³ R5 libs ¦b /usr/X11R6/lib (·í§A­º¥ý¦b¦w¸Ë Linux ®É, §A¬O¦³¿ï¾Ü¬O§_¦w¸Ë¥¦­Ìªº), µM«á§A¥u»Ý­n½T©w,§A¦³³sµ²¨ì³nÅé©Ò»Ý­n«Ø¥ßªº¦a¤è. <tt>R5 libs</tt> ¬O¦³ <tt>libX11.so.3.1.0</tt>, <tt>libXaw.so.3.1.0</tt>, ©M <tt>libXt.so.3.1.0</tt>. ¤@¯ë§A»Ý­n³sµ²¦Ü, ¹³¬O <bf>libX11.so.3 -> libX11.so.3.1.0</bf>. ¤j·§³nÅé¤]»Ý­n³o­Ó§Î¦¡³sµ² <bf>libX11.so -> libX11.so.3.1.0</bf>. ·íµM, ­n±N³o"Â_±¼(missing)"ªº³sµ²«Ø¦n, ­n¥H <em>root</em> ¨­¤À¨Ï¥Î³o«ü¥O <bf>ln -s libX11.so.3.1.0 libX11.so</bf>. </itemize> <itemize> <item> ¬Y¨Ç®M¥ó·|­n¨D§A¥h¦w¸Ë¤@­Ó©Î¥H¤Wªº¤É¯Åª©¥». Á|¨Ò¦Ó¨¥, StarDivision GmbH ªº <em>StarOffice</em> ²Õ¥ó(suite)¬O´c¦W¬L¹ü(notorious)ªº­n¨D <tt>libc</tt> version 5.4.4 ©Î§ó·s. ¥H <em>root</em>¨­¤À, §A»Ý­n½Æ»s¤@­Ó©Î¥H¤Wªº¨ç¦¡®w(libraries)¦Ü¦X¾Aªº¥Ø¿ý, §R¥hªº¨ç¦¡®w(libraries),µM«á­«³]²Å¸¹³sµ². <bf>¤p¤ß: ¦b³o­n®æ¥~ª`·N, ¦]¬°¦pªG§A§ËÁV, §A¥i¯à·|¥I¥X§Aªº¨t²Î¤£¯à¹B§@ªº¥N»ù</bf>. §A³q±`¥i¥H§ä¨ì¤É¯Åªº¨ç¦¡®w(libraries)¦b <url url="ftp://sunsite.unc.edu" name="Sunsite">. </itemize> <sect1>¨ä¥¦°ÝÃD <p> <itemize> <item>¦b¦w¸Ë¦nªº <em>Perl</em> ©Î shell script µ¹§A¤@­Ó <tt>No such file or directory</tt> ¿ù»~°T®§. ¦b³o±¡ªp,ÀˬdÀÉ®×Åv­­¨Ó½T©wÀÉ®×¥i°õ¦æ ¥H¤ÎÀˬdÀÉ®×¼ÐÀY¬O§_§t¦³¨Ï¥Î shell ©Îµ{¦¡, «ü©ú script ©Ò¦b¦a¤è. Á|¨Ò¦Ó¨¥, script ¶}©l¦p: <tscreen><verb> #!/usr/local/bin/perl </verb></tscreen> ¦pªG <em>Perl</em> ¹ê»Ú¸Ë¦b§Aªº <tt>/usr/bin</tt> ¥Ø¿ý, ¦Ó¤£¬O <tt>/usr/local/bin</tt> ¥Ø¿ý, ¨º»ò script µLªk°õ¦æ. ¦³¨â­Ó¤èªk¨Ó­×§ï. script ÀÉ®×¼ÐÀY§ï¦¨ <tt>#!/usr/bin/perl</tt>, ©Î¥Î²Å¸¹³sµ²¦Ü¥¿½Tªº¥Ø¿ý, <bf>ln -s /usr/bin/perl /usr/local/bin/perl</bf>. </itemize> <itemize> <item>¬Y¨Ç X11 ³nÅé­n¨D¦³ <tt>Motif</tt> ¨ç¦¡®w(libraries)¤~¯à«Ø¥ß. ¦Ó¼Ð·Çªº Linux µo¦æ®M¥ó¨Ã¨S¦³¦w¸Ë Motif libraries, ¦Ó¥B¥Ø«e Motif ÁÙ­nÃB¥~ $100-$200 ªºªá¶O (ÁöµM§K¶O³nÅé <url url="http://www.lesstif.org/" name="Lesstif"> ¦b¬Y¨Ç³õ¦X¤]¯à°÷¥Î). ¦pªG§A»Ý­n Motif ¨Ó«Ø¥ß¬Y¤@®M¥ó, ¦ý¯Ê¤Ö Motif libraries, ¨º»ò¤]³\¥i¥H¨ú±o <em>ÀRºA³sµ²ªº¤G¤¸½X(statically linked binaries)</em>. ÀRºA³sµ²¦b¤G¤¸½X¥»¨­¯Ç¤J¨ç¦¡®w¦æµ{(library routines). ³o³y¦¨¤G¤¸½XÀɮפj¤F³\¦h, ¦ý¬O½X¥i¦b¯Ê¤Ö¸Ó¨ç¦¡®wªº¨t²Î¤W°õ¦æ. </itemize> <itemize> °õ¦æ <em>configure</em> script ·|³Ð³y©_©Çªº <tt>Makefile</tt>, ¨º¹³¬O»P§A©Ò­n³]ªk«Ø¥ßªº®M¥ó­½¤£¬Û¤z. ³oªí¥Ü¶]µÛ¿ù»~ªº <em>configure</em>, ¨ä§ä¨ì§Aªº path ¤W¬Y³B¨ä¥Lªº configure. ©Ò¥H­n¤U <em>configure</em> «ü¥O À³¸Ó­n¤U¦¨ <bf>./configure</bf> §Y¥Ø«e¥Ø¿ý¤Uªº. </itemize> <itemize> <item>¬Y¨Çµ{¦¡·|­n¨D¦³ <em>setuid root</em>, ¬°¤F­n¥H¦³ <em>root Åv¤O</em> ¨Ó°õ¦æ. ­n¹F¦¨³o¥Ø¿ýªº«ü¥O¬O <em>¥Hroot</em> ¤U«ü¥O <bf>chmod u+s filename</bf>. (ª`·Nªº¬O³oµ{¦¡¤w¸g¬O <em>root</em> ©Ò¾Ö¦³¤F). ³o¦b³]©wÀÉ®×Åv­­¤¤ªº <em>setuid</em> bit «Ü¦³¥Î. ³o¼Ë¥Î¦b·íµ{¦¡¦b¦s¨ú¨t²ÎµwÅé,¹³¬O modem ©Î CD ROM drive, ©Î·í SVGA libs ³Q¨Ï¦b©ó¥D±±¥x¼Ò¦¡(console mode), ¹³¬O¦b¤@­Ó¯S§O´c¦W¬L¹üªº(notorious)¼ÒÀÀ¾¹(emulation)®M¥ó. ¦pªGµ{¦¡¥¿³Q root °õ¦æ, ¦ýµ¹¤@¯ë¨Ï¥ÎªÌ¤@­Ó <em>access denied</em> ªº¿ù»~°T®§, ·Q¹³´N¬O³o¼Ë³y¦¨ªº. <P> <bf>ĵ§i:</bf> ¤@­Ó¦³ <em>setuid</em> ¦¨ root ªºµ{¦¡¥i¯à´£¥X¹ï§Aªº¨t²Î¦³¦w¥þ¤Wªº­·ÀI. ³o­Óµ{¦¡¥i¥H root Åv¤O¨Ó¶]¦Ó©Ò¥H¦³¬Y¨Ç¯}®`ªº¼ç¦b©Ê. ¦b³]©w <em>setuid</em> bit «e, ½T©w§Aª¾¹D¸Óµ{¦¡¦b°µ¤°»ò, ¥²­n®É¬Ý¤@¤U­ì©l½X. </itemize> <sect1>±Û§á»P·L½Õ <p> §A¥i¯à§Æ±æÀˬd <tt>Makefile</tt> ¨Ó½T©w¦³¿ï¥Î¹ï§A¨t²Î³Ì¨Î½sĶ¿ï¶µ. Á|¨Ò¨Ó»¡, ³]©w <em>-O2</em> ºX¼Ð¨Ó¿ï³Ì°ª¼h¯Åªº³Ì¨Î¤Æ¦Ó <em>-fomit-frame-pointer</em> ºX¼Ð¨Ó³y³Ì¤p¤G¤¸½X (ÁöµM debugging ·|¨S¦³¥´¶}). <bf>°£«D§Aª¾¹D§A¦b°µ¤°»ò, ¦Ó¥B¦b¥ô¦ó±¡ªp¤U, °£«DÁ}­W«Ø¥ßªº¤u§@¤w§¹¦¨, §_«h¤£­nª±³o¨Ç</bf>. <sect1>¥h­þ¨ú±o¶i¤@¨Bªº¨ó§U <p> ¦b§Úªº¸gÅç, ¤j·§25%ªºÀ³¥Îµ{¦¡«Ø¥ß"§¹¥þ¨S¦³§xÃø". ¥t¥~¤j¬ù50%¯à"³Q»¡ªA"ªº«Ø¥ß, ­n¥I¥X§V¤Oªº½d³ò±qµL²á¨ì·¥¬°§xÃø. ¨º¤´µMªí¥Ü¦³¬Y¨Ç®M¥óµL½×¦p¦ó³£µLªk«Ø¥ß. §Y¨Ï¨º¼Ë, ¨º¨Ç Intel <tt>ELF</tt> ©M/©Î <tt>a.out</tt> ¤G¤¸½X, ¤]¥i¯à¦b <url url="ftp://sunsite.unc.edu" name="Sunsite">, <url url="ftp://tsx-11.mit.edu" name = "TSX-11 archive"> ©Î¨ä¥¦¦a¤è§ä¨ì. ¤]³\, ³nÅ骺³Ð³yªÌ¥i¥H´£¨Ñ½sͦnªº¤G¤¸½Xµ¹§Aªº¯S§Oªº¾÷¾¹¨Ï¥Î. <tt>ª`·Nªº¬O¦pªG§A¨ú±o¹w¥ý½sͦnªº¤G¤¸½X, §A·|»Ý­nÀˬd¬O§_»P§Aªº¨t²Î¬Û®e:</tt> <itemize> <item><tt>³o¤G¤¸½X¥²¶·¦b§Aªº µwÅé¤W¶] (i.e., Intel x86).</tt> <item><tt>³o¤G¤¸½X¥²¶·»P§Aªº®Ö¤ß(kernel)¬Û®e (i.e., a.out ©Î ELF).</tt> <item><tt>§Aªº¨ç¦¡®w(libraries)¥²¶·¬O³Ì·sªº.</tt> </itemize> ¦pªG¥þ³£¥¢±Ñ, §A¥i¥H¦b¦X¾Aªº <em>·s»D¸s²Õ</em>´M¨DÀ°¦£, ¹³¬O¦b<htmlurl url="news://comp.os.linux.x" name="comp.os.linux.x"> ©Î <htmlurl url="news://comp.os.linux.development" name="comp.os.linux.development">. ¸U¤@§A¥u¬O¤£°÷©¯¹Bªº¸Ü, ¼K, ¸Õ¸Õ¤]¬O¦³½ìªº. <sect>³Ì«á¨BÆJ<label id="finalsteps"> <p> Ū¤@¤U³nÅé®M¥óªº¤å¥ó¨Ó¨M©w¬O§_¦³¬Y¨ÇÀô¹ÒÅܼƻݭn³] (¦b <em>.bashrc</em> ©Î <em>.cshrc</em>) ¥H¤Î ¬O§_ <em>.Xdefaults</em> ©M <em>.Xresources</em> Àɮ׻ݭn½Õ¾ã. ¥i¯à¦³­ÓÀ³¥Îµ{¦¡¤º©wªºÀÉ®×, ³q±`¥s°µ Xfoo.ad ¦b­ì¥»ªº Xfoo µo¦æ®M¥ó. ¦pªG³o¼Ë, ½s¿è Xfoo.ad ÀÉ®×¾A¦X§Aªº¾÷¾¹, µM«á­«·s©R¦W (<bf>mv</bf>) ¦¨ Xfoo ¦Ó¥B <em>¥H root ¨­¤À</em> ¦w¸Ë¥¦¨ì <tt>/usr/lib/X11/app-defaults</tt> ¥Ø¿ý, ¨S³o¼Ë°µ¥i¯à·|³y¦¨³nÅ馿¬°«Ü©_©Ç, ¬Æ¦Ü©Úµ´°õ¦æ. ¤j¦h¼Æªº³nÅé®M¥óªþ¦³¤@­Ó©Î¥H¤Wªº®æ¦¡¤Æ man pages. <em>¥H root ¨­¤À</em>, ½Æ»s Xfoo.man Àɮרì¦X¾Aªº <tt>/usr/man</tt> ¥Ø¿ý (<tt>man1</tt> - <tt>man9</tt>), ¦Ó®Ú¾Ú¨º¦A­«·s©R¦W. Á|¨Ò¦Ó¨¥, ¦pªG Xfoo.man µ²ªG¬O¦b /usr/man/man4, ¨ºÀ³¸Ó©R¦W¬° Xfoo.4 (mv Xfoo.man Xfoo.4). ®Ú¾Ú¤@¯ë¬ù©w¨Ï¥ÎªÌªº©R¥OÂ\¦b <tt>man1</tt>, ¹CÀ¸¬O¦b <tt>man6</tt>, ¦ÓºÞ²zªº®M¥ó¬O¦b <tt>man8</tt> (¬Ý¤@¤U <em>man ¤å¥ó</em> ¥H¨ú±o§ó¸Ô²Ó¸ê®Æ).·íµM,¦b§A¨t²Î§A¥i¥H¤£·Ó³o­Ó¬ù©w, ¥u­n§A³ßÅw. ¬Y¨Ç®M¥ó¤£·|¦w¸Ë¤G¤¸½X(binaries)¦b¦X¾Aªº¨t²Î¥Ø¿ý, ´«¥y¸Ü»¡, ¥L­Ì¨S¦³ <em>install</em> ¿ï¶µ¦b <tt>Makefile</tt> ¤¤. ¦pªG¬O³o±¡ªp, §A¥i¥H¥Î root ¨­¤À½Æ»s¤G¤¸½X(binaries)¨ì <tt>usr/local/bin</tt> ¥Ø¿ý¨Ó¤â°Ê¦w¸Ë¤G¤¸½X(binaries). ª`·Nªº¬O¬Y¨Ç©Î¥þ³¡¤W­z¨BÆJ,¦b¤j³¡¤À±¡§Î¤U,À³¸Ó·|¥Ñ <bf>make install</bf> ¨Ó¦Û°Ê¾Þ§@. ¦pªG¬O³o¼Ë, <tt>README</tt> ©Î <tt>INSTALL</tt> ¤å¥óÀÉ·|´£¨ì³o­Ó. <sect>²Ä¤@­Ó¨Ò¤l: Xscrabble <p> Matt Chapmanªº <bf>Xscrabble</bf> ¦ü¥G¹³¬O­Ó»á¦³½ìªºµ{¦¡, ¦]¬°§Ú´¿¬O­Ó³g°ýªº Scrabble<tt>&tm;</tt>(«÷¦r¹CÀ¸)ª±®a.§Ú¤U¸ü¤U,¸ÑÀ£, ¦Ó¥B«Ø¥ß¥¦¥H README Àɮפ¤ªº¤U¦C¨BÆJ: <tscreen><verb> xmkmf make Makefiles make includes make </verb></tscreen> <em>·íµM¥¦¤£¯à¥¿±`¹B§@...</em> <code> 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... </code> §Ú¦b <htmlurl url="news://comp.os.linux.x" name="comp.os.linux.x"> ªº·s»D¸s²Õ¸ß°Ý¹L, ¦Ó¥B¦³¨Ç¤H¦n¤ßªº«ü¥X¦ü¥G Xt, Xaw, Xmu, ©M X11 libs ¨S¦³Åý³sµ²¾¹(linker)§ä±o¨ì. ¶â... ¦³¨â­Ó¥D­nªº Makefiles, ¦Ó¥B¦b <tt>src</tt> ¥Ø¿ý¤Uªº¨º­ÓÅý§Ú·P¿³½ì. ¦b Makefile ¤@¦æ¦³©w¸q LOCAL_LIBS ¦¨: LOCAL_LIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) ³o©Ò«üªº libs ¨Ã¨S¦³³Q³sµ²¾¹§ä¨ì. §ä§ä¤U­Ó«ü¨ì LOCAL_LIBS ªº¦a¤è, §Ú¬Ý¨ì¸Ó¦b Makerfile ªº495¦æ: <tscreen><verb> $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBS) $(LDLIBS) $(EXTRA_LOAD_FLAGS) </verb></tscreen> ¦Ó²{¦b LDLIBS ¬O¤°»ò©O? <tscreen><verb> LDLIBS = $(LDPOSTLIB) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) </verb></tscreen> SYS_LIBRARIES ¬O: <tscreen><verb> SYS_LIBRARIES = -lXpm -L../Xc -lXc </verb></tscreen> ¬O­Ó! ´N¬O³o¼Ë¿ò¥¢ libraries. ¤j·§³sµ²¾¹»Ý­n¦b LOCAL_LIBS ¤§«e¬Ý¨ì LDLIBS... ©Ò¥H, ²Ä¤@¥ó¨Æ­n¹Á¸Õ¥h­×§ï Makefile ´N¬O§ï¼g¦b495¦æªº $(LOCAL_LIBS) ©M $(LDLIBS) , ©Ò¥H¥¦²{¦bÅܦ¨: <tscreen><verb> $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LDLIBS) $(LOCAL_LIBS) $(EXTRA_LOAD_FLAGS) ^^^^^^^^^^^^^^^^^^^^^^^ </verb></tscreen> ¦b¤W­±ªº§ï«á,§Ú¸ÕµÛ¦A¦¸°õ¦æ <bf>make</bf> , Á@, ¥¦³o¦¸¥i¥¿±`¶]¤F. ·íµM, Xscrabble ¤´µM»Ý­n¤@¨Ç·L½Õ(fine tuning]»Pª±§Ë(twiddling), ¹³¬O­«·s©R¦W¦r¨å¥H¤Î¼Ðµù¬Y¨Ç»²§Uªº±Ô­z¦b­ì©l½XÀɮפ§¤@, ¦ý¥¿¦]¬°¨º¼Ë,¥¦¤wµ¹§Ú¦n´X­Ó¤p®Éªº®ø»º. §A¥i¥H±H e-mail <url url="mailto:matt@belgarath.demon.co.uk" name="Matt Chapman">, ¦Ó¥B±q¥Lªº <url url="http://www.belgarath.demon.co.uk/programs/index.html" name="home page"> ¤U¸ü <bf>Xscrabble</bf>. <code> Scrabble ¬O Milton Bradley Co., Inc. ªºµù¥U°Ó¼Ð. </code> <sect>²Ä¤G­Ó¨Ò¤l: Xloadimage <p> ³o­Ó¨Ò¤l´£¥X¸û²³æªº°ÝÃD. <bf>xloadimage</bf> µ{¦¡¥[¤J¨ì§Úªº¹Ï§Î¤u§@²Õ¦ü¥G¬O«Ü¦³¥Î. §Ú±q¤@¥»¥Ñ Mui ©M Quercia ©ÒµÛªº¦n®Ñ <ref id="refs" name="X User Tools"> ©Òªþªº CD ¤Wªº­ì©l½X¥Ø¿ý(source directory), ª½±µ½Æ»s <em>xloadi41.gz</em> ÀɮפU¨Ó. ¦p¹w´Áªº, ¥Î <bf>tar xzvf</bf> ¸Ñ¶}©Ò¦³ÀÉ®×. µM¦Ó, <bf>make</bf> ¥X²{¤F¥O¤H°Q¹½ªº¿ù»~¦Ó¥B¤¤Â_. <code> 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 </code> ³o¿ù»~°T®§§t¦³³Ì®Ú¥»ªº½u¯Á. ¬Ý¤@¤UÀÉ®× <em>image.h</em> ªº23¦æ. <code> #include <stdlib.h> </code> °Ú«¢! ¦b <em>xloadimage</em>, <tt>wchar_t</tt> ­ì©l½Xªº¬Y³B¤w¸g­«½Æ©w¸q¤F¦b¼Ð·Ç include ÀÉ®× <tt>stdlib.h</tt> ¤w©w¸qªºªF¦è. ­º¥ý¸Õ¸Õ±N¦b <tt>image.h</tt> ªº23¦æ¼Ðµù(commenting out)°_¨Ó, ¤]³\ <tt>stdlib.h include</tt> ¬O¤£¤j»Ý­nªº. ¦¹®É, <em>build</em> ¹Lµ{¨S¦³¥ô¦ó­«¤j¿ù»~. <bf>xloadimage</bf> µ{¦¡²{¦b¥\¯à³£¥¿±`. <sect>²Ä¤T­Ó¨Ò¤l: Fortune <p> ³Ì«á¨Ò¤l»Ý­n¬Y¨Ç C µ{¦¡³]­pª¾ÃÑ. ¤j³¡¤Àªº Linux ³nÅé¬O¥Î C ¼gªº, ¦Ó¥B¦Ü¤Ö¾ÇÂI C ©úÅ㪺¹ï¥ô¦ó·Q³nÅé¦w¸Ëªº¤H·|¦³§U¯q. ´c¦W¬L¹üªº(notorious) <em>fortune</em> µ{¦¡¦b¨C¦¸ Linux ¶}¾÷°_¨Ó®É¨q¥X«ÕÀqªº¿Î»y "fortune cookie". ¤£©¯¦a (¦³ÂùÃö·N«äªº), ³]ªk¦b Red Hat µo¦æ®M¥ó 2.0.30 ªº®Ö¤ß¤U«Ø¥ß,¥X²{¤F ¤@°ïÄY­«ªº¿ù»~. <code> ~/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 </code> ¬Ý¤@¤U <tt>fortune.c</tt>, ¦³ÃöÁpªº´X¦æ¦b³o. <code> if (dirent->d_namlen == 0) continue; name = copy(dirent->d_name, dirent->d_namlen); </code> §Ú­Ì»Ý­n§ä¥X <tt>dirent</tt> ªº structure, ¦ý¥¦¨S¦³«Å§i(declared)¦b <em>fortune.c</em> Àɮפ¤, ·Q¥Î <bf>grep dirent</bf> ¨Ó¨q¥X¬O§_¦b¨ä¥¦­ì©l½XªºÀɮפ¤, ¦ý¤]¨S¦³. µM¦Ó, ¦b <em>fortune.c</em> Àɪº³Ì¤W¤è¦³¤U¦C³o¦æ. <code> #include <dirent.h> </code> ³o¦ü¥G¬O¨t²Î¨ç¦¡®wªº include ÀÉ®×, ©Ò¥H­n§ä <em>dirent.h</em> ªº¦X²z¦ì¸m¬O¦b <em>/usr/include</em>. ¨Æ¹ê¤W, <em>dirent.h</em> ªº½T¦³¦b <em>/usr/include</em> ¤¤, ¦ý¸ÓÀɨS¦³¥]§t <tt>dirent</tt> ªº structure. µM¦Ó, °Ñ¦Ò¥t¤@­Ó <em>dirent.h</em> ÀÉ. <code> #include <linux/dirent.h> </code> ³Ì«á, ¥h <em>/usr/include/linux/dirent.h</em>, §Ú­Ì¥i§ä¨ì§Ú­Ì©Ò»Ý­n«Å§iªº structure. <code> struct dirent { long d_ino; __kernel_off_t d_off; unsigned short d_reclen; char d_name[256]; /* We must not include limits.h! */ }; </code> ¨¬°÷¦a½T©w, ³o­Ó structure «Å§i¨S¦³¥]§t <em>d_namelen</em>, ¦ý¦³¤@¹ï»P¨ä¬Û·íªº¿ï¾Ü. ¨ä¤¤³Ì¥i¯àªº¬O <em>d_reclen</em>, ¦]¬° ³o­Ó structure member ªí¥Ü¬Y¼ËªF¦èªº length ¦Ó¥B¥¦¬O short integer. ¨ä¥L¤j²¤, <em>d_ino</em>, ¥i¯à¬O inode number, §PÂ_¥¦ªº name ©M type. ¨Æ¹ê¤W, §Ú­Ì¤j·§¬O³B²z "directory entry" structure, ¦Ó¤¸¯Àªí¥ÜÀÉ®×ÄÝ©Ê, ¥¦ªº¦WºÙ, inode, ©M length (¥H blocks §@³æ¦ì). ³o¦ü¥G¹ï§Ú­Ìªº²q·Q«Ü¦X²z. §Ú­Ì½s¿èÀÉ®× <em>fortune.c</em>, ¦Ó¥B§ïÅܦb551¦æ©M553¦æªº <tt>d_namelen</tt> Åܦ¨ <tt>d_reclen</tt>. ¦A¸Õ¸Õ <tt>make all</tt>. <bf>Success.</bf> ³o¦¸«Ø¥ß¨S¦³¿ù»~. §Ú­Ì²{¦b¯à°÷±q <em>fortune</em> Àò±o "cheap thrills" <sect>­þùØ¥i§ä¨ì­ì©l½XÀÉ®× <p> ²{¦b§A«Ü´÷±æªº¨Ï¥Î§A³Ì·sÀò±oªºª¾ÃѨӥ[¤J¤@¨Ç¤u¨ã©M¨ä¥¦¦nªF¦è¨ì§Aªº¨t²Î, §A¥i¥H¦b½u¤W§ä¨ì¥¦­Ì, <url url="http://www.redhat.com/linux-info/linux-app-list/linapps.html" name="Linux Applications and Utilities Page">, ©ÎªÌ¦b«Ü¦X²z»ù¦ìªº CD ROM ªºÀÉ®×, ÂÇ¥Ñ <url url="http://www.redhat.com/" name="Red Hat">, <url url="mailto:orders@infomagic.com" name="InfoMagic">, ¥H¤Î¨ä¥¦ªº. ¤@­Ó²³¦h­ì©l½XªºÄ_®w¬O¦b <url url="ftp://ftp.vix.com/pub/usenet/comp.sources.unix/" name="comp sources UNIX archive">. «Ü¦h UNIX ­ì©l½Xµoªí¦b <htmlurl url="news://alt.sources" name="alt.sources"> ·s»D¸s²Õ. ¦pªG§A­n§ä¯S§Oªº­ì©l½X¥]¸Ëªº, §A¥i¥H¶K¦b¬ÛÃöªº <htmlurl url="news://alt.sources.wanted" name="alt.sources.wanted"> ·s»D¸s²Õ. ¥t¥~¤@­Ó¤£¿ùªº¦a¤è¬O¬d¬Ý <htmlurl url="news://comp.os.linux.announce" name="comp.os.linux.announce"> ·s»D¸s²Õ. ­n¨ú±o¦b <url url="mailto:unix-sources@pa.dec.com" name="Unix sources"> ªº³q«H½×¾Â, ½Ð±H­Ó <em>subscribe</em> °T®§¨ì¨º. ¦Ü©ó<htmlurl url="news://alt.sources" name="alt.sources"> ·s»D¸s²ÕªºÀɮ׬O¦b¤U­± ftp ¯¸: <itemize> <item><url url="ftp://ftp.sterling.com/usenet/alt.sources/" name="ftp.sterling.com/usenet/alt.sources/"> <item><url url="ftp://wuarchive.wustl.edu/usenet/alt.sources/articles" name="wuarchive.wustl.edu/usenet/alt.sources/articles"> <item><url url="ftp://src.doc.ic.ac.uk/usenet/alt.sources/articles" name="src.doc.ic.ac.uk/usenet/alt.sources/articles"> </itemize> <sect>µ²»y <p> Á`µ², ¦Ê§é¤£¼¸·|¨Ï¤°»ò³£Åܦ¨¤£¤@¼Ë (¦Ó¥B°ªÃø«×®À§éªùÂe©úÅã·|¦³À°§U). ¨Ï¥X¥þ¤O,±q¥¢±Ñ¤¤Àò±o¾Ç²ß§ó¬O­«­n. ¦b¨C­Ó¹L¥¢ªº¨B¥ï, ¨C­Ó¥¢±Ñ³y´N¤F¯à°÷´x´¤ <bf>«Ø¥ß³nÅéÃÀ³N</bf> ªºª¾ÃÑ­ÓÅé. <sect>°Ñ¦Ò»P¶i¤@¨B¾\Ū¸ê®Æ<label id="refs"> <p> <tscreen><verb> BORLAND C++ TOOLS AND UTILITIES GUIDE, Borland International, 1992, pp. 9-42. [Borland C++, ver. 3.1. ªºµo¦æ¤â¥U¤§¤@. µ¹¤F«Ü¦n¤¶²Ð¦b»yªk©M·§©À¤W, ¨Ï¥Î Borland ¦b DOS ¤U´Ý¾lªº¹ê§@.] DuBois, Paul: SOFTWARE PORTABILITY WITH IMAKE, O'Reilly and Associates, 1996, ISBN 1-56592-226-3. [³o¾Ú»¡¬O§¹¾ãªº imake °Ñ¦Ò¸ê®Æ, ÁöµM§Ú¦b¼g¥»¤å®É,ÁÙ¥¼¨ú±o.] Frisch, Aeleen: ESSENTIAL SYSTEM ADMINISTRATION, O'Reilly and Associates, 1995, ISBN 1-56592-127-5. [³o¬O¨ä¥¦¨ô¶Vªº¨t²ÎºÞ²z¤â¥U¤w¸g¦³·§²¤¼h­±ªº½Í¨ì«Ø¥ß³nÅé.] Lehey, Greg: PORTING UNIX SOFTWARE, O'Reilly and Associates, 1995, ISBN 1-56592-126-7. Mui, Linda ©M Valerie Quercia: X USER TOOLS, O'Reilly and Associates, 1994, ISBN 1-56592-019-8, pp. 734-760. Oram, Andrew ©M Steve Talbott: MANAGING PROJECTS WITH MAKE, O'Reilly and Associates, 1991, ISBN 0-937175-90-0. Peek, Jerry ©M Tim O'Reilly »P Mike Loukides: UNIX POWER TOOLS, O'Reilly and Associates / Random House, 1997, ISBN 1-56592-260-3. [«Ü´Îªº·§©À¨Ó·½, ¦Ó¥B¦³¤j¶q¨Ï¥Î¤u¨ã§A¥i¯à±q­ì©l½X¨Ó«Ø¥ß, ¨Ï¥Î¦b¥»¤å¤¤°Q½×ªº¤èªk.] Stallman, Richard M. ©M Roland McGrath: GNU MAKE, Free Software Foundation, 1995, ISBN 1-882114-78-7. [À³¸Ó¬O»Ý­n¾\Ūªº.] Welsh, Matt ©M Lar Kaufman: RUNNING LINUX, O'Reilly and Associates, 1996, ISBN 1-56592-151-8. [¤´µM¬O¥þ³¡ Linux °Ñ¦Ò¸ê®Æ³Ì¦nªº, ÁöµM¦b¬Y¨Ç¦a¤è¯Ê¤Ö¤ñ¸û²`¤J°Q½×.] </verb></tscreen> ·íµMÁÙ¦³ <em>make</em>, <em>imake</em>, <em>xmkmf</em>, <em>gcc</em>, <em>ldconfig</em>, <em>gzip</em>, <em>tar</em>, ©M <em>patch</em> ªº <tt>man pages</tt>. </article>