  The Linux ELF HOWTO
  Daniel Barlow <daniel.barlow@linux.org>
  ޤߤĤҤ <isle@st.rim.or.jp> (11/4)
  $Date: 1996/07/14 19:09:17 $ $Revision: 1.29 $

  ʸϤʤ Linux ƥ ELF ХʥΥץ򥳥
  ѥ뤷ưˡޤȤ᤿ΤǤʸ礭(1)ELF
  ȤϲʤܹԤʤФʤʤ(2)ɤ ELF Ȥ
  褦ˤʤΤ(3)ELF ˤвǤΤȤ 3 Ĥʬʬ
  Ƥޤ䤬ˤǤե򤷤Ƥ֡ʸä
  餫ˤʤäƤޤǶ Linux 2.0 ξɲäΤ򥪡
  ۡ뤷ޤ

  1.  ELF Ȥϲ ñʾҲ

  ELF(Executable and Linking Format)ϸ USL(Unix System Laboratories)
  ǳȯ줿Хʥǡߤ Solaris  System V Release 4 
  ѤƤޤ Linux äƻȤäƤ a.out ٤ơELF 
  ٤ΤǡGCC  C 饤֥γȯԤ Linux ɸŪʥ
  ʥ ELF ˤ褦ȷꤷޤ

  ֽ٤פȤΤϡɸŪʥץꥱץޤ 2 
  Ϳޤ

  o  ELF Ȥжͭ饤֥꤬äȴñ˺Ǥޤ̾
     -fPICץդƥѥ뤷֥ȥե

         gcc -shared -Wl,-soname,libfoo.so.y -o libfoo.so.y.x *.o

     Ȥޥɥ饤ǥ󥯤Ǥ

     줬ʣ˸褦ʤС¿ʬ a.out Ʊ褦ʶͭ饤
     ˡ¸ΤʤΤǤ礦a.out Ƕͭ饤֥
     뤿ˤϡ饤֥ 2 ٥ѥ뤷ơ饤֥꤬Ȥ
     ǤƤΥǡΤζ֤򤢤餫ͽ󤷡ͽ󤵤줿
     쥹֤ƤγȯԴ֤ϿƤͤФʤޤ(ܤ
     <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/src/tools-2.17.tar.gz>
     ˤ 20ڡĶʸ)

  o  ưŪǥ(ưΥץब⥸塼ɤǤ뵡
     ǽ)򤺤äñ˼¸Ǥ롣εǽ Perl 5  Python, Java ʤ
     ǻȤƤޤ(ޤޤʼΥ󥿡ץ꥿εư˻Ȥ
     )ưŪǥ󥰵ǽΤ⤦ĤλȤƻ super-fast MUD Ǥ
     ξ硢ץߤƺƵư뤳Ȥʤץ
     򥳥ѥ뤷ưƤץȤߤळȤǽˤʤ
     

  Τ褦ФơELF Ȥ¿٤ʤ롢Ȥȿ⤢
   1%  5% 餤٤ʤȤΤǤºݤΥƥȤ
  ̤򸫤ȡκƱ˵äƤ뤵ޤޤʥΥ˱Ƥޤ
  ٤ΤΤΤ褦ǤTeX  Postscript Υӥ塼/ץ󥿤äƤ
  С SunSite ʤɤ speed.comp-1.0.tar.gz Ȥ ELF  a.out ®
  ٤ӤʸꤷɤΤ⤤Ǥ礦

  ELF ٤ʤΤ ELF Υ饤֥ꥳɤݥ󥤥ǥڥ
  ȤǤʤФʤʤȤͳ褷ޤ(ѥ -fPICץ
  ̣뤳ȤǤ)ݥ󥤥ǥڥǥȤǤ뤿ᡢĤΥ쥸
  򥪥եåݻѤ˻ȤʤʤФʤʤʤޤΤᡢѿ
  ¸Τ˻Ȥ쥸ĸäƤޤޤä 80x86 CPU 
  ϰŪ˻Ȥ쥸­Ƥޤ®٤˺ФΤ϶ͭ
  ֥Υɤ˸¤Ƥ뤳ȤդƤץꥱ
  䥫ͥǤ a.out  ELF δ֤®ٺϤޤ

  1.1.  ELF ϲǤϤʤ

  ELF вǤ뤫ˤĤơ¿θ򤬹ޤäƤޤ

     SVR4  Solaris ΥץưΤΤǤϤޤ
        ELF  SVR4 ƥƱΥХʥ`ƴ'Ǥ
        äơ ELF ˤ SVR4 ѤΥץब Linux ǤȤ
        櫓ǤϤޤ󡣤δطϥǥեޥåȤȻƤ
        礦 -- Linux Υץ MSDOS  Minix ΥեޥåȤ
        ǥ¸ꡢεդǽǤȤäƤ줾
        ΥƥबߤΥץ¹ԤǤ櫓ǤϤޤ

        (Υץ༫Ȥ˰¸ޤ)¾ x86 Unix ѤΥץ
        LinuxưȤǽΤޤ󤬡 HOWTO ǤϡΤ
        פޤ󡣤ޤ(tsx-11.mit.edu ʤɤˤ)iBCS 
        ⥸塼ˤĤĴ٤뤳ȤϤޤ礦

     ץबʤ櫓Ǥ⡢®ʤ櫓Ǥ⤢ޤ
        äȴñ˶ͭ饤֥꤬褦ˤʤäΤǡʣΥץ
        ֤Ƕ̤Ƥ륳ɤ饤֥경С̤ȤƤ꾮
        ʥץȤǽΤޤ󤬡Ū˸
        ơƱѥ饪ץꤷƥХʥ꤬ a.out ⾮
        ʤäʤ顢ޤޱɤäѥΥС
        㤦Ǥ礦⤷®פʤä顢äȤӤäǤ
        ͭ饤֥Ѥƥץबʤäᡢåפ
        äꡢ¿ΥѤǤ褦ˤʤäʤС®
        뤳Ȥ⤢ꤨޤ

     ƤΥХʥ֤ؤɬפϤޤ
        ʸμ˽СELF  a.out 򥳥ѥ뤷ư
        ƥۤǤޤץϥǥեȤǤ ELF
        ˥ѥ뤵ޤϥޥɥ饤󥹥åѹ
        ޤELF a.out Ʊư硢ξ C 饤֥
        ɤߤޤʤФʤʤʤʤɡ¿λѸΨϰʤ
        ޤäȤ⡢κϥ 6Mb ѤޥǤϤۤȤɵ
        Ťʤ٤ǤΤ(8MbΥޥǤϤäȵŤޤǤ
        )ޤ굤ˤ뤳Ȥ̵Ǥ礦Emacs Ū
        줿 Mosaic/Netscape Ȥä翩ץ
        Τ褦 ȤäƤǤ硩 :-)

     ȡ륭Ȥϴطޤ
        ʤȤ⤳ʸ̮ˤƤϡ

  1.2.ʤ ELF ذܹԤ٤

  ELF Ȥ褦˥ƥ򥢥åץ졼ɤΤˤϡ 2 Ĥͳ
  ޤޤˡҤ褦˥ץबäȽˤǤ뤳
  ȡˡȤϢޤ⤬褦ȤƤ(뤤
  ϴˤ)顣 C 饤֥ GCC  ELF ѤΤߤ꡼
  ޤʳΥץγȯԤ ELF ؿʤϤ
  

  ELF ΰ԰¤򴶤Ƥ͡⤤ޤ(äǤϤޤ󤬡
  ΤȤǤ)Linux  ELF  1994 ǯβƤ¸ߤƤޤ
  θ 1995 ǯ 5  6 ̤˸ޤߤǤϡ
  ̿Ū¸ߤʤǤ礦礭ʥС󥢥åפ򤹤ˤФ
  е褦ˡưƤ륷ƥͤʤȴƤ
  ⤤뤫Τޤ󡣤Ǥ⡢ΥС󥢥åפϤϤüεѤ
  Ϥޤ󡣳ȯѤΥƥ¾οͤѥ뤷Хʥư
  ǤϡELF ɬܤΤΤˤʤĤĤޤͥ v2.0 ˥
  󥢥åפݤ ELF إå뤳ȤͤƤ

  1.3.  ELF ؤΰܹԤλ

   HOWTO ǽ˽񤫤줿ˤ ELF ذܹԤˡϡ˽Ҥ٤
  ˡĤޤǤǤϡʼǴñ˿С
  󥹥ȡǤ褦ʥǥȥӥ塼¸ߤޤʤΥ
  򤪹ߤ˥塼˥󥰤뤳Ȥˤ֤ͤȡʲ
  Ҥ٤饤֥䥳ѥ򤴤㤴ˤƤޤɬפʥǡ
  ƥХååפƺǿ Red Hat  Debian 򥤥󥹥ȡ뤷Ƥ
  ޤäΤޤ

  ĴƤޤʲ˽Ҥ٤륤󥹥ȡˡϤ켫ȤȤƤϴñ
  ʻŻǤ(եȥɤ֤а֤⤢
  нʬǤ礦)ƥबƵưǤʤʤ褦ʼԤβǽ
  ˤޤͭ饤֥С󥢥åפʤäꡢ
  ldconfig  ldd Ȥäޥɤ¸Τʤäꡢɤɬ
  פʥץΤݤäꤹʤС֤ñˡ
  Ǥ礦ʾ硢Ȥˤ˹ͤƤߤ
   -- ִ ELF ƥפΤˤϡï ƤΥХʥ
  ξǥѥ뤷ľʤФʤʤΤǤ

  Ǥޤ

  2.󥹥ȡ

  2.1.Хå饦

  ˼ܹԼŪϡa.out  ELF 򥳥ѥ뤷ư
  ȤΤǤ륷ƥۤ뤳ȤǤΤˤΥץब
  Ŭڤʶͭ饤֥򸫤ĤʤФʤޤ󡣤Τˤϡ¾
  ĤΥƥबäƤ褦ˡñ `/lib  /usr/lib 
  ѥ˻ꤵ줿ǥ쥯ȥõ'Ȥˡ¿
  Ȥ⸭ˡɬפǤ

  ˡ濴˰֤Τƥξ˰ġ뤤ġ¸ߤ
  ưŪǤa.out ΥץѤˤ /lib/ld.so ELF Υץ
  Ѥˤ /lib/ld-linux.so.1 줾ưŪˤʤäƤޤѥ
  󥫤ϽϤץ˥饤֥ؤХѥᤳळȤ
  ޤ󡣤ˡ饤֥̾ŬڤưŪؤХѥ
  ߤޤơ¹Իˡ(ưŪ)Ŭڤʥ饤֥˷ӤĤ
  櫓Ǥ˽פ̩ޤ -- ʤץबȤ
  Ƥ饤֥꤬̤Υǥ쥯ȥưƤ⡢ץƥ
  뤹ɬפϤʤld.so (뤤ld-linux.so.1) ˿ǥ쥯ȥ
  õ˹Ԥ褦˻ؼǺѤߤޤ줬ʲ˽Ҥ٤ǥ쥯
  ؤιҤǤ

  嵭ƳȤơld.so ưꤹСưŪ
  󥯤ȤäƤץƵǽʤʤ롢ȤȤ狼
  ɤʤȤǤ롢Ȱ̤˹ͤƤޤ

  Ǥ顢ŪʷײȤƤϡELF ѤγȯĶ(ѥ顢󥯥
  ɥե롢饤֥)򡢺 a.out ѤΤΤ
  /usr/{bin,lib,include}֤a.out ϢΥե
  /usr/i486-linuxaout/{bin, lib, include} ذܤȤˤޤ
  /etc/ld.so.conf ϥ饤֥꤬ĤǤƤΥꥹȤˤʤä
  ꡢldconfig  ELF  a.out 򸫤櫓ǽϤäƤޤ

  饤֥ξˤ¿㳰ޤ

  o  ŤץΤĤ ld.so Ȥ鷺˺Ƥޤ
     ץϥ饤֥꤬̤ξ˰ưưʤʤޤǤ
     顢⤷Τ褦ʥץȤäƤʤС libc.so* 
     libm.so /lib ˤΤޤ޻ĤƤͤФʤޤELF ѤΥ饤֥
     ϼСֹ椬ۤʤäƤΤǡa.out Ʊǥ쥯ȥ
     ֤Ƥ񤭤ƤޤȤϤޤ󡣸Ť X ϢΥ饤֥
     (version 6 )⤽Τޤޤξ˻ĤƤΤǤ礦
     С(libX*so.6 ̤ξ֤ͤФʤޤ󡣸Ť
     饤֥ưȡxview ϢΥץबưʤʤꡢ
     饤֥̤ξ֤褦ˤʤ ELFѤ X 饤֥򥤥
     ȡ뤷ݤ˸ŤΤ˾񤭤Ƥޤޤ

     嵭ʳΥ饤֥ɬפȤ ld.so ȤäƤʤץ
     ʤ(ɤΥץब뤫ʬäƤСäƤΥ
      ldd Ĵ٤ơɬפʥ饤֥åƤޤ
     )2 ĤˡޤĤϡELF 饤֥򲾤Υǥ쥯ȥ
     Ÿơɬפʥ饤֥˾񤭤뤫ɤǧ뤳Ȥ
     ⤷񤭤褦ʤСELF ǤΥ饤֥ /libȤϰ㤦
     ꡢ㤨 /usr/i486-linux-lib ֤褦ˤޤ ldconfig
     ƤΥǥ쥯ȥ꤬Ȥ褦ˤޤ⤦Ĥˡ
     ΥץοСꤷƥѥ뤷ľƤޤ
     ȤǤϥɤǽʤСǥǤϤ
     ޤ

  o  /usr  / ̤ΥѡƥˤʤäƤ硢/lib ư饤
     ֥ϡ/usr ΤѡƥǤϤʤ롼ȥѡƥ
     ǥ֤ɬפޤʲǤ /lib-aout ֤
     ˤƤޤ

  2.2.Ϥ --- դ٤ݥ

  o  ELF եޥåȤΥХʥưȤΤǤ 1.1.52 ʹߤΥ
     ȤäƤ뤳ȤǧƤ1.2.13 ǤפǤۤȤ
     ɤ 1.3.x Ʊ͡2.0.0(ʸ񤤤Ƥ뤤Ǥκǿ)Ǥ
     ưޤ2.0 ꡼줿ȤʤäƤϡŤּ¸ǡפΥ
     ͥ(1.3.x) ȤɬפϤʤǤ礦

  o  Slackware εߵ(rescue)ǥΤ褦 boot/root ǥѰդ
     Ƥޤ礦¿ʬɬפˤʤ뤳ȤϤޤ󤬡ɬפˤʤä
     긵̵ȻܤޤƱͤˡmv  ln Υե
     Υޥ(ºݤΤȤshell ¢ޥɤɬפʺȤϤۤܲǽ
     Ȼפޤ)Ū󥯤ǺäƤȤּŤͽɡŪ
     ȤΩĤΤޤ

  o  ⤷ELF γȯɤƤʤ顢/lib/elf  ELFѤΥ饤֥
     (̾ libc.so.4 ʤ)뤫Τޤ󡣤Υ饤֥
     ȤץꥱϺƥѥ뤹ɬפޤξǤ
     ǥ쥯ȥϺޤ礦/lib/elf ǥ쥯ȥפǤ

  o  Ƕ Linux Ǥ `FSSTND(ե륷ƥॹ)' ˽äơ
     ɸŪʥե륷ƥ֤褦ˤʤäƤޤ
     ʤƥޤޤ뤳ȤǤ礦⤷ʲ `/sbin/
     ' Ȥ褦ˤʤäƤΤˡʬΥƥˤ /sbin ǥ쥯
     ȥ̵꤬硢Υץ /bin  /etc ˤϤǤ
     ץ򥤥󥹥ȡ뤹硢äˤˤդƤ
     ޥɤ򸡺ѥꥹȤ /etc  /sbin ˤʤ
     ƤСΤʤ(/etc/ˤ)ŤСΥޥɤư
     Ƥޤ̯ʥ顼򵯤礬ޤ

  o  ELF ذܹԤݤˤï⥳ԥ塼ȤäƤʤ֤֤
     롦桼⡼ɤǹԤޤ礦ְ㤤򵯤ʤ褦ˡե
     ԡ֡ȤƺȤΤ⤤ǥǤ礦Ǥ⡢Ŀͤ
     Ƥ¿ΤǤĤƤȻפäƤޤ :-)

  2.3.ɬפʤΤϡ

  ɬפʥѥåϡ <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/> 
  <ftp://sunsite.unc.edu/pub/Linux/GCC/> ǽǤξȤȤ
  ¿ξ˥ߥ顼ƤޤΤǡǽʤ᤯ˤߥ顼
  [ܤʤ <ftp://ftp.iij.ad.jp/pub/linux/sunsite/GCC/> 
  <ftp://ftp.spin.ad.jp/pub/linux/sunsite.unc.edu/GCC/> ʤ ]õ
  ʤˤȤäƤ⡢ߤʤˤȤäƤ⡢®Ǥ
  뤳Ȥˤʤޤ

  ʲ˼ѥå(ꥹȤˤäƤС󤫤꿷)
  ɬפǤɤơ줾°Ƥʸɤ
  ߤƤɬפʸϤƤ release.packagename Ȥ̾
  ʤäƤޤʲ˼ƤС⿷Сꤷ
  硢ɬ꡼ΡȤܤ̤Ƥ鿷С
  Ǥϥ󥹥ȡˡѤäƤ뤫Τޤ

  ץϾ˥饳ѥ뤹ȤͤǤ⡢ʲ˼ץ
  ϥХʥǤꤷƤȤˤʤ뤳Ȥ򶯤ᤷޤ
  ץΤۤȤɤ a.out ǤΥƥ ELF 褦ˤ
  ꤵƤ餺a.out δĶǥѥ뤷褦ȤƤ̵̤Ǥ

  2.3.1.Фɬפʤ

  o  ld.so-1.7.14.tar.gz --- ưŪ󥫡ȥХʥ꤬ ä
     ޤʹߤΥСǤ a.out ХʥȤǤ⥫
      ELF ݡȵǽȤߤǤɬפޤ⤷ 1.8.1 
     ⿷С򤪻ξϥ󥹥ȡ뤹 
     ͥ ELF ݡȵǽȤߤޤƤ뤫ǧƤ

  o  libc-5.3.12.bin.tar.gz  --- ELF ζͭ饤֥ C ȿإ饤
     ֥ꡢ¾ϢŪ饤֥䤽Ȥäƥץ
     ѥ뤹Τɬפʥ󥯥롼ɥե뤬äƤޤɬפǤ
     饽ɤǤޤѥ뤹ˤϻ֤
     ELF ƥäƤʤȥѥ뤹뤳ȤԲǽǤ
     

  o  gcc-2.7.2.bin.tar.gz --- ELF б C ѥ顣ǥ쥯
     ꡦ쥤Ȥ򤹤 a.out б C ѥäƤޤ
     gcc ʬǥѥ뤷(ȤƤ ELF Ķ˰ܹԤƤ
     ñȵŤǤ礦)GNU ΥꥸʥΥɤ
     gcc-2.7.2-linux.diff.gz ѥå򤢤ƤǤ礦

  o  /binutils-2.6.0.12.bin.tar.gz --- Linux Ѥ˥ѥå򤢤Ƥ GNU Х
     ʥ桼ƥƥǤΥѥåˤ gas  ldstrings ʤ
     ΥץबޤޤƤꡢC ѥȤˤɬܤˤʤäƤ
     ǤΤޤޤ GNU binutilities (㤨 prep.ai.mit.edu ˤ褦
     )ǤˤʤʤȤ˸դɤƤ⼫ʬǥ
     뤷 GNU ΤΤǤϤʤLinux Ѥ˥ѥåƤ
     binutils-2.6.0.12.tar.gzȤäƤ

  o  ncurses-1.9.9e.tar.gz --- SVR4 ߴ curses 饤֥ǡ줫
      Linux ѡɸ curses 饤֥פǤȹͤƤޤ
     ɤ  <ftp://prep.ai.mit.edu/gnu/> Τ褦 GNU Υȡ
     뤤  <ftp://ftp.netcom.com/pub/zm/zmbenhal> Ǥ
     tsx-11 ˤϥХʥѥåѰդƤޤΥѥå
     󥹥ȡ뤹ˤϴ˴ ELF 줿ȯĶ˰ܹԤƤ
     ʤΤǡޥѥϥɤꤷ
     礦

  o  gdbm-1.7.3.tar.gz ---  Unix ɸȤʤäƤ dbm  ndbm롼
     ȸߴΡĥϥå嵡ǽäǡ١롼Ǥ
     ɤ  <ftp://prep.ai.mit.edu/gnu/> Ǥޤͭ饤
     Ǥˤ  <ftp://ftp.uk.linux.org/pub/Linux/libc/non-
     core/gdbm.patch> ƤƤΥѥåϤ¾ĤΥХ
     Ƥޤ (Makefile ˤʸ typo ְäΥե
     å󥰤Ȥʤ)

  2.3.2.¾

  嵭ʳˤ⡢ɬܤǤϤޤꤷƤ饤֥
  ե뤬Ĥޤʲ˼Τ ELF ǻȤ˥С
  󥢥åפʤФʤʤतΥץǤʸθȾǤϡ
  ΤޤޤǤȤΤΡELF ǥѥ뤹ˤϽС
  åפɬפʥץҲ𤷤ޤͥåȤȤ³٤(㤨
  եåԡȢ 5 ʬ⤤Ƥ뤯餤֤Τ褦)ʲ
  ΥեФơ򽪤ˤʸθȾˤ뤽줾
  ץˤĤƤεҤȹ礻ƥåƤ

  o  a.out ߴ饤֥ѥålibc.so-4.7.6

     Υѥå֥ץפˤʤäƤΤϡ긵ˤ¸Υ
     ʥưȤΤǤ a.out 饤֥꤬СϤΤޤ
     Ȥ뤫ǤΥ饤֥ϲ餫ͳǺ a.out Υ
     ȯͤФʤʤɬפˤʤޤ

  o  BSD curses

     libcurses.so.1 ɬפȤХʥ꤬С줬Ť BSD curses
     饤֥ǤΥ饤֥ΥɤϺΤȤĤä
     ʤΤǤΥ饤֥ǤưʤץϤʤ
     ǤμΥץबСncurses Ȥ褦˥ѥ
     ľǤ礦Ǥʤ libcurses.so  tsx-11
     ȤΥߥ顼Ȥˤ libc-5.0.9.bin.tar.gz˴ޤޤƤޤ

  o  Berkeley db

      4.4 BSD  libdb ǡ١롼Ǥɤ
     <ftp://ftp.cs.berekeley.edu/ucb/4bsd/db.1.85.tar.gz/>ǡLinux ζ
     ͭ饤֥ѤΥѥå
     <ftp://ftp.uk.linux.org/pub/Linux/libc/non-core/db.patch> ˤ
     

  o  C++ ѤΥץ

     gcc ѥå g++ ȶۤƤޤͭѤ C++ ե
     򥳥ѥ뤹ˤ libg++-2.7.1.4.bin.tar.gz ɬפǤ
     Ȥ C++ ȤäƤޤ󤬡ʹȤˤȡΥ饤֥
     ɤ饳ѥ뤹ΤϷ빽ѤǤǤ顢
     ʥǤ򤪴ᤷޤ

  o  GNU ߴ termcap

     ncurses ؤΰܹԤ ELF ؤΰܹԤƱ˵ä櫓ǤϤޤ¾
     οͤäץȤ³ץꥱˤϤΥ
     ֥ȤäƤΤ뤫Τޤgdb Τ
     ͭ饤֥ǥХåɡgdb ʬȤإ󥯤
     Ƥ饤֥ˤƺ𤹤褦ʾ硢Ū˥󥯤Х
     ʥȤ٤Ǥ礦ξ硢 termcap  ncurses ˴ޤ
     Ƥ termcapߴΥ롼٤ƤäȾȤ˵Ť
     礦

     termcap-2.0.8.tar.gz  tsx-11 Ǥޤ GNU Termcap
     Ȥϰۤʤޤ˸ߴǤ(㤤ϥ顼åʬ
     )ϥɤΥѥåˤʤäƤޤ

  o  MAKEDEV

     ֤ǵưȡMAKEDEV ϴ¸ΥǥХե
     Ǻٺ뤳Ȥޤ/dev/zeroƤޤСĤ
     ΥС ld-linux.so.1 ưʤʤޤС
     MAKEDEV  <ftp://sunsite.unc.edu/pub/Linux/system/Admin/MAKEDEV-
     C-1.5.tar.gz>
     <ftp://sunsite.unc.edu/pub/Linux/system/Admin/MAKEDEV-2.2.tar.gz>.
     ˤޤ

  o  modules-2.0.0

     ⥸塼ȤäƤ硢binutils С󥢥åפ
     1.3.69Υ⥸塼롦桼ƥƥϻѤǤʤʤޤ
     ⥸塼롦桼ƥƥ  <http://www.pi.se/blox/> ˤ
     

  o  ʶͭ饤֥ޤ X ɥƥࡣ

     ץ ELF ˤʤꡢELF Υץ a.out 
     ֥ǤϻѤǤޤΤǡX ˴ؤץȯ
     硢 X ɥƥ켰򥤥󥹥ȡ뤹ɬפ
     XFree86 3.1.2  a.out  ELF η󶡤Ƥ
     XFree86 ۸ ftp.xfree86.orgǤˤ¿Υߥ顼
     Ȥޤ(㤨 ftp.iij.ad.jp)ΤǡͥåȥŪ˶ᤤ
     ȤꤷƤΥȤcommonelfǥ쥯ȥ
     ʲꤷ顢/usr/X11R6/lib/X11/config/linux.cfե
     ʲ2ԤNOΤȤ

        #define LinuxElfDefault         NO
        #define UseElfFormat            NO

     YESˤƤʤ xpm 򥳥ѥ뤹ݤ jumpas 
     Τ̾Ĥδ̯ʥ顼ޤߤ XFree86ΥХʥ ELF
     줿 termcap 饤֥libtermcap.so.2󥹥ȡ뤵Ƥ
     ɬפ뤳ȤդƤ

     Motif ȤäƤϡELF 줿 Motif 饤֥󶡤ͽ
     ꤬뤫٥䤤碌Ƥ Motif ϻȤäƤʤ
     ΤǲˤΩƤޤ

  o  ELF Ʊ Linux 2.0 إåץ졼ɤ硢ͥΥ
     ɤȶۤƤ Documentation/Changes ե˺줺
     åơɬפʤΤɤǤ뤫Ĵ٤Ƥ

  2.4.ե륷ƥκĴ

  äȡ䤬ʲǡֺפȸä硢֥ХååפäƤ
  פɤߤƤ :-) ޤƵۤơ

  å --- Хʥꡦ󥹥ȡ

  1. a.out Хʥư뤿Υǥ쥯ȥ

        mkdir -p /usr/i486-linuxaout/bin
        mkdir -p /usr/i486-linuxaout/include
        mkdir -p /usr/i486-linuxaout/lib
        mkdir /lib-aout

  2. ưŪ󥫤Υѥå ld.so-1.7.14 򤤤ĤΥɤ֤
     ŸФ줿 ld.so-1.7.14/instldso.sh ץ
     ɤǤɸŪʥƥ򤪻Ȥʤ顢sh
     instldso.sh ¹Ԥƥ󥹥ȡ뤹뤳ȤǤޤɸ
     ŪʤΤȤߤǤ硢ưǥ󥹥ȡ뤹뤳Ȥˤʤ
     ֲɸŪʤΡפȤϡ

  o  zsh (ĤΥС zsh  $VERSION ȤѿƤ
     ꡢinstldso.sh 𤹤褦Ǥ)

  o  /lib/elf  /lib ؤΥܥå(ɬפʤ櫓ǤϤ
     ޤ󤬡쥹塼ǥɬפˤʤ褦ʾˤ¿ΰ֤
     ʤ뤫Τޤ)

  3. /etc/ld.so.conf ơ /usr/i486-linuxaout/lib ä(ɬפ
      /lib-aoutä)/sbin/ldconfig -v  Ƽ¹Ԥơǥ
     쥯ȥõˤåޤ

  4. /usr/*/lib ˤƤ a.out Ρ֥饤֥פ
     /usr/i486-linuxaout/lib ˰ܤޤܤΤ lib*.so* 
     lib*.sa*lib*.a ʤɤΡ֥饤֥פǤäơ¾Υե
     ɬפϤޤ /usr/lib/gcc-lib ʤɤޤưƤϤޤ
     

  5.  /lib åޤlibc.so*  libm.so*libdl.so* Ϥ
     ޤޤˤƤޤX Υ饤֥(libX*.so.3*ؤΥܥå
     ⤽ΤޤޤˤƤޤ礦 --- XView ΥץबΥ
     ֥ȤäƤ뤫Τޤld.so* ld-linux.so* ʤ ld
     ǻϤޤäƤե⤽ΤޤޤˤƤޤĤΥ饤֥
     ĤƤ(⤷) 롼ȥѡƥ /usr С
     ե /usr/i486-linuxaout/lib ˰ܤޤ/usr ̥ѡ
     ƥ˥ޥȤƤС /lib-aout ˰ܤޤ
     ldconfig -v ƤߤƤ

  6. binutils 򥤥󥹥ȡ뤹Ȥơ⤷ /usr/lib/ldscripts ǥ
     쥯ȥ꤬кޤ(binutils Υǥ쥯ȥ򿷤˺
     ޤ)

  7. /usr/bin ˤ(ld86  as86 ʳ)Ƥ ld  as Υԡ
     ޤ

  8. /usr/include ʲΥǥ쥯ȥޤɸŪʥƥǤϡ
     ˤեΤĤϥƥΡֳˡפȤʤ뵡ǽôäƤ
     ꡢlibc ȶۤƤޤʳˤ⡢ʤȤ󥹥
     뤷ꡢȤäƤǥȥӥ塼κԤ󥹥ȡ
     ե⤢ϤǤ뤿ˡ0 ľ
     Ȥ򤪴ᤷޤޤ¸/usr/include /usr/include.oldѹ
     libc-5.2.18.bin.tar.gz롼ȥǥ쥯ȥŸޤ

  9. binutils ѥå򥤥󥹥ȡ뤷ޤΤˤ tar - xvzf
     binutils-2.6.0.12.bin.tar.gz -C / ˡǤ

  10.
     gcc ѥåϥ롼ȥǥ쥯ȥŸɬפޤgccѥ
     ϤĤΥե /usr/bin ˡĤ¿Υե
     /usr/lib/gcc-lib/i486-linux/2.7.2  /usr/lib/gcc-
     lib/i486-linuxaout/2.7.2 ˥󥹥ȡ뤷ޤ gcc 򥤥󥹥ȡ
     ˤϡޤ

        $ tar ztf gcc-2.7.2.bin.tar.gz

     ȤơäƤ뤫åƤĤƤե
     ˾񤭤褦Ǥ(㤨 Gnu ADA 򥤥󥹥ȡ뤷Ƥ
      /usr/bin/gcc ĤƤǤ礦)ޤΥե
     ʽ˰ܤޤξǡ

        # tar -zxf gcc-2.7.2.bin.tar.gz -C /

     Ȥޤλǡgcc -v  gcc ΥСΤ᤿ꡢ
     ѤΥץ򥳥ѥ뤷ơưƤ뤫å
     Ƥ

        $ gcc -v
        Reading specs from /usr/lib/gcc-lib/i486-linux/2.7.2/specs
        gcc version 2.7.2
        $ gcc -v -b i486-linuxaout
        Reading specs from /usr/lib/gcc-lib/i486-linuxaout/2.7.2/specs
        gcc version 2.7.2
        $ ld -V
        ld version 2.6 (with BFD 2.6.0.2)
          Supported emulations:
           elf_i386
           i386linux
           i386coff

     Ū ``Hello, world'' ץƤΥץ
      gcc  gcc -b i486-linuxaout ǡѥ뤷 a.out 
     ELFΥѥ餬ꤵƤ뤫ǧƤߤޤ礦

     ޤäơ⤦ĥäơޤĤΥ饤֥꤬Ĥ
     Ƥޤޤܥå󥯤򤴤㤴ĥʤȤޤ
     󡣴ĥäơ

     ܥå

  11.
     ĤΥץ(äˤĤ X Ϣץ) /lib/cpp 
     Ȥޤ/lib/cpp  Linux Ǥ
     /usr/lib/gcc-lib/i486-linuxversion/cppˤޤޤǤʳ
     /lib βˤ륷ܥå󥯤ƺƤϤʤΤǡ
     ĥľɬפޤ

        # cd /lib
        # ln -s /usr/lib/gcc-lib/i486-linux/2.7.2/cpp .

  12.
     /usr/include ʲ /usr/include.old ʲ˰ܤȡͥΥ
     ɤؤΥܥå󥯤ʤΤǡ

        # cd /usr/include
        # ln -s ../src/linux/include/linux .
        # ln -s ../src/linux/include/asm .

     Ȥƥ󥯤ĥľƤ

     (ǤϥͥΥɤ /usr/src/linux ˤȲꤷƤ
     ޤǤʤ硢ŬڤʾꤷƤ)

  13.
     FSSTND ϢϡǤ utmp  wtmp ե /var/adm 
     /var/run  /var/log ˤ줾ܤȤˤޤɬפ˱
     /var/log  /var/adm ꡢutmp  wtmp θ֤߰إ󥯤ĥ
     褦ˤƤϰʲ ls -l ˼褦֤ˤޤ

        $ ls -ld /var/adm /var/log /var/run /var/log/*tmp /var/run/*tmp
        lrwxrwxrwx   1 root     root            3 May 24 05:53 /var/adm -> log/
        drwxr-xr-x   9 root     root         1024 Aug 13 23:17 /var/log/
        lrwxrwxrwx   1 root     root           11 Aug 13 23:17 /var/log/utmp -> ../run/utmp
        -rw-r--r--   1 root     root       451472 Aug 13 23:00 /var/log/wtmp
        drwxr-xr-x   2 root     root         1024 Aug 13 23:17 /var/run/
        -rw-r--r--   1 root     root          448 Aug 13 23:00 /var/run/utmp

     FSSTND ΤˤĤƤ sunsite ˤ  LDP Υ
     <ftp://sunsite.unc.edu/pub/Linux/docs/fsstnd/>ʤɤˤʸ
     

     ǤȤ

     ޤǤ(¿ʤȤ)˵ǽ ELF γȯĶϤ
     ǤⲼäơФ餯Ť˴Ӥ򤫤ߤޤ礦

     פʥɤΥѥå

  14.
     ncurses Υ󥹥ȡϤʤ֤ΤŻǤäȤ⡢
     ʬλ֤ϥѥ뤷ʤͥåȥ˥塼ɤळȤ񤹤
     Ǥޤtar եŸ INSTALL ե򡢼ʬ
     Linux 饷ƥפΥǥȥӥ塼κ/ޤȤǤ
     롢ȻפäɤǤߤޤ礦ʤѥκݤˤϡ¿ʬ
     ʲΤ褦ʥޥɥ饤ꤹɬפ롢ȤȤǤ

        $ ./configure --with-normal --with-shared --disable-termcap --enable-overwrite --prefix=/usr

     ǥեȤˤʤäƤ륿ߥʥμˤդޤ礦1.3 
     2.0ΥͥǤϡưΥǥեȤΥߥʥ linux ˤʤä
     ޤˤäƤ /etc/inittab  console  getty 
     ʤФʤʤΤޤ

     롼ȥѡƥΤϡɥǥ /usr/lib/terminfo̵
     硢ncurses  `fallback' ǽǤޤɬפǤ礦
     ǽϾҤ INSTALL եƤꡢñǤʻŻ
     ˤʤޤ(饤֥ 2 ٺɬפޤ)fallbackȤ
     linux  vt100 ȤФ硢ʤȤ˴¸ fallback.c
     ؤǽ fallback.c  ftp.uk.linux.org
     <ftp://ftp.uk.linux.org/pub/Linux/libc/non-core/fallback.c> Ѱ
     Ƥޤ

     ncurses 򥤥󥹥ȡ뤷塢/usr/lib ʲ¿ݤʻŻ򤹤ɬ
     פޤʺȤʤΤǡǤΤǤñǤ
     Сֹ椬¿԰פˤʤäƤ뤳ȤդƤ
     ϽǤ򹯤˳櫓ǤϤޤ

     a. /usr/lib/libncurses.so.1.9.9e  /lib ˰ܤ󥰥桼
        ɤǤ curses ץबư褦ˤޤ롼ȥѡƥ
          /usr/lib 硢äˤκȤפǤä
        ƤⳲϤޤ

     b. /lib ǥ쥯ȥ libncurses.so.1.9.9e  /libncurses.so.3.0
        إ󥯤ĥޤ

     c. ¾/lib/libncurses.so.3.0  /usr/lib/libncurses.so 
        /usr/lib/libcurses.so  /usr/lib/libtermcap.so ؤΥ󥯤ɬ
        Τޤ

     ͤΤɥʿ͸˴ñ˸ȡʲΤ褦ʺȤˤʤ
     

        # cd /lib
        # mv /usr/lib/libncurses.so.1.9.9e .
        # ln -s libncurses.so.1.9.9e libncurses.so.3.0
        # cd /usr/lib
        # ln -s /lib/libncurses.so.3.0 libncurses.so
        # ln -s /lib/libncurses.so.3.0 libcurses.so
        # ln -s /lib/libncurses.so.3.0 libtermcap.so

  15.
     gdbm Υ󥹥ȡ롣ѤΥǥ쥯ȥǥɤŸ
     gdbm.patch 򤢤ơREADME  INSTALL եܤ̤ޤ

     ۤμϰʲΤ褦ʤΤˤʤϤǤ

        $ tar zxf gdbm-1.7.3.tar.gz
        $ patch -p0 < gdbm.patch
        $ cd gdbm-1.7.3
        $ ./configure --prefix=/usr
        $ make
        $ make progs
        $ su
        # make install
        # make install-compat
        # cd /usr/lib
        # ln -s libgdbm.so.1 libgdbm.so
        # ln -s libgdbm.so.1 libgdbm.so.2
        # ldconfig

     Ǹ 2 ĤϸŤСȤθߴݤĤǤǶΥǥ
     ӥ塼Ǥ libgdbm.so.2 ȤСˤʤäƤޤ
      libdgbm.so.1 ƱɤǡСֹŪ
     ͳְ㤨դƤΤǤ

     ץΥɥѥå

     ̤ˡ줾Υѥå°λؼˤäƥ󥹥ȡ뤹
     פʤΤǡǷ֤ȤϤޤ󡣤㳰 2 
     ꡢ

  16.
     GNU  termcap ɬפʾ(̩˸ɬܤǤϤޤ󤬡
     ݤˤ XFree86 ΥХʥ꤬ɬפȤΤǡۤɬܤǤ礦)
     ɤ鹽ۤɬפޤɬפʺȤϰʲ˼٤
     

        $ tar zxf termcap-2.0.8.tar.gz
        $ cd termcap-2.0.8
        $ make
        $ su
        # cp libtermcap.so.2.0.8 /usr/lib
        # ldconfig

     褷 make install ϼ¹Ԥʤ褦ˡmake install  ncurses
     Υץ񤭤ƤޤޤΥ饤֥Ȥ褦
     ѥ뤵줿¸ΥХʥȤΤǤϤʤˤΥ饤֥
     Ȥäƥץ򥳥ѥ뤹硢إåեȥ
     ƥå饤֥ɤ̤ξѰդ -I -L ե饰Ȥ
     ƥѥˤξ褦ˤƤʬ¾
     ʬ٤ƵҤۣȻפ뤫Τޤ󤬡ˤͳ
     ޤʤۤɤͳʤꡢ termcap Ȥ³
     뤳ȤϤǤʤǤ

  17.
     libdb ϰʲΤ褦˺ޤ

        $ tar zxf db.1.85.tar.gz
        $ patch -p0 <db.patch
        $ cd db.1.85/PORT/linux
        $ make
        $ su
        # mkdir /usr/include/db
        # ldconfig
        # cp libdb.so.1.85.3 /usr/lib ; ( cd /usr/lib && ln -s libdb.so.1 libdb.so )
        # cp ../../include/*.h /usr/include/db

     ȤƤ

  o  PORT/linux/OTHER-PATCHES 򤢤ƤƤϤޤ db.patch ˴ޤޤ
     ޤ

  o  gdbm Υ󥯥롼ɥեȾͤΤǡ󥯥롼ɥե
     /usr/include ʳʬ˥󥹥ȡ뤷libdb ɬפʥץ
     ѥ뤹硢C ѥΥޥɥ饤
     -I/usr/include/db ȻꤷƤ

  2.5.ɤˤʤΤ(ǥ쥯ȥ깽Υȥ饤)

  ʲ˼ΤϺޤǤ˥󥹥ȡ뤷ƤեΤʤꤪޤ
  ѤǤȥ֥륷塼ƥ󥰤٤ΤݤˤѤ
  

  2.5.1.  /lib

  o  ưŪ ld.so (a.out ) ld-linux.so.1 (ELF ) ξԤȤ⥷
     ܥå󥯤Τޤ󤬡ؤƤե뤬¸ߤ
     뤳ȤǧƤ

  o  Ūʶͭ饤֥ libc.so.4 libm.so.4(a.out)ϥ
     å󥯤ˤʤäƤޤեؤƤ뤫ǧ
     

  o  Ūʶͭ饤֥ libc.so.5  libm.so.5
     libdl.so.1libncurses.so.1 libtermcap.so.2 (ELF )
     ܥå󥯤ˤʤäƤΤǡեؤƤ뤫
     ǧƤ

  2.5.2.  /usr/lib

  o  äƤˤä饤֥ʳΥեȥǥ쥯ȥ

  o  libbfd.so*, libdb.so*, libgdbm.so* Ȥä ELF ζͭ饤֥
     

  o  ޤޤʥܥå󥯡/lib  /usr/lib ˤ饤֥ؤ
     ܥå󥯤ɬפǤ󥯤̾Υե̾
     СֹäΤǤ㤨Сlibc ˤĤƸȡ

        lrwxrwxrwx   1 root     root           14 May  2 20:09 /lib/libc.so.5 -> libc.so.5.3.12
        -rwxr-xr-x   1 bin      bin        583795 Apr 25 06:15 /lib/libc.so.5.3.12
        lrwxrwxrwx   1 root     root           12 Oct 27  1995 /usr/lib/libc.so -> /lib/libc.so.5

     ȤʤޤΥ󥯤ϡ󥯻 ldѤޤ

  o  libbsd.alibgmon.alibmcheck.a  /lib  /usr/lib ˤ ELF 
     ζͭ饤֥ơѰդƤlib*.a 饤֥ꡣ
     ELF Ū饤֥ǤʬοͤˤȤäƤϡͭ饤֥
     ƱŪ饤֥꤬äƤ⤽̣ۤͭϤʤǤ礦ä
     ELF Ȥˤϡ ELF Ǥϡͭ饤֥Ȥʤ gcc
     -g ץꤹ뤳ȤǽʤΤǡŪ饤֥Ȥߤ
     ͳϤۤȤɤޤ󡣤Ǥ⡢饤֥꼫ȤǥХå
     ΤˡŪ饤֥ϻĤƤǤ
     

  o  crt0.o  gcrt0.o a.out Ρ֥ץ൯ưѤΡץե
     Ǥä򤱤뤳Ȥ򤷤ʤСƤ a.out Υץ
     ˤΤΰĤΥե뤬ޤ󥯤뤳Ȥˤʤޤ

  o  crt1.ocrtbegin.ocrtbeginS.o crtend.ocrtendS.ocrti.o
     crtn.ogcrt1.o ELF ѤεưѥեǤϾ嵭
     *crt0.o Ʊͤεǽ ELF ΥץФƹԤޤ

  2.5.3.  /usr/lib/ldscripts

  o  Υǥ쥯ȥϡ̤̾ꡢ ld ѤγƼɥ饤Х
     Ȥ֤ȤǤΥǥ쥯ȥˤϰʲΤ褦ʥե뤬
     ޤ

        $ ls /usr/lib/ldscripts/
        elf_i386.x      elf_i386.xs     i386coff.xn     i386linux.xbn
        elf_i386.xbn    elf_i386.xu     i386coff.xr     i386linux.xn
        elf_i386.xn     i386coff.x      i386coff.xu     i386linux.xr
        elf_i386.xr     i386coff.xbn    i386linux.x     i386linux.xu

  2.5.4.  /usr/i486-linux/bin

  o  ar, as, gasp, ld, nm, ranlib, strip

      /usr/bin ˤºݤΥХʥѥץؤΥ
     å󥯤Ǥ

  2.5.5.  /usr/i486-linuxaout/bin

  o  a.out ѤΥ֥ as ȡΥޥץץå gasp 
     ޤ

  o  ar, ld, nm, ranlib, strip ---  /usr/bin ˤºݤΥХ
     ѥץؤΥܥå󥯤Ǥ

  2.5.6.  /usr/i486-linux/lib

  o  ldscripts  /usr/lib/ldscripts ؤΥܥå󥯤Ǥ

  2.5.7.  /usr/i486-linuxaout/lib

  o  a.out Ѥζͭ饤֥Τ lib*.so* ޤ a.out Υ
     ưˤɬܤǤ

  o  lib*.sa  a.out ζͭեΥ(stub)Ǥͭ饤֥
     Ȥ ץ a.out ˥ѥ뤹뤿ɬפ
     a.out ˥ѥ뤹뤳Ȥ̵кƤޤäƤ⹽
     ޤ

  o  lib*.a  a.out ѤŪ饤֥Ǥa.out Ū˥󥯤
     줿Хʥ뤿ɬפǤ(㤨 -g ץդǥѥ
     뤹)Υե a.out Υץɬפ
     кƹޤ

  o  ldscripts  /usr/lib/ldscripts ؤΥܥå󥯤Ǥ

  2.5.8.  /usr/lib/gcc-lib/i486-linux/2.7.2

  o  Υǥ쥯ȥˤ ELF Υץ򥳥ѥ뤹뤿 gcc
     2.7.2 Ƥޤ

  2.5.9.  /usr/lib/gcc-lib/i486-linuxaout/2.7.2

  o  Υǥ쥯ȥˤ a.out ΥХʥϤ뤿 gcc 2.7.2
     켰Ƥޤ gcc Ͽ(Ǽ褦)ǥ
     ȥ깽򤹤뵡ǽäƤޤ⤷ a.out ˥ѥ뤹
     ɬפʤ硢Υǥ쥯ȥ 4MB Ǥޤ
     ѥåѤߤǤʤ 1.2 ꡼Υͥ򥳥ѥ뤹ˤϡ
     Υѥ餬ɬפʤȤ˺ʤ

  2.6.褯륨顼  Ƥʤǡ

  (ʲƤʬϿڤʥ᡼ǤΤǤ)

     ְäΤươưʤʤäƤޤä
        ξǤ shell ưƤϤʤΤǡ¿פ shell
        ȤߤߵǽǤʤλŻ򤳤ʤȤǽǤecho *
         ls ˻Ȥecho >>filename ϥե˽­Τ˻
        ޤldconfig Ū˥󥯤Ƥ뤳Ȥ˺ʤ㤨
        Сlibc.so.4 ְä lib-aoutǥ쥯ȥ˰ܤƤޤä
        硢echo "/lib-aout" >>/etc/ld.so.conf ; ldconfig -vС
        ޤ /lib/ld.so ưƤޤä硢 Ū˥󥯤줿
        ln Сsln /sillyplace/ld.so /lib/ld.so뤳Ȥǡ¿ʬ
        줹Ǥ礦

      bad address
        ELF ΥץưȤȡĤbad address 顼
        ˤʤ硢¿ʬͥ 1.3.x  x <3 ΥС򤪻Ȥ
        ʤΤǤ礦ΥСȤäƤϤޤ󡣤¿
        ʬǰΥСΰĤǤ2.0 إС󥢥åפ뤫
        1.2.13 ˥Сޤ礦褦ʴĶǥͥ
        ˥åȯ𤷤Ƥͤ⤤ޤϾܤĴ٤
        ޤ󡣤ʤʤ顢ȯǤΥСȤȤפʤ
        ȤɬפȤⴶʤΤǡǿǤɤäϤƤʤ
        Ǥ

      gcc: installation problem, cannot exec something: No such file or
        directory
        a.out ǥѥ뤷褦Ȥ(something ʬϤƤ
         cpp  cc1 ΤϤǤ)Υ顼硢ºݤ cpp
         cc1 ꤬뤫

           $ gcc -b -i486-linuxaout

        Τ褦ϤΤǤ礦ºݤˤ

           $ gcc -b i486-linuxaout

        ϤʤФʤޤ`i486'ʬϥåǤϤޤʤ
        ȤդƤ

     make: *** No targets specified and no makefile found.  Stop.
        Υ顼Ф硢make ˥ѥå򤢤Ƥƺƥѥ뤷Ƥ
        ŤС make ƥΤɤ˻ĤäƤΤ
        礦

      no such file or directory: /usr/bin/gcc
        ºݤˤΥե뤬¸ߤΤˤ顼Ф(gcc ʳ
        ץǤ⤳ʤ뤫Τޤ)ξ硢ELF ưŪ
         /lib/ld-linux.so.1 򥤥󥹥ȡ뤷Ƥʤ餫ͳ
        ǥɤʤ֤ˤʤäƤΤǤ礦˽Ҥ٤
        ȡ륹ƥåפ 2 ɤ /lib/ld-linux.so.1 󥹥
        뤷Ƥ

      not a ZMAGIC file, skipping
        Υ顼 ldconfig ФƤޤŤС ld.so
        ѥå򤪻ȤΤ褦ʤΤǡΤꤷƤ
        ١󥹥ȡΥƥå 2 ɤǤ

      _setutent: Can't open utmp file
        Υå xterm ư 3 ԤĽϤ뤳Ȥ
        ޤ󥹥ȡκǸΤˤ FSSTND Ĺʸ
        ɤǤ

  3.ץι

  3.1.Ūʥץ

  ץ ELF ǥѥ뤹硢ĤΤ褦 gccȤ
  a.out ǥѥ뤹硢gcc -b i486-linuxaout ȤƤ
  

        $ cat >hello.c
        main() { printf("hello, world\n"); }
        ^D
        $ gcc -o hello hello.c
        $ file hello
        hello: ELF 32-bit LSB executable i386 (386 and up) Version 1
        $ ./hello
        hello, world

  ơa.out Υѥ餬ϤХʥΥǥե̾
   a.out ʤ顢ELF ѥνϤХʥΥǥե̾ϲȤ
  ΡפȤ٤Ǥ礦ϡ֤äѤ a.outפʤ
  ǤǰǤ :-)

  3.2.饤֥κ

  libfoo.so ͭ饤֥Ȥƹۤ硢ŪʼϰʲΤ
  ˤʤޤ

        $ gcc -fPIC -c *.c
        $ gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 *.o
        $ ln -s libfoo.so.1.0 libfoo.so.1
        $ ln -s libfoo.so.1 libfoo.so
        $ export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH

  ˤꡢlibfoo.so.1.0 ȸƤФ붦ͭ饤֥ ld ѤΥܥ
  (libfoo.so)ưŪѤΥܥå(libfoo.so.1)
  ޤ饤֥ΥƥȤκݤϡǸ˼褦ˡߤΥǥ
  ȥ LD_LIBRARY_PATH ˲äƻƤߤޤ礦

  饤֥꤬ưȤǧǤСŬڤʾꡢ㤨
  /usr/local/lib ˰ܤ󥯤ĥľޤ礦 libfoo.so Υ󥯤
  libfoo.so.1 ĥƤΤǡСֹΥޥʡ󥸤
  Ƥ󥯤ĥľɬפϤޤlibfoo.so.1.0  libfoo.so.1
  ؤΥ󥯤ϡƤΥƥǤ ldconfig ư˹ޤ

        $ su
        # cp libfoo.so.1.0 /usr/local/lib
        # /sbin/ldconfig
        # ( cd /usr/local/lib ; ln -s libfoo.so.1 libfoo.so )

  3.3.  a.out ι

  ELF ĶǤŤ a.out ΥХʥʤФʤʤ
  뤫Τޤ󡣡̤Ρץץξ硢ɬפʤȤ gcc
  ư -b i486-linuxaoutե饰Ȥä a.out ѤΥѥư
  (⤷) ld ư -m i386linux ե饰Ȥޤa.out 
   DLL ͭ饤֥̤ɬפȤͤϡİۤˡΤ
  ǤϡǸСưޤס̤ˡ¸ΤʤХ᡼ǻ
  Ƥ
  4.  ELF ѥѥåELF ѤߤΥץ

  ޤǤǡߤʤнλ뤳ȤǽǤELF Υץ
  ѥ뤷ưɬפʴĶƥ󥹥ȡǤޤ

  ռŪʴ̤Ǿ뤿ˤϡȤΥץ
   ELF ǥѥ뤷ľʤ뤫ΤޤELF 
  κƥѥϤۤȤɤΥɥ桼ѤΥץꥱǤϤ
  ñǤʤ顢ưĶˤĤƲ餫Τץ⤤
  ĤꡢϰʲΤ褦ͳǥ顼ˤʤ뤫Τޤ

  o  ֥ΥλȤΰ㤤a.out μ¹ԷǤϳ
     ٥ˤ _() ƬդƤޤELF μ¹ԷǤϤ
     ʤäƤޤ󡣤ϡ񤭤Υ֥饳ɤȤߤޤʤ
     ˤϤʤޤ_foo ηΥ٥ foo Ƥ
     (ܿ᤿) EXTERNAL(foo) Τ褦ʥޥѰդ
     ơ(__ELF__ ƤФΤޤѿ֤Ƥʤ
      _ դ褦ˤΤǤ礦

  o  libc 5  libc 4 ΰ㤤㤨 locale ݡȤؤΥ󥿡ե
     ѹƤޤ

  o  ȤäƤХʥ򥢥ץꥱ乽۲ȤƤ
     硣㤨 emacs Ϥΰǡꥤ᡼¹ԷȤƥǥ
     ˽񤭤Τǡ¹ԷΥեޥåȤץब򤷤Ƥ
     ɬפޤ

  o  ͭ饤֥䶦ͭ饤֥ޤॢץꥱ(X11 ʬ䤹
     )ξ硢ELF Ƕͭ饤֥褦ˡ˽
     ɬפޤ

  Ȥˤʲ 2 ĤΥꥹȤ򼨤ޤǽΥꥹȤϴ ELF 
  С󤬺Ƥ(ʤELF ǥѥ뤹ˤ
  СꤹФ)ǡ2 ĤΥꥹȤ軰Ԥ
  ѥåɬפʥץǤ

  4.1.åץ졼ɤФΡ

  o  Dosemu

     ߤǤ dosemu  ELF ưޤMakefile ¿ν
     ɬפʤ褦ǤǿǤ dosemu 
     <ftp://tsx-11.mit.edu/pub/linux/ALPHA/dosemu/> Ǥޤ

  o  e2fsutils

     e2fs ե륷ƥѤγƼ桼ƥƥ e2fsutils ϡС
      0.5c ʹߤΤΤѹʤ ELF ǥѥǤޤ

  o  Emacs

     Emacs ˤ 2 ĤŪ꤬ޤ(i) Emacs ϡޤǾ
     Υƥươɬפ lisp եɤߤǡ
     ꥤ᡼¹ԷΥեȤľܥǥؽ񤭤Ȥ
     ʤѤäǺޤ(FSF) Emacs 19.29  XEmacs
     19.12(äƤ Lucid Emacs ȸƤФƤޤ) ELF ɤ
     ưŪ˸ʬơǹۤޤ(ii) ĤΥС
      emacs  ncurses Ȥ褦˥ѥ뤹硢emacs Υ
     ѥå src/s/linux.h Ƭն #define TERMINFO ΰԤ
     äʤȡۤʤȤޤ 19.31 Ǥɬ
     ʤǤXEmacs 19.13 ˤɬפǤΥС19.14 Ǥϴ
     㤤ʤ뤳ȤǤ礦

  o  gdb 4.16

     ¸ gdb ǤʤΤޤ޻Ȥޤ4.16 ǺѤ줿ͭ
     ֥굡ǽϤäˤʤäƤޤǤ顢⤷饤֥
     Ϣ̯ʥ顼ǺޤƤ硢gdb С󥢥åפΤ
     Ǥ礦

  o  Kernel 

     ͥΥС 2.0 ʹߤ ELF ʤưޤ
     빽ۻ(make config)λ˰ʲ 2 Ĥιܤ `yes' 
     ( 1.3 ǤƱǤ)1.2 ޤȤäƤ硢Υ
     Ȥ˼ѥåꤷƤ

        Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?]
        Compile kernel as ELF - if your GCC is ELF-GCC (CONFIG_KERNEL_ELF) [Y/n/?]

  o  perl 5

     Perl 5.001m ʹߤΥС ELF ƥǡưŪɵǽⴰ
     ˡѹʤѥǤޤǿǤ Perl  CPAN(Comprehensive
     Perl Archive Network)ȤǤޤCPAN  funet Ǥߥ
     Ƥޤ  <ftp://ftp.funet.fi/pub/mirros/perl/CPAN>ȶ
     Ȥꤹ褦ˤƤ

  o  ps  top

     Procps 0.98 ʾΥС ELF 򥵥ݡȤƤޤ(
     СǤưޤWCHAN ̾򥫡ͥ뤫ɤߤȤ뤳
     Ǥޤ)2.0 ꡼Υͥˤ procps 0.99a ʹߤΥС
     ɬפʤȤ˺ʤ

  o  util-linux 2.2 äƤ cal ץưޤtsx-11 ˤ
      version 2.5 <ftp://tsx-11.mit.edu/pub/linux/packages/utils>ʹ
     ΥСȤäƤ

  o  Mosaic

     伫Ȥ Mosaic 򥳥ѥǤĶˤޤ󤬡NCSA 
     Ƥ 2.7b1 ʹߤ Mosaic ΥХʥ ELF ˤʤäƤ
     ޤȤX ꤬ѤˤʤäƤơ̾ΥƥǤ
     libXpm.so.4.5 դʤȤ顼ˤʤޤǸΥС
     ֹ(.5);פʤΤǡñʽˡϡemacs ʤɤΥХʥ
     եǤ륨ǥľܽƤޤȤǤ礦
     libXpm.so.4.5^@ Ȥʸõ( ^@  NUL 饯
     --- ASCII  0 ---Ǥ).5 ե̾ĹѤʤ
     ˡտ NUL 饯θ 2 ĤΥڡɲäޤ
     

  4.2.ѥåƤ

  o  file

     file äʤưޤɤ;Ϥޤ
     ftp.uk.linux.org <ftp://ftp.uk.linux.org/pub/Linux/libc/non-
     core/file.patch> ˤѥå򤢤ƤСХʥ꤬ stripƤ
     ɤ䥨ǥ󤬺ߤ ELF Хʥ꤫ʬ뤳Ȥǽ
     ˤʤޤ

  o  make-3.74

     GNU  ftp Ȥˤ륽ɤꤷ libc-5.3.12 Υ꡼
     ΡȤˤѥå򤢤Ƥ뤫tsx-11  make-3.74.gzΥХʥ
     ꤷƤGNU  make ˤϿ ELF Ǥ libc С
     ǤΤϪ褹Хޤ -- ΥХϡºݤˤϸŤ GNU 
     libc ˤäХ˰¸ˤʤäƤ뤻ǡ libc ΥХ
     ϤĤǶޤǤ Linux  libc ˤ⤢ޤΤᡢŤ a.out
     Ǥ make ץȤäƤưޤ ELF Ѥ
     ϥѥåɬפǤ

     GNU Make γȯԤ⤳ΥХˤϵդƤơΥС
     ϽϤǤ

  o  1.2.x ͥ

     1.2.x ꡼ΥͥˤĤƤ 3 ĤΥץ󤬤ޤ

     1. Makefile 򾯤ơa.out ѥȤ褦ˤޤ cd
        /usr/src/linux ʲΥѥåڤФ patch - p1 ǤƤ
        ʲΥѥå򸫤ʤ Makefile ưǽƤ⤫
        ޤ󡣰ʲΥѥåեϴñǤǤ礦 (- ǻ
        ޤԤ + ǻϤޤäƤԤɲäޤ)

           diff -u linux-1.2.13/Makefile.orig linux/Makefile
           --- linux-1.2.13/Makefile.orig  Wed Aug 16 20:53:26 1995
           +++ linux/Makefile      Fri Dec  8 16:19:49 1995
           @@ -12,9 +12,9 @@
            TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)

           -AS     =as
           -LD     =ld
           -HOSTCC =gcc -I$(TOPDIR)/include
           -CC     =gcc -D__KERNEL__ -I$(TOPDIR)/include
           +AS     =/usr/i486-linuxaout/bin/as
           +LD     =ld  -m i386linux
           +HOSTCC =gcc -b i486-linuxaout -I$(TOPDIR)/include
           +CC     =gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
            MAKE   =make
            CPP    =$(CC) -E
            AR     =ar

        뤤ϡ

     2. H.J.Lu Υѥå򤢤Ƥơͥ ELF ǥѥǤ
        褦ˤ(ξ硢ELF Υפǽˤʤޤ)
        ѥå <ftp://ftp.cdrom.com/pub/linux/slackware_source/kernel-
        source/v1.2/linuxelf-1.2.13.diff.gz>Ǥޤ

        1.2 ꡼ΥͥޤELF Υǥȥӥ塼
        (RedHat 2.1  Slackware 3)ˤϤΥѥåޤޤƤ뤫
        ѥåˤäƤϤǤ

        Υǥϡ¿ʬ

     3. 2.0 إС󥢥åפޤ礦Ȥˤ 1.2 Τ ELF ˤ
        θƤޤǤ

     1.2.13 ΥС gcc 2.7.2 ʾΥСǥѥ뤹
     硢̤ޤasm/io.h ˤ gcc 2.7.2 ǤΤϪ褹Х
     ꡢ뤿Υѥå
     <ftp://ftp.uk.linux.org/pub/Linux/libc/misc/io.h> ˤޤ

  5.ܤ

  o  GCC-HOWTO <GCC-HOWTO.html>ˤϡLinux ǥץȯݤͭ
     פʾ¿ޤޤƤޤ(ʤȤϤͤƤޤ䤬
     餷Ƥޤ)GCC-HOWTO ϡʸƱˤϤʤ
     ǡ嵭Υ󥯤лˤʤäƤޤ

  o  linux-gcc ᡼󥰥ꥹ( linux.* Υ˥塼Ƥ
     硢linux.dev.gcc ˥塼롼פˤʤäƤޤ)ϡʬ
     ƤʤƤⲿƤ뤫Τ뤳ȤΤǤξǤ
      Usenet Ȥϰ㤦Τǡºݤ˳ȯ˴ؤΤߤƤ
     褦ˤƤ᡼󥰥ꥹȤ˻äˤϡ help Ȥ
     ޤ᡼ majordomo@vger.rutgers.edu äƤ᡼
     󥰥ꥹȤΥ֤  <http://www.linux.ncm.com/linux-gcc/>
     ˤޤ

  o  linux-gcc Υ᡼󥰥ꥹȤǲԤʤƤ뤫ξϡ䤬
     դʤ¤ꡢlinux-gcc web page
     <http://ftp.uk.linux.org/~barlow/linux/gcc-list.html> ˤޤ
     Υڡˤϡ HOWTO κǿǤؤΥ󥯤⤢ꡢʸǻ
     Ƥѥå⽸ƤޤƹѹγؽѥȤؤΥ󥯤
     ͤ(ѹγؽѥͥåȰʳΤȤǤϤƤǤ礦
     )ѤˡΥڡ  <http://www.blackdown.org/elf/elf.html> ˥
     顼Ƥޤ

  o  ELF ˤĤƤʸ tsx-11
     <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ELF.doc.tar.gz> ˤ
     ޤʸ¿ʬե򤷤ͤǥХå͡
     ХʥΥ֥Ȥľ褦ʥץκԤˤä
     ΩĤΤǤ礦

  o  H.J Lu 񤤤 ELF: From The Programmer's Perspective
     <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/elf.latex.tar.gz> 
     ELF ǥץहݤͭѤʾ󤬤äȾܤƤ
     ⤷ LaTeX ǤʤСƱС PostScript Ǥ
     ޤ

  o  ncurses 饤֥ˤĤƤξ terminfo ǡ١Eric
     Raymond's ncurses resource page
     <http://www.ccil.org/~esr/ncurses.html> ˤޤ

  o  ld.so ѥå˴ޤޤƤ dlopen(3)  man page ˤϴϢ뵡
     ǽˤĤƤ񤫤Ƥޤ

  6.¾

  6.1.եɥХåΤꤤ

  Feedback ϴޤޤ᡼ daniel.barlow@linux.orgؤꤤ
  ̩Υ᡼ɬפ硢 web pages
  <http://ftp.uk.linux.org/~barlow/> ˤ PGP θ(ID 5F263625)
  ȤäƤ

  ʸ٤ǡĤʤ˥᡼뤷Ƥ
  ʸǿ٤ǤϤʤǡ䤬ΤäƤ뤫
  ΤʤˤĤƤϡޤ comp.os.linux.* ˥塼롼פ
  ƤߤƤƤ᡼䤤碌ˤƤޤ᡼
  ̵Ȥ褯Τǡ

  ̾ߥ᡼󥰥ꥹȤ˺ܤäƤΤ򸫤ͤϺƤ
  褦ˤꤤޤ

  6.2.

  ʸǤꤿ硢ѶŪˤäƤƹޤ󤬡
  ϢƤ䤬äƤ館ǽ(ᤷ
  Ȥ)ɴʬΰǤ礦ϤƤν뤳ȤϤ
  Ǥޤ

  䤬ΤäƤǤϡ

  o  ꥢ <http://www.psico.unipd.it/ildp/docs/HOWTO/ELF-
     HOWTO.html> Favro Renata ޤ (¾Υꥢ
     HOWTO  <http://www.psico.unipd.it/ildp/docs/HOWTO/INDEX.html> 
     ޤ

  o  ޤߤĤҤܸǤޤ
     <http://jf.gee.kyoto-u.ac.jp/JF/index.html>Ǥޤ

  6.3.ˡŪ

  All trademarks used in this document are acknowledged as being owned
  by their respective owners.  Yow!

  The right of Daniel Barlow to be identified as the author of this work
  has been asserted in accordance with sections 77 and 78 of the
  Copyright Designs and Patents Act 1988.

  This document is copyright (C) 1996 Daniel Barlow
  <daniel.barlow@linux.org> It may be reproduced and distributed in
  whole or in part, in any medium physical or electronic, as long as
  this copyright notice is retained on all copies. Commercial
  redistribution is allowed and encouraged; however, the author would
  like to be notified of any such distributions.

  All translations, derivative works, or aggregate works incorporating
  any Linux HOWTO documents must be covered under this copyright notice.
  That is, you may not produce a derivative work from a HOWTO and impose
  additional restrictions on its distribution. Exceptions to these rules
  may be granted under certain conditions; please contact the Linux
  HOWTO coordinator at the address given below.

  In short, we wish to promote dissemination of this information through
  as many channels as possible. However, we do wish to retain copyright
  on the HOWTO documents, and would like to be notified of any plans to
  redistribute the HOWTOs.

  If you have questions, please contact Greg Hankins, the Linux HOWTO
  coordinator, at gregh@sunsite.unc.edu.

  ʸ˸줿ȥ졼ɥޡƤνͭԤ˵°Ƥޤ

  ʸθԤǤ Daniel Barlow θ 1988 ǯꤵ줿
  ``COpyright Desings and Patents" ˡ 77  78 ˵ꤵƤ
  

  ʸ Daniel Barlow<daniel.barlow@linux.org> ͭƤ
  ɽ¤ꡢɤΤ褦ʪŪŻŪΤѤ
  ơʸΤǤǤ⡢ԡƺۤ뤳Ȥǽ
  ŪѤ졢侩ޤΤ褦ʾˤԤޤǰ
  Τ餻

  䤳ʸ񤫤ʸ񡢤 Linux HOWTO ʸȤȤߤ
  ʸ񽸤ʤɤ⡢ɽˤäݸ뤳Ȥˤʤޤ
  Linux  HOWTO ʤФơۤ˸褦
  ¤ݤȤϤǤޤ󡣰ξΤȤ㳰ߤ뤳Ȥǽ
  Τǡܺ٤ˤĤƤϰʲ˼ Linux HOWTO Υǥ͡˿ҤͤƤ
  

  ñ˸С䤿ϲǽʤˡǤʸʤɤξ򹭤Τ
  褦ȹͤƤޤʤ顢䤿 HOWTO ʸ
  HOWTO κ۷ײˤĤƤΤ餻Ƥ餤ȻפäƤޤ

  䤬Сߤ Linux HOWTO Υǥ͡Grep Hankins
  gregh@sunsite.unc.edu ϢƤ

