<!doctype linuxdoc system>

<article>

<!-- Title information -->

<title>¦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«äÄ³,
´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>
