\documentclass[letterpaper]{article}
\nonstopmode
\akai
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage{url}
\usepackage[latin1]{inputenc}
\usepackage{t1enc}
\usepackage[english]{babel}
\usepackage{epsfig}
\usepackage{null}
\def\addbibtoc{
\addcontentsline{toc}{section}{\numberline{\mbox{}}\relax\bibname}
}%end-preamble
\setcounter{page}{1}
\title{¦b Linux ¤U«Ø¥ß³nÅé®M¥ó}
\author{{\ttfamily §@ªÌ:\nameurl{mailto:thegrendel@theriver.com}{Mendel Leo Cooper}}
{\ttfamily \onlynameurl{http://personal.riverusers.com/\~{}thegrendel/}}\\ 
{\ttfamily Ä¶ªÌ:\nameurl{mailto:r6921068@ms.cc.ntu.edu.tw}{J.S.Lin}} }
\date{v1.52, 27 December 1997}
\abstract{³o¬O¥÷¼sªx«ü¤Þ¤å¥ó,¥i¥Î¨Ó«Ø¥ß"¤@¯ë©Ê" UNIX ³nÅéµo¦æ®M¥ó¦b Linux ¤U. }


\begin{document}
\maketitle
\tableofcontents

\section{Â²¤¶}

«Ü¦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«ü¤Þ©Ò¸Ñ»¡¤@¼Ë.










\section{±q¨ú±o¶}©l}

§A¦³¤U¸ü©Î¨ä¥¦¤è¦¡¨ú±o¤@­Ó³nÅé®M¥ó. ³Ì±`¨£±¡ªp¬O¥¦³Q¥´¥]°_¨Ó ({\itshape tarred\/})
¦Ó¥B³QÀ£ÁY ({\itshape gzipped\/}), ¦¨¬° {\ttfamily .tar.gz} ©Î  {\ttfamily .tgz} §Î¦¡.
­º¥ý±N¥¦½Æ»s¨ì¤@¤u§@¥Ø¿ý. µM«á¥Î {\itshape untar\/} ©M {\itshape gunzip\/} ³B²z¥¦.
³B²z¥¦³Ì¾A¦Xªº©R¥O¬O {\bfseries tar xzvf {\itshape filename\/}}, ³oùØªº 
{\itshape filename\/} ·íµM¬O³nÅéÀÉ¦W. 
³oºØ¸Ñ¶}µ{§Ç±`±`·|¦w¸Ë¾A·íÀÉ®×¦b¥¦©Ò¶}±Òªº¤l¥Ø¿ý¤¤.
ª`·Nªº¬O¦pªG®M¥ó¦WºÙ¦³ {\itshape .Z\/} µ²§À, ¨º±N­n¨Ï¥Î
{\bfseries uncompress PACKAGENAME}, µM«á¦A¥Î {\bfseries tar xvf PACKAGENAME}
¦Ó¤£­n¥Î¤§«eªº¨BÆJ.  

¦³®É¥´¥]°_¨ÓªºÀÉ®×¥²¶· {\itshape untarred\/} 
¥B¦w¸Ë¦Û¨Ï¥ÎªÌªº®a¥Ø¿ý(home directory),
©ÎªÌ¤]³\¬O¦b¬Y­Ó¨ä¥¦¥Ø¿ý, ¹³¬O®M¥ó³]©w¸ê®Æ©Ò«ü©wªº. 
°²­Y§A³]ªk­n {\itshape untar\/} ¥¦¦Ó±o¨ìªº¬O¿ù»~°T®§, ¤]³\´N¬O¨º­ì¦].
Åª¤@¤U®M¥ó¤å¥ó, ¯S§O¬O {\ttfamily README} ©M/©Î {\ttfamily Install} ÀÉ®×,
¦pªG¦s¦b, ½s¿è³]©wÀÉ®×©M/©Î {\ttfamily Makefiles} ¦p©Ò»Ý­nªº, §Y»P¦w¸Ë«ü¥Ü²Å¦X.
ª`·Nªº¬O³q±` {\bfseries ¤£} ¥h§ó§ï {\ttfamily Imake} ÀÉ®×, ¦]¬°³o¥i¯à¦³¥¼¹w´Áªºµ²ªG.
¬Y¨Ç³nÅé®M¥ó¤¹³\¦Û°Ê¦w¸Ëµ{§Ç,¥¦¬OÂÇ¥Ñ°õ¦æ {\bfseries make install} 
¨Ó©ñ¸m¤G¤¸½X¦b¾A·í¨t²Î¦ì¸m.

°¸¦Ó, §A¥i¯à»Ý­n¨Ï¥Î {\ttfamily patchÀÉ®×},¸ÓÀÉ®×¦³¦C¥X­ì¥»ªº»P·sªº­ì©lÀÉ®×ªº®t²§,
¨Ó¤É¯Å©Î¥[¤J¯äÂÎ(bug)ªº­×¥¿¦Ü¥¼¥´¥](unarchived)ªº­ì©lÀÉ®×.
docÀÉ®×»P/©Î {\ttfamily README} ÀÉ®×·|§iª¾§A³oºâ¤£ºâ¸Ó±¡ªp. 
¹ï©ó¨Ï¥Î Larry Wall ªº±j¤O {\ttfamily ­×¸É(patch)} ¤u¨ã¤§¥¿±`ªº»yªk(syntax)¬O
{\bfseries patch {$<$} patchfile}.

§A²{¦b¥i¥H¶}©l¶i¦æ {\itshape «Ø¥ß\/} ¹Lµ{¶¥¬q¤F.










\section{¨Ï¥Î Make}

{\ttfamily Makefile} ¬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 ¶}±Ò {\ttfamily cc} ©Î {\ttfamily gcc}.
³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 {\itshape make\/} ³q±`¥u­nÁä¤J {\bfseries make}.
³o³q±`«Ø¥ß°Q½×¤¤ªº®M¥ó©Ò¦³»Ý­nªº¥i°õ¦æÀÉ.
µM¦Ó, {\itshape make\/} ¤]°µ¨ä¥L¤u§@,¹³¬O¦w¸ËÀÉ®×¦Ü¦X¾Aªº¥Ø¿ý ({\bfseries make install})
¦Ó¥B§R°£ÂÂªº object ÀÉ®× ({\bfseries make clean}). 
°õ¦æ {\bfseries make -n} ¤¹³\¹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 {\ttfamily X11} libraries ¨Ó¦w¸Ë«Ø¥ß®É.
{\itshape Imake\/} ©M {\itshape xmkmf\/} ¥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 {\itshape xmkmf\/} ©M {\itshape make\/} ¥i¯à»Ý­n¥H root ¨­¤À¨Ó¤U«ü¥O,
¯S§O¬O·í {\bfseries make install} ¨Ó·h²¾¤G¤¸½X¨ì {\ttfamily /usr/bin} 
©Î {\ttfamily /usr/local/bin} ¥Ø¿ý. ¥H¤@¯ë¨Ï¥ÎªÌªº¨­¤À¦Ó¤£¨ã root Åv¤O
¨Ó¨Ï¥Î make ±N¥i¯à·|¾É­P {\ttfamily write access denied} ªº¿ù»~°T®§,
¦]¬°§A¯Ê¤Ö¼g¤J(write)¦Ü¨t²Î¥Ø¿ýªºÅv­­. ¤]ÀË¬d¤@¤U,
©Ò³y¥X¨Óªº¤G¤¸½X¹ï§A»P¥ô¦ó¨ä¥L¾A¥Îªº¨Ï¥ÎªÌ¦³¾A¦Xªº°õ¦æ(execute)Åv­­.

¤U«ü¥O {\bfseries xmkmf} ¨Ó¨Ï¥Î {\itshape Imake\/} ÀÉ®×, 
«Ø¥ß¤@­Ó·sªº¦Ó¥B¾A¦X§A¨t²Îªº Makefile. ¥¿±`¦a¤U«ü¥O {\bfseries xmkmf} ³£·|ªþ¥[
{\bfseries -a} ¤Þ¼Æ, ¦]¦Ó¦Û°Ê¦a°µ {\itshape make Makefiles, make includes,\/}
©M {\itshape make depend\/} ªº°Ê§@. ³o·|³]©wÅÜ¼Æ(variables)©Mµ¹©w¨ç¦¡®w(library)
¦ì¸mµ¹½sÄ¶¾¹©M³sµ²¾¹. ¦³®É·|¨S¦³ {\itshape Imake\/} ÀÉ®×, ¤Þ¦Ó¥N¤§ªº¬O¦³
{\itshape INSTALL\/} ©M {\itshape configure\/} ªº script, ¤]·|¨ì³o¼Ëªº¥Øªº. 
ª`·Nªº¬O¦pªG§A­n°õ¦æ  {\itshape configure\/}, ¨º­n¤U«ü¥O {\bfseries ./configure}
¥H½T«O¦b¥Ø«e¥Ø¿ý¤U¥¿½Tªº script {\itshape configure\/} ¬O³Q©I¥s.
¦b¤j³¡¤Àªº±¡ªp, ¦bµo¦æ®M¥ó¤¤ªº {\itshape README\/} ÀÉ®×·|»¡©ú¦w¸Ë¨BÆJ.

³q±`¤@­Ó¦nªº¤èªk¬O±q¥~Æ[ÀËµø¤@¤U {\ttfamily Makefile} ¬O {\ttfamily xmkmf} ©Î
¨ä¤¤¤@­Ó¦w¸Ëªº scripts ©Ò³y¥X¨Óªº.  Makefile ¥¿±`¤U·|¬°§Aªº¨t²Î¦Ó­×¥¿,
¦ý§A°¸¦Ó¥i¯à»Ý­n"±Û§á(tweak)"©Î¤â°Ê¦a­×¥¿¿ù»~.



§Aªº¤@¯ë¦w¸Ë¨BÆJ±N·|¬O:
\begin{itemize}
\item Åª¤@¤U {\itshape README\/} ÀÉ®×©M¨ä¥¦¦X¥Îªº¤å¥ó.
\item °õ¦æ {\bfseries xmkmf -a}, ÁÙ¬O {\itshape INSTALL\/} ©Î {\itshape configure\/} 
script.
\item ÀË¬d¤@¤U {\ttfamily Makefile}.
\item ¦pªG»Ý­n, °õ¦æ¤@¤U {\bfseries make clean}, {\bfseries make Makefiles},  
{\bfseries make includes}, and {\bfseries make depend}.
\item °õ¦æ {\bfseries make}.
\item ÀË¬d¤@¤UÅv­­.
\item ¦pªG»Ý­n, °õ¦æ¤@¤U {\bfseries make install}.
\end{itemize}







\section{§JªA§xÃø}



¦pªG¥Î {\bfseries xmkmf} ©M/©Î {\bfseries make} «Ü¦¨¥\¨S¦³¿ù»~,
§A¥i¥HµÛ¤â©ó \ref{finalsteps} {(next section)}.
µM¦Ó, ¦b¯u¹ê¥Í¬¡, «Ü¤Ö¨Æ±¡¦b²Ä¤@¦¸´N¥¿½Tªº¤u§@.
³o´N¬O·í§Aªº¾÷´¼Â×´I®É,­n«i©ó¹Á¸Õ.




\subsection{³sµ²¿ù»~}

\begin{itemize}
\item ¦pªG {\bfseries make} ¥¢±Ñ¦Ó¥X²{¦³ {\ttfamily Link error: -lX11:
No such file or directory}, ¬Æ¦Ü¬O¦b¨Ï¥Î {\bfseries xmkmf} «á.
³o¥i¯à·N¨ýµÛ {\itshape Imake\/} ÀÉ®×¨S¦³¾A·í¦a¸Ë¦n. 
ÀË¬d {\itshape Makefile\/} ªº²Ä¤@³¡¤À¦³¨S¦³¹³³o¼Ëªº´X¦æ:

\begin{tscreen}
\begin{verbatim}
LIB=            -L/usr/X11/lib
INCLUDE=        -I/usr/X11/include/X11
LIBS=           -lX11 -lc -lm
\end{verbatim}
\end{tscreen}


{\ttfamily -L} ©M {\ttfamily -I} ¤Á´«¾¹(switches)·|³q§i½sÄ¶¾¹©M³sµ²¾¹¤À§O¥h­þùØ´M§ä {\itshape library\/} ©M {\itshape include\/} ÀÉ®×.
¦b³o¨Ò¤l,  {\itshape X11 libraries\/} À³¸Ó¬O¦b {\ttfamily /usr/X11/lib} ¥Ø¿ý,
¦Ó  {\itshape X11 include ÀÉ®×\/} À³¸Ó¬O¦b {\ttfamily /usr/X11/include/X11}¥Ø¿ý.
¦pªG³o¦b§Aªº¾÷¾¹¤W¬O¤£¹ïªº, ¥²¶·§ïÅÜ {\itshape Makefile\/} ¦Ó¥B¦A¸Õ¸Õ 
{\bfseries make}. 
\end{itemize}


\begin{itemize}
\item ¦b«D±`¤Öªº±¡ªp, ¥H {\itshape root\/} ¨­¤À¶]¤@¤U {\bfseries ldconfig} 
¤]³\¬O­Óµª®×:

{\bfseries \# /etc/ldconfig -n /lib} ±N·|§ó·s¦@¨É¦¡¨ç¦¡®w²Å¸¹³sµ²
(shared library symbolic links). {\itshape ³o¦b¥¿±`ªº±¡§Î¤U¤£¬O»Ý­nªº\/}.
\end{itemize}


\begin{itemize}
\item ¥Ø«e¥t¤@¥ó¨Æ¬O¦pªG {\bfseries xmkmf} ¥¢±Ñ, «h¸Õ¸Õ¤U¦C script:
\begin{tscreen}
\begin{verbatim}
         make -DUseInstalled -I/usr/X386/lib/X11/config
\end{verbatim}
\end{tscreen}

\end{itemize}






\begin{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¤è.
{\ttfamily R5 libs} ¬O¦³ {\ttfamily libX11.so.3.1.0}, {\ttfamily libXaw.so.3.1.0}, 
©M {\ttfamily libXt.so.3.1.0}. ¤@¯ë§A»Ý­n³sµ²¦Ü, ¹³¬O
{\bfseries libX11.so.3 -{$>$} libX11.so.3.1.0}. 
¤j·§³nÅé¤]»Ý­n³o­Ó§Î¦¡³sµ² {\bfseries libX11.so -{$>$} libX11.so.3.1.0}.
·íµM, ­n±N³o"Â_±¼(missing)"ªº³sµ²«Ø¦n, ­n¥H {\itshape root\/} ¨­¤À¨Ï¥Î³o«ü¥O
{\bfseries ln -s libX11.so.3.1.0 libX11.so}.
\end{itemize}




\begin{itemize}
\item ¬Y¨Ç®M¥ó·|­n¨D§A¥h¦w¸Ë¤@­Ó©Î¥H¤Wªº¤É¯Åª©¥». Á|¨Ò¦Ó¨¥, 
StarDivision GmbH ªº {\itshape StarOffice\/} ²Õ¥ó(suite)¬O´c¦W¬L¹ü(notorious)ªº­n¨D
{\ttfamily libc} version 5.4.4 ©Î§ó·s. ¥H {\itshape root\/}¨­¤À,
§A»Ý­n½Æ»s¤@­Ó©Î¥H¤Wªº¨ç¦¡®w(libraries)¦Ü¦X¾Aªº¥Ø¿ý, 
§R¥hÂÂªº¨ç¦¡®w(libraries),µM«á­«³]²Å¸¹³sµ².

{\bfseries ¤p¤ß: ¦b³o­n®æ¥~ª`·N, ¦]¬°¦pªG§A§ËÁV, §A¥i¯à·|¥I¥X§Aªº¨t²Î¤£¯à¹B§@ªº¥N»ù}.

§A³q±`¥i¥H§ä¨ì¤É¯Åªº¨ç¦¡®w(libraries)¦b \nameurl{ftp://sunsite.unc.edu}{Sunsite}.
\end{itemize}





\subsection{¨ä¥¦°ÝÃD}



\begin{itemize}
\item ¦b¦w¸Ë¦nªº {\itshape Perl\/} ©Î shell script µ¹§A¤@­Ó {\ttfamily No such file or directory} ¿ù»~°T®§. ¦b³o±¡ªp,ÀË¬dÀÉ®×Åv­­¨Ó½T©wÀÉ®×¥i°õ¦æ
¥H¤ÎÀË¬dÀÉ®×¼ÐÀY¬O§_§t¦³¨Ï¥Î shell ©Îµ{¦¡, «ü©ú script ©Ò¦b¦a¤è.
Á|¨Ò¦Ó¨¥, script ¶}©l¦p:
\begin{tscreen}
\begin{verbatim}
#!/usr/local/bin/perl
\end{verbatim}
\end{tscreen}

¦pªG {\itshape Perl\/} ¹ê»Ú¸Ë¦b§Aªº {\ttfamily /usr/bin} ¥Ø¿ý,
¦Ó¤£¬O {\ttfamily /usr/local/bin} ¥Ø¿ý, ¨º»ò script µLªk°õ¦æ.
¦³¨â­Ó¤èªk¨Ó­×§ï. script ÀÉ®×¼ÐÀY§ï¦¨ {\ttfamily \#!/usr/bin/perl}, 
©Î¥Î²Å¸¹³sµ²¦Ü¥¿½Tªº¥Ø¿ý, {\bfseries ln -s 
/usr/bin/perl /usr/local/bin/perl}. 
\end{itemize}


\begin{itemize}
\item ¬Y¨Ç X11 ³nÅé­n¨D¦³ {\ttfamily Motif} ¨ç¦¡®w(libraries)¤~¯à«Ø¥ß.
¦Ó¼Ð·Çªº Linux µo¦æ®M¥ó¨Ã¨S¦³¦w¸Ë Motif libraries, ¦Ó¥B¥Ø«e Motif
ÁÙ­nÃB¥~ \$100-\$200 ªºªá¶O (ÁöµM§K¶O³nÅé
\nameurl{http://www.lesstif.org/}{Lesstif} ¦b¬Y¨Ç³õ¦X¤]¯à°÷¥Î).
¦pªG§A»Ý­n Motif ¨Ó«Ø¥ß¬Y¤@®M¥ó, ¦ý¯Ê¤Ö Motif libraries, 
¨º»ò¤]³\¥i¥H¨ú±o {\itshape ÀRºA³sµ²ªº¤G¤¸½X(statically linked binaries)\/}.
ÀRºA³sµ²¦b¤G¤¸½X¥»¨­¯Ç¤J¨ç¦¡®w¦æµ{(library routines).
³o³y¦¨¤G¤¸½XÀÉ®×¤j¤F³\¦h, ¦ý¬O½X¥i¦b¯Ê¤Ö¸Ó¨ç¦¡®wªº¨t²Î¤W°õ¦æ.
\end{itemize}




\begin{itemize}
\item °õ¦æ {\itshape configure\/} script ·|³Ð³y©_©Çªº {\ttfamily Makefile},
¨º¹³¬O»P§A©Ò­n³]ªk«Ø¥ßªº®M¥ó­½¤£¬Û¤z. ³oªí¥Ü¶]µÛ¿ù»~ªº {\itshape configure\/},
¨ä§ä¨ì§Aªº path ¤W¬Y³B¨ä¥Lªº configure. ©Ò¥H­n¤U {\itshape configure\/} «ü¥O
À³¸Ó­n¤U¦¨ {\bfseries ./configure} §Y¥Ø«e¥Ø¿ý¤Uªº.
\end{itemize}




\begin{itemize}
\item ¬Y¨Çµ{¦¡·|­n¨D¦³ {\itshape setuid root\/}, ¬°¤F­n¥H¦³ {\itshape root Åv¤O\/} 
¨Ó°õ¦æ. ­n¹F¦¨³o¥Ø¿ýªº«ü¥O¬O {\itshape ¥Hroot\/} ¤U«ü¥O
{\bfseries chmod u+s filename}. (ª`·Nªº¬O³oµ{¦¡¤w¸g¬O {\itshape root\/} ©Ò¾Ö¦³¤F).
³o¦b³]©wÀÉ®×Åv­­¤¤ªº {\itshape setuid\/} 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 °õ¦æ,
¦ýµ¹¤@¯ë¨Ï¥ÎªÌ¤@­Ó {\itshape access denied\/} ªº¿ù»~°T®§, ·Q¹³´N¬O³o¼Ë³y¦¨ªº.



{\bfseries Äµ§i:}   
¤@­Ó¦³ {\itshape setuid\/} ¦¨ root ªºµ{¦¡¥i¯à´£¥X¹ï§Aªº¨t²Î¦³¦w¥þ¤Wªº­·ÀI.
³o­Óµ{¦¡¥i¥H root Åv¤O¨Ó¶]¦Ó©Ò¥H¦³¬Y¨Ç¯}®`ªº¼ç¦b©Ê. 
¦b³]©w {\itshape setuid\/} bit «e, ½T©w§Aª¾¹D¸Óµ{¦¡¦b°µ¤°»ò, ¥²­n®É¬Ý¤@¤U­ì©l½X.



\end{itemize}







\subsection{±Û§á»P·L½Õ}



§A¥i¯à§Æ±æÀË¬d {\ttfamily Makefile} ¨Ó½T©w¦³¿ï¥Î¹ï§A¨t²Î³Ì¨Î½sÄ¶¿ï¶µ.
Á|¨Ò¨Ó»¡, ³]©w {\itshape -O2\/} ºX¼Ð¨Ó¿ï³Ì°ª¼h¯Åªº³Ì¨Î¤Æ¦Ó 
{\itshape -fomit-frame-pointer\/} ºX¼Ð¨Ó³y³Ì¤p¤G¤¸½X
(ÁöµM debugging ·|¨S¦³¥´¶}). {\bfseries °£«D§Aª¾¹D§A¦b°µ¤°»ò, 
¦Ó¥B¦b¥ô¦ó±¡ªp¤U, °£«DÁ}­W«Ø¥ßªº¤u§@¤w§¹¦¨, §_«h¤£­nª±³o¨Ç}.








\subsection{¥h­þ¨ú±o¶i¤@¨Bªº¨ó§U}

¦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 {\ttfamily ELF} ©M/©Î {\ttfamily a.out} ¤G¤¸½X, ¤]¥i¯à¦b
\nameurl{ftp://sunsite.unc.edu}{Sunsite}, \nameurl{ftp://tsx-11.mit.edu}{TSX-11 archive} ©Î¨ä¥¦¦a¤è§ä¨ì.
¤]³\, ³nÅéªº³Ð³yªÌ¥i¥H´£¨Ñ½sÄ¶¦nªº¤G¤¸½Xµ¹§Aªº¯S§Oªº¾÷¾¹¨Ï¥Î.



{\ttfamily ª`·Nªº¬O¦pªG§A¨ú±o¹w¥ý½sÄ¶¦nªº¤G¤¸½X, §A·|»Ý­nÀË¬d¬O§_»P§Aªº¨t²Î¬Û®e:} 
\begin{itemize}
\item {\ttfamily ³o¤G¤¸½X¥²¶·¦b§Aªº µwÅé¤W¶] (i.e., Intel x86).}       
\item {\ttfamily ³o¤G¤¸½X¥²¶·»P§Aªº®Ö¤ß(kernel)¬Û®e (i.e., a.out ©Î ELF).}     
\item {\ttfamily §Aªº¨ç¦¡®w(libraries)¥²¶·¬O³Ì·sªº.}
\end{itemize}


¦pªG¥þ³£¥¢±Ñ, §A¥i¥H¦b¦X¾Aªº {\itshape ·s»D¸s²Õ\/}´M¨DÀ°¦£,
¹³¬O¦b\onlynameurl{comp.os.linux.x} ©Î \onlynameurl{comp.os.linux.development}. ¸U¤@§A¥u¬O¤£°÷©¯¹Bªº¸Ü,
¼K, ¸Õ¸Õ¤]¬O¦³½ìªº.












\section{³Ì«á¨BÆJ\label{finalsteps}}

Åª¤@¤U³nÅé®M¥óªº¤å¥ó¨Ó¨M©w¬O§_¦³¬Y¨ÇÀô¹ÒÅÜ¼Æ»Ý­n³] (¦b {\itshape .bashrc\/}
©Î {\itshape .cshrc\/}) ¥H¤Î
¬O§_ {\itshape .Xdefaults\/} ©M {\itshape .Xresources\/} ÀÉ®×»Ý­n½Õ¾ã.

¥i¯à¦³­ÓÀ³¥Îµ{¦¡¤º©wªºÀÉ®×, ³q±`¥s°µ Xfoo.ad ¦b­ì¥»ªº Xfoo µo¦æ®M¥ó. 
¦pªG³o¼Ë, ½s¿è Xfoo.ad ÀÉ®×¾A¦X§Aªº¾÷¾¹, µM«á­«·s©R¦W ({\bfseries mv}) ¦¨ Xfoo 
¦Ó¥B {\itshape ¥H root ¨­¤À\/} ¦w¸Ë¥¦¨ì {\ttfamily /usr/lib/X11/app-defaults} ¥Ø¿ý, 
¨S³o¼Ë°µ¥i¯à·|³y¦¨³nÅé¦æ¬°«Ü©_©Ç, ¬Æ¦Ü©Úµ´°õ¦æ.

¤j¦h¼Æªº³nÅé®M¥óªþ¦³¤@­Ó©Î¥H¤Wªº®æ¦¡¤Æ man pages. 
{\itshape ¥H root ¨­¤À\/}, ½Æ»s Xfoo.man ÀÉ®×¨ì¦X¾Aªº {\ttfamily /usr/man} ¥Ø¿ý
({\ttfamily man1} - {\ttfamily man9}), ¦Ó®Ú¾Ú¨º¦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 {\ttfamily man1},
¹CÀ¸¬O¦b {\ttfamily man6}, ¦ÓºÞ²zªº®M¥ó¬O¦b {\ttfamily man8} (¬Ý¤@¤U {\itshape man ¤å¥ó\/}
¥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¦³ 
{\itshape install\/} ¿ï¶µ¦b {\ttfamily Makefile} ¤¤. ¦pªG¬O³o±¡ªp, 
§A¥i¥H¥Î root ¨­¤À½Æ»s¤G¤¸½X(binaries)¨ì {\ttfamily usr/local/bin} 
¥Ø¿ý¨Ó¤â°Ê¦w¸Ë¤G¤¸½X(binaries).

ª`·Nªº¬O¬Y¨Ç©Î¥þ³¡¤W­z¨BÆJ,¦b¤j³¡¤À±¡§Î¤U,À³¸Ó·|¥Ñ {\bfseries make install}
¨Ó¦Û°Ê¾Þ§@. ¦pªG¬O³o¼Ë, {\ttfamily README} ©Î {\ttfamily INSTALL} ¤å¥óÀÉ·|´£¨ì³o­Ó.






\section{²Ä¤@­Ó¨Ò¤l: Xscrabble}

Matt Chapmanªº {\bfseries Xscrabble} ¦ü¥G¹³¬O­Ó»á¦³½ìªºµ{¦¡,
¦]¬°§Ú´¿¬O­Ó³g°ýªº Scrabble{\ttfamily \texttrademark{}}(«÷¦r¹CÀ¸)ª±®a.§Ú¤U¸ü¤U,¸ÑÀ£, 
¦Ó¥B«Ø¥ß¥¦¥H README ÀÉ®×¤¤ªº¤U¦C¨BÆJ:
\begin{tscreen}
\begin{verbatim}
     xmkmf
     make Makefiles
     make includes
     make
\end{verbatim}
\end{tscreen}


{\itshape ·íµM¥¦¤£¯à¥¿±`¹B§@...\/}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
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...
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


§Ú¦b \onlynameurl{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 {\ttfamily src} ¥Ø¿ý¤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¦æ:
\begin{tscreen}
\begin{verbatim}
      $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBS) $(LDLIBS)
$(EXTRA_LOAD_FLAGS)
\end{verbatim}
\end{tscreen}


¦Ó²{¦b LDLIBS ¬O¤°»ò©O?
\begin{tscreen}
\begin{verbatim}
      LDLIBS = $(LDPOSTLIB) $(THREADS_LIBS) $(SYS_LIBRARIES)
$(EXTRA_LIBRARIES)
\end{verbatim}
\end{tscreen}


SYS\_LIBRARIES ¬O:
\begin{tscreen}
\begin{verbatim}
 SYS_LIBRARIES = -lXpm -L../Xc -lXc
\end{verbatim}
\end{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ÅÜ¦¨: 
\begin{tscreen}
\begin{verbatim}
        $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LDLIBS) $(LOCAL_LIBS)
$(EXTRA_LOAD_FLAGS)                          ^^^^^^^^^^^^^^^^^^^^^^^
\end{verbatim}
\end{tscreen}


¦b¤W­±ªº§ï«á,§Ú¸ÕµÛ¦A¦¸°õ¦æ {\bfseries make} , Á@, ¥¦³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 \nameurl{mailto:matt@belgarath.demon.co.uk}{Matt Chapman}, ¦Ó¥B±q¥Lªº \nameurl{http://www.belgarath.demon.co.uk/programs/index.html}{home  page}
¤U¸ü {\bfseries Xscrabble}. 







\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
       Scrabble ¬O Milton Bradley Co., Inc. ªºµù¥U°Ó¼Ð.
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}











\section{²Ä¤G­Ó¨Ò¤l: Xloadimage}

³o­Ó¨Ò¤l´£¥X¸ûÂ²³æªº°ÝÃD. {\bfseries xloadimage} 
µ{¦¡¥[¤J¨ì§Úªº¹Ï§Î¤u§@²Õ¦ü¥G¬O«Ü¦³¥Î. §Ú±q¤@¥»¥Ñ Mui ©M Quercia ©ÒµÛªº¦n®Ñ
\ref{refs} {(X User Tools)}
©Òªþªº CD ¤Wªº­ì©l½X¥Ø¿ý(source directory), ª½±µ½Æ»s {\itshape xloadi41.gz\/}
ÀÉ®×¤U¨Ó. ¦p¹w´Áªº, ¥Î {\bfseries tar xzvf} ¸Ñ¶}©Ò¦³ÀÉ®×. µM¦Ó,
{\bfseries make} ¥X²{¤F¥O¤H°Q¹½ªº¿ù»~¦Ó¥B¤¤Â_.

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
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
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


³o¿ù»~°T®§§t¦³³Ì®Ú¥»ªº½u¯Á.

¬Ý¤@¤UÀÉ®× {\itshape image.h\/} ªº23¦æ.
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
       #include <stdlib.h>
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}

°Ú«¢! ¦b {\itshape xloadimage\/}, {\ttfamily wchar\_t} 
­ì©l½Xªº¬Y³B¤w¸g­«½Æ©w¸q¤F¦b¼Ð·Ç include ÀÉ®× {\ttfamily stdlib.h} ¤w©w¸qªºªF¦è.
­º¥ý¸Õ¸Õ±N¦b {\ttfamily image.h} ªº23¦æ¼Ðµù(commenting out)°_¨Ó,
¤]³\ {\ttfamily stdlib.h include} ¬O¤£¤j»Ý­nªº.

¦¹®É, {\itshape build\/} ¹Lµ{¨S¦³¥ô¦ó­«¤j¿ù»~. 
{\bfseries xloadimage} µ{¦¡²{¦b¥\¯à³£¥¿±`.












\section{²Ä¤T­Ó¨Ò¤l: Fortune}

³Ì«á¨Ò¤l»Ý­n¬Y¨Ç C µ{¦¡³]­pª¾ÃÑ. ¤j³¡¤Àªº Linux ³nÅé¬O¥Î C ¼gªº,
¦Ó¥B¦Ü¤Ö¾ÇÂI C ©úÅãªº¹ï¥ô¦ó·Q³nÅé¦w¸Ëªº¤H·|¦³§U¯q.

´c¦W¬L¹üªº(notorious) {\itshape fortune\/} µ{¦¡¦b¨C¦¸ Linux 
¶}¾÷°_¨Ó®É¨q¥X«ÕÀqªº¿Î»y "fortune cookie".
¤£©¯¦a (¦³ÂùÃö·N«äªº), ³]ªk¦b Red Hat µo¦æ®M¥ó 2.0.30 ªº®Ö¤ß¤U«Ø¥ß,¥X²{¤F
¤@°ïÄY­«ªº¿ù»~. 

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
~/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
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}








¬Ý¤@¤U {\ttfamily fortune.c}, ¦³ÃöÁpªº´X¦æ¦b³o.

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
   if (dirent->d_namlen == 0)
            continue;
        name = copy(dirent->d_name, dirent->d_namlen);
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


§Ú­Ì»Ý­n§ä¥X {\ttfamily dirent} ªº structure, ¦ý¥¦¨S¦³«Å§i(declared)¦b 
{\itshape fortune.c\/} ÀÉ®×¤¤, ·Q¥Î {\bfseries grep dirent} 
¨Ó¨q¥X¬O§_¦b¨ä¥¦­ì©l½XªºÀÉ®×¤¤, ¦ý¤]¨S¦³. µM¦Ó, ¦b {\itshape fortune.c\/}
ÀÉªº³Ì¤W¤è¦³¤U¦C³o¦æ.

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
#include <dirent.h>
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


³o¦ü¥G¬O¨t²Î¨ç¦¡®wªº include ÀÉ®×, ©Ò¥H­n§ä {\itshape dirent.h\/} ªº¦X²z¦ì¸m¬O¦b
{\itshape /usr/include\/}. ¨Æ¹ê¤W, {\itshape dirent.h\/} ªº½T¦³¦b {\itshape /usr/include\/}
¤¤, ¦ý¸ÓÀÉ¨S¦³¥]§t {\ttfamily dirent} ªº structure. µM¦Ó, °Ñ¦Ò¥t¤@­Ó
{\itshape dirent.h\/} ÀÉ.

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
#include <linux/dirent.h>
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}




³Ì«á, ¥h {\itshape /usr/include/linux/dirent.h\/}, §Ú­Ì¥i§ä¨ì§Ú­Ì©Ò»Ý­n«Å§iªº
structure.

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
struct dirent {
        long            d_ino;
        __kernel_off_t  d_off;
        unsigned short  d_reclen;
        char            d_name[256]; /* We must not include
limits.h! */
};
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}

¨¬°÷¦a½T©w, ³o­Ó structure «Å§i¨S¦³¥]§t {\itshape d\_namelen\/},
¦ý¦³¤@¹ï»P¨ä¬Û·íªº¿ï¾Ü. ¨ä¤¤³Ì¥i¯àªº¬O {\itshape d\_reclen\/}, ¦]¬°
³o­Ó structure member ªí¥Ü¬Y¼ËªF¦èªº length ¦Ó¥B¥¦¬O short integer.
¨ä¥L¤j²¤, {\itshape d\_ino\/}, ¥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¿èÀÉ®× {\itshape fortune.c\/}, ¦Ó¥B§ïÅÜ¦b551¦æ©M553¦æªº {\ttfamily d\_namelen}
ÅÜ¦¨ {\ttfamily d\_reclen}. ¦A¸Õ¸Õ {\ttfamily make all}. {\bfseries Success.} 
³o¦¸«Ø¥ß¨S¦³¿ù»~. §Ú­Ì²{¦b¯à°÷±q {\itshape fortune\/} Àò±o "cheap thrills"




\section{­þùØ¥i§ä¨ì­ì©l½XÀÉ®×}

²{¦b§A«Ü´÷±æªº¨Ï¥Î§A³Ì·sÀò±oªºª¾ÃÑ¨Ó¥[¤J¤@¨Ç¤u¨ã©M¨ä¥¦¦nªF¦è¨ì§Aªº¨t²Î,
§A¥i¥H¦b½u¤W§ä¨ì¥¦­Ì,
\nameurl{http://www.redhat.com/linux-info/linux-app-list/linapps.html}{Linux Applications and Utilities Page}, 
©ÎªÌ¦b«Ü¦X²z»ù¦ìªº CD ROM ªºÀÉ®×, ÂÇ¥Ñ \nameurl{http://www.redhat.com/}{Red Hat}, \nameurl{mailto:orders@infomagic.com}{InfoMagic}, ¥H¤Î¨ä¥¦ªº. 

¤@­Ó²³¦h­ì©l½XªºÄ_®w¬O¦b \nameurl{ftp://ftp.vix.com/pub/usenet/comp.sources.unix/}{comp sources UNIX archive}.

«Ü¦h UNIX ­ì©l½Xµoªí¦b \onlynameurl{alt.sources}
·s»D¸s²Õ. ¦pªG§A­n§ä¯S§Oªº­ì©l½X¥]¸Ëªº, §A¥i¥H¶K¦b¬ÛÃöªº \onlynameurl{alt.sources.wanted} ·s»D¸s²Õ.
¥t¥~¤@­Ó¤£¿ùªº¦a¤è¬O¬d¬Ý  \onlynameurl{comp.os.linux.announce} ·s»D¸s²Õ. ­n¨ú±o¦b \nameurl{mailto:unix-sources@pa.dec.com}{Unix sources} ªº³q«H½×¾Â,
½Ð±H­Ó {\itshape subscribe\/} °T®§¨ì¨º.

¦Ü©ó\onlynameurl{alt.sources} 
·s»D¸s²ÕªºÀÉ®×¬O¦b¤U­± ftp ¯¸:

\begin{itemize}
\item \nameurl{ftp://ftp.sterling.com/usenet/alt.sources/}{ftp.sterling.com/usenet/alt.sources/}
\item \nameurl{ftp://wuarchive.wustl.edu/usenet/alt.sources/articles}{wuarchive.wustl.edu/usenet/alt.sources/articles}
\item \nameurl{ftp://src.doc.ic.ac.uk/usenet/alt.sources/articles}{src.doc.ic.ac.uk/usenet/alt.sources/articles}
\end{itemize}









\section{µ²»y}

Á`µ², ¦Ê§é¤£¼¸·|¨Ï¤°»ò³£ÅÜ¦¨¤£¤@¼Ë (¦Ó¥B°ªÃø«×®À§éªùÂe©úÅã·|¦³À°§U).
¨Ï¥X¥þ¤O,±q¥¢±Ñ¤¤Àò±o¾Ç²ß§ó¬O­«­n. ¦b¨C­Ó¹L¥¢ªº¨B¥ï, 
¨C­Ó¥¢±Ñ³y´N¤F¯à°÷´x´¤ {\bfseries «Ø¥ß³nÅéÃÀ³N} ªºª¾ÃÑ­ÓÅé.






\section{°Ñ¦Ò»P¶i¤@¨B¾\Åª¸ê®Æ\label{refs}}



\begin{tscreen}
\begin{verbatim}
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½×.]
\end{verbatim}
\end{tscreen}


·íµMÁÙ¦³ {\itshape make\/},
{\itshape imake\/}, {\itshape xmkmf\/}, {\itshape gcc\/}, {\itshape ldconfig\/},
{\itshape gzip\/}, {\itshape tar\/}, ©M {\itshape patch\/} ªº {\ttfamily man pages}.



\end{document}
