Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > e74e806c1a2640e922856d7eb69d1420 > files > 36

howto-text-ja-2006-5mdv2010.0.noarch.rpm

Linux GCC FAQ

Mitchum DSouza

m.dsouza@uk.ac.caw.mrc-apu

”‹”öŸ–¤ - “ú–{Œê–ó
i‚u‚h‚bj

GAA00714@niftyserve.or.jp

February 1, 1994

„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª„ª

    Note: ‚±‚Ì•¶‘‚Í‚©‚È‚èˆÈ‘O‚ɏ‘‚©‚ꂽ‚à‚̂Ȃ̂ŁA‚¢‚Ü‚Ç‚«‚Ì Linux ŠÂ
    ‹«‚É‚Í‚ ‚Ä‚Í‚Ü‚ç‚È‚¢‰ÓŠ‚ª‚ ‚è‚Ü‚·B (JF Project)
   
Q: 0) ‚±‚Ì FAQ ‚̍ŐVƒo[ƒWƒ‡ƒ“‚Í‚Ç‚±‚ÅŽè‚É“ü‚ê‚ç‚ê‚Ü‚·‚©H
Q: 1) Ž„‚ªŽg‚Á‚Ä‚¢‚é GCC ‚̃o[ƒWƒ‡ƒ“‚ð’m‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚Å‚·‚©H
Q: 2) GCC,as,ld,ar, ‚»‚Ì‘¼‚̍ŐV”Å‚Ì”z•t‚Í‚Ç‚±‚É‚ ‚è‚Ü‚·‚©H
Q: 3) libc.so,libw.so ‚Ì‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚̍ŐV”Å‚Í‚Ç‚±‚ÅŒ©‚‚¯‚邱‚Æ‚ª‚Å
    ‚«‚Ü‚·‚©H
Q: 4) Linux ‚Å‘¼‚ɂ͂ǂ̂悤‚È‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ªŽg‚¦‚Ü‚·‚©H
Q: 5) Linux —p‚Ì‹¤—L DLL ƒ‰ƒCƒuƒ‰ƒŠ‚ðì‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å‚·‚©H
Q: 6) Š®àø‚ȃoƒCƒiƒŠ‚ðŽÀs‚µ‚½‚̂ɁC"PLT__oct__FUii" ƒƒbƒZ[ƒW‚ðŽó‚¯Žæ
    ‚é‚Ì‚Í‚È‚º‚Å‚·‚©H
Q: 7) ƒvƒ‰ƒbƒgƒz[ƒ€ XXX ã‚É Linux ‚̃R[ƒh‚ð‚Í‚«‚¾‚·ƒNƒƒXƒRƒ“ƒpƒCƒ‰
    ‚ðì‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å‚µ‚傤‚©H
Q: 8) ‚ǂ̂悤‚ȃVƒ“ƒ{ƒ‹‚ª Linux ‚Ì GCC ‚É‚æ‚Á‚ÄŽ©“®“I‚É’è‹`‚³‚ê‚Ü‚·‚©
    H
Q: 9) ƒRƒ“ƒpƒCƒ‹Žž‚Ɂisigvec‚Æ‚¢‚Á‚½“Á•Ê‚ȃVƒOƒiƒ‹‚Ȃǂ́j BSD ‚ÌŽd—l‚ð
    ‚È‚­‚·‚É‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚Å‚·‚©H
Q: 10) SIGBUS, SIGEMT, SIGIOT, SIGTRAP, SIGSYS ‚È‚Ç‚Í‚Ç‚±‚É‚ ‚è‚Ü‚·‚©H
Q: 11) libhard ‚Æ libsoft ‚Ƃ͉½‚Å‚·‚©H
Q: 12) ƒƒbƒZ[ƒW "can't load library: /lib/libxxx.so, Incompatible
    version" ‚̈Ӗ¡‚͉½‚Å‚·‚©H
Q: 13) ‚킽‚µ‚̃‰ƒCƒuƒ‰ƒŠ‚ª‚Æ‚Ä‚à‘å‚«‚¢‚Ì‚Í‚È‚º‚Å‚·‚©H‚Ü‚½A‚Ç‚¤‚·‚ê‚Î
    ¬‚³‚­‚È‚è‚Ü‚·‚©H
Q: 14) -N ƒtƒ‰ƒO‚ðŽg‚¤‚Ɖ½‚ª‹N‚±‚è‚Ü‚·‚©H‚Ü‚½A‚Ç‚¤Žg‚¦‚΂¢‚¢‚Ì‚Å‚·‚©
    H
Q: 15) ƒvƒƒOƒ‰ƒ€‚̃fƒoƒbƒLƒ“ƒOî•ñ‚Í‚Ç‚¤‚·‚ê‚ÎŽæ‚ê‚é‚Ì‚Å‚·‚©H
Q: 16) ‚ǂ̃fƒoƒbƒK‚ª Linux ‚ÅŽg‚¦‚Ü‚·‚©H
Q: 17) daemon ƒvƒƒOƒ‰ƒ€‚ðƒfƒoƒbƒO‚·‚é•û–@‚́H
Q: 18) profiling ‚Ƃ͉½‚Å‚·‚©H‚Ü‚½AƒvƒƒOƒ‰ƒ€‚ð profile ‚·‚é‚É‚Í‚Ç‚Ì
    ‚悤‚É‚·‚ê‚΂悢‚Ì‚Å‚µ‚傤‚©H
Q: 19) ‚à‚µAƒoƒCƒiƒŠ‚ªÃ“I‚É‚Ü‚½‚Í‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ɃŠƒ“ƒN‚³‚ê‚Ä‚¢‚½ê‡
    ‚ɁA‚»‚ê‚𒲂ׂé•û–@‚Í‚ ‚è‚Ü‚·‚©H
Q: 20) Linux ‚Í LD_LIBRARY_PATH ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·‚©H
Q: 21) Ž„‚̃vƒƒOƒ‰ƒ€‚Å‚Í /lib/cpp ‚ª•K—v‚Å‚·B‚Ç‚±‚©‚çŽè‚É“ü‚ꂽ‚ç‚æ‚¢
    ‚Ì‚Å‚µ‚傤‚©H
Q: 22) <varargs.h> ‚Í‚Ç‚±‚Å‚·‚©H
Q: 23) Ž„‚̃vƒƒOƒ‰ƒ€‚ŁA<linux/foo.h> ‚ðƒCƒ“ƒNƒ‹[ƒh‚µ‚½‚¢‚Ì‚Å‚·‚ªAŒ©
    ‚‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB‚Ç‚±‚É‚ ‚é‚Ì‚Å‚µ‚傤‚©H
Q: 24) foo() ŠÖ”‚̓‰ƒCƒuƒ‰ƒŠ‚É“ü‚Á‚Ä‚¢‚é‚Ì‚Å‚µ‚傤‚©H
Q: 25) ƒvƒƒOƒ‰ƒ€ XXX ‚ð Linux ‚ÉŽ‚Á‚Ä‚­‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚Å‚·‚©H
Q: 26) gcc/library ‚Ì foo ‚ŃoƒO‚ðŒ©‚Â‚¯‚½‚Ì‚Å‚·‚ªA‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å
    ‚µ‚傤‚©H
Q: 27) ‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ª“¯‚¶‹@”\‚ðŽ‚Á‚½Ã“Iƒ‰ƒCƒuƒ‰ƒŠ‚æ‚è‘å‚«‚­‚È‚é‚Ì‚Í
    ‰½ŒÌ‚Å‚·‚©H
Q: 28) /usr/lib “à‚É‚ ‚é .sa ƒtƒ@ƒCƒ‹‚Ƃ͉½‚Å‚·‚©H
Q: 29) Linux —p‚̃IƒuƒWƒFƒNƒgŽwŒü‚Ì C ‚Í‚Ç‚±‚ÅŽè‚É“ü‚ê‚ç‚ê‚Ü‚·‚©H
Q: 30) "Internal compiler error: cc1 got fatal signal 11" ‚̃ƒbƒZ[ƒW
    ‚̈Ӗ¡‚͉½‚Å‚·‚©H
Q: 31) libc.lite ‚Ƃ͉½‚Å‚·‚©H
Q: 32) Linux ‚̃‰ƒCƒuƒ‰ƒŠ‚Í SHADOW Password ‚ðƒTƒ|[ƒg‚µ‚Ä‚Ü‚·‚©H‚Ü‚½
    AƒIƒ“EƒIƒt‚Í‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å‚·‚©H
Q: 33) math.h ƒ‹[ƒ`ƒ“‚ªŒ©‚‚©‚è‚Ü‚¹‚ñBƒvƒƒOƒ‰ƒ€‚ðƒRƒ“ƒpƒCƒ‹‚µ‚Ä‚¢‚é
    ‚Ì‚Å‚·‚ªA log(), sin() ‚È‚Ç‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB‚¾‚ê‚©A•‚¯‚āI
Q: 34) GCC ‚̃}ƒjƒ…ƒAƒ‹‚Í‚ ‚è‚Ü‚·‚©H‚à‚µ‚ ‚é‚È‚çA‚Ç‚±‚ÅŽè‚É“ü‚ê‚ç‚ê‚Ü
    ‚·‚©H‚Ü‚½A‚Ç‚¤‚·‚ê‚Έóü‚Å‚«‚Ü‚·‚©H
Q: 35) "Undefined symbol _bsd_ioctl" ‚̃ƒbƒZ[ƒW‚ªo‚Ü‚µ‚½B‚Ç‚¤‚·‚ê‚Î
    ‚¢‚¢‚Ì‚Å‚·‚©H
Q: 36) ƒo[ƒWƒ‡ƒ“ƒAƒbƒv‚·‚é‚Æ‚«‚́A/usr/lib/gcc-lib/i[34]86-linux/
    <old-version> ‚©‚çŒÃ‚¢‚à‚Ì‚ðŽæ‚菜‚­‚±‚Æ‚Í‚Å‚«‚Ü‚·‚©H
Q: 37) w•‚¯‚āxlibipc.a ‚Í‚Ç‚±‚Å‚·‚©Hdosemu 0.49 ‚Ì‚½‚ß‚É•K—v‚È‚Ì‚Å
    ‚·‚ªB
Q: 38) XXX ‚ªƒRƒ“ƒpƒCƒ‹‚Å‚«‚Ü‚¹‚ñB_daemon ‚ª–¢’è‹`‚É‚È‚è‚Ü‚·B‚¾‚ê‚©•
    ‚¯‚āII
Q: 39) w•‚¯‚āxar ‚ƃ‰ƒCƒuƒ‰ƒŠ‚ɂ‚¢‚Ä‚Å‚·BƒVƒ“ƒ{ƒ‹‚̓‰ƒCƒuƒ‰ƒŠ‚É‚ 
    ‚é‚Ì‚Å‚·‚ªAƒŠƒ“ƒN‚ÉŽ¸”s‚µ‚Ü‚·B
Q: 40) •‚¯‚āI‰SŽÒ‚È‚Ì‚Å‚·‚ªA"libc.so.4: incompat. minor ver no."
    ‚Æ‚¢‚¤ƒ[ƒjƒ“ƒOƒƒbƒZ[ƒW‚ª‚łč¢‚Á‚Ä‚¢‚Ü‚·B
Q: 41) c ‚̃vƒƒOƒ‰ƒ€‚̃Rƒ“ƒpƒCƒ‹‚Ì‘O‚Ƀ`ƒFƒbƒN‚·‚é `lint' ‚Í‚Ç‚±‚Å‚·‚©
    H
Q: 42) Ž„‚̃vƒƒOƒ‰ƒ€‚Å sgtty.h ‚ª•K—v‚È‚Ì‚Å‚·‚ªA‚Ç‚±‚É‚ ‚é‚Ì‚Å‚µ‚傤
    ‚©H
Q: 43) SIGSEGV ‚É‚æ‚éƒRƒAƒtƒ@ƒCƒ‹‚̍쐬‚ð‹ÖŽ~‚µ‚½‚èA‹–‰Â‚µ‚½‚è‚·‚é‚É‚Í
    ‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å‚µ‚傤‚©H
Q: 44) "can't load dynamic linker `/lib/ld.so'" ‚̃ƒbƒZ[ƒW‚̈Ӗ¡‚͉½
    ‚Å‚·‚©H
Q: 45) -O2 ‚Æ -O6 ‚Å‚ÌŒø—¦‚̈Ⴂ‚͉½‚Å‚·‚©H
Q: 46) oŠ•s–¾‚̃oƒCƒiƒŠ‚ªƒgƒƒC‚Ì–Ø”n‚̂悤‚ȃEƒBƒ‹ƒX‚ÉŠ´õ‚µ‚Ä‚¢‚é‚©
    ‚Ç‚¤‚©ƒ`ƒFƒbƒN‚·‚é•û–@‚́H
Q: 47) C ƒ‰ƒCƒuƒ‰ƒŠ‚̃\[ƒX‚Í‚Ç‚±‚É‚ ‚è‚Ü‚·‚©H‚Ü‚½ƒŠƒrƒ‹ƒh‚·‚é•û–@‚́H
Q: 48) FD_* ‚Ì’è‹`‚Í‚Ç‚±‚É‚ ‚è‚Ü‚·‚©H
Q: 49) -g ƒIƒvƒVƒ‡ƒ“•t‚ŃŠƒ“ƒN‚µ‚½‚çA___fpu_control ‚Æ ___setfpucw ‚ª
    –¢’è‹`‚¾‚ÆŒ¾‚í‚ê‚Ä‚µ‚Ü‚Á‚½‚Ì‚Å‚·‚ªB /usr/lib/crt0.o Undefined
    symbol ___fpu_control reference from text segment. /usr/lib/crt0.o
    Undefined symbol ___setfpucw reference from text segment. ‚È‚É‚ªˆ«
    ‚¢‚Ì‚Å‚µ‚傤‚©H
Q: 50) ‚킽‚µ‚̃‰ƒCƒuƒ‰ƒŠ‚âƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð‘Û‰»‚·‚éƒc[ƒ‹‚Í‚Ç‚±‚ÅŽè
    ‚É“ü‚è‚Ü‚·‚©H
Q: 51) `mkimage' ‚Æ‚¢‚¤ DLL ƒc[ƒ‹‚ª libgcc ‚Ì‚È‚©‚ÉŒ©‚‚©‚è‚Ü‚¹‚ñB•
    ‚¯‚Ä‚­‚¾‚³‚¢B
Q: 52) "__NEEDS_SHRLIB_libc_4 multiply defined" ‚̃ƒbƒZ[ƒW‚ðo‚È‚¢‚æ
    ‚¤‚É‚·‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚Ì‚Å‚µ‚傤‚©H
Q: 53) QMAGIC ‚Æ‚¢‚¤‚̂́Aˆê”Ê“I‚É‚Í‚Ç‚¤‚¢‚¤‚à‚Ì‚Å‚·‚©H
Q: 54) ‚ǂ̂悤‚É‚·‚ê‚΁AQMAGIC ‚ÌŽÀsƒtƒ@ƒCƒ‹‚⃉ƒCƒuƒ‰ƒŠ‚ðì¬‚Å‚«‚Ü
    ‚·‚©H
Q: 55) "warning using incompatable library version xxx" ‚̃ƒbƒZ[ƒW‚ð
    o‚È‚¢‚悤‚É‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚·‚©H

Q: 0) ‚±‚Ì FAQ ‚̍ŐVƒo[ƒWƒ‡ƒ“‚Í‚Ç‚±‚ÅŽè‚É“ü‚ê‚ç‚ê‚Ü‚·‚©H

A:

‰ñ“š: ÅV”Å‚Í comp.os.linux.announce ‚É’èŠú“I‚Ƀ|ƒXƒg‚³‚ê‚Ä‚¨‚èAŽå—v
‚È Linux
      ƒTƒCƒg‚É”z•t‚³‚ê‚Ä‚¢‚Ü‚·B—Ⴆ‚΁A

                sunsite.unc.edu:/pub/Linux/docs/faqs

      ‚»‚Ì‘¼‚Ì GCC, C, C++, g++, Objective-C ‚Ì FAQ ‚Í‘½•ª

                rtfm.mit.edu:pub/usenet/news.answers

      ‚É‚ ‚é‚Å‚µ‚傤B

Q: 1) Ž„‚ªŽg‚Á‚Ä‚¢‚é GCC ‚̃o[ƒWƒ‡ƒ“‚ð’m‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚Å‚·‚©H

A:

‰ñ“š: ˆÈ‰º‚̃Rƒ}ƒ“ƒh‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B

             gcc -v

      ‚ ‚È‚½‚ÌŽg‚Á‚Ä‚¢‚é GCC ‚̃o[ƒWƒ‡ƒ“‚ðŠm”F‚Å‚«‚Ü‚·Bi‚±‚Ì•¶Í‚ðj
‘‚¢‚Ä
      ‚¢‚鎞“_‚ÅŽ„‚̃}ƒVƒ“‚ŏã‹L‚̃Rƒ}ƒ“ƒh‚ðŽÀs‚·‚é‚ƁAˆÈ‰º‚̂悤‚É•\
Ž¦‚³‚ê‚Ü
      ‚·B

        Reading specs from /usr/lib/gcc-lib/i386-linux/2.5.7/specs
        gcc version 2.5.7

      ‚±‚ê‚Æ“¯‚¶‚à‚Ì‚©A‚»‚êˆÈã‚̃o[ƒWƒ‡ƒ“‚ɃAƒbƒvƒOƒŒ[ƒh‚·‚鎖‚ð‚¨
Š©‚ß‚µ‚Ü
      ‚·B

      P.S ‚à‚µAˆÈ‰º‚̏o—ÍŒ‹‰Ê‚𓾂½‚È‚çA

        Reading specs from /usr/lib/gcc-lib/i486-linux/2.5.7/specs
        gcc version 2.5.7

      486 —p‚ɃRƒ“ƒpƒCƒ‹‚³‚ꂽ gcc ‚𑖂点‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
 

Q: 2) GCC,as,ld,ar, ‚»‚Ì‘¼‚̍ŐV”Å‚Ì”z•t‚Í‚Ç‚±‚É‚ ‚è‚Ü‚·‚©H

A:

‰ñ“š: GCC ”z•t‚ÌŒöŽ®‚̏ꏊ‚́Atsx-11.mit.edu ‚Ì /pub/linux/packages/
GCC ‚Å‚·B
      ‘¼‚̃~ƒ‰[ƒTƒCƒg‚Å‚à“¯—l‚Å‚·B‚·‚×‚Ä‚Ì GCC ‚ÌŒ»•¨‚̍ŐVƒo[ƒWƒ‡ƒ“
‚́A
      ‚±‚±‚ÅŒ©‚‚¯‚ç‚ê‚Ü‚·B

      i‚±‚Ì•¶Í‚ðj‘‚¢‚Ä‚¢‚鎞“_‚̍ŐV‚Ì GCC ‚́Aƒo[ƒWƒ‡ƒ“ 2.5.7 ‚Å
‚ ‚èA
      ˆÈ‰º‚̏ꏊ‚ÅŽè‚É“ü‚ê‚Ü‚µ‚½B

      tsx-11.mit.edu:/pub/linux/packages/GCC/gcc-2.5.7-p1.tar.gz

      ‚µ‚©‚µ‚È‚ª‚çA‚±‚ê‚Í GNU foundation ‚É‚æ‚é GCC ‚Ì—˜—p‚Å‚«‚éÅVƒo
[ƒWƒ‡ƒ“
      ‚Ì‚±‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚é‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñBÅV‚Ì * ”z•t * ƒo[ƒWƒ‡ƒ“
‚Å‚·B

      Linux GCC ‚̃ƒ“ƒe‚ð‚µ‚Ä‚¢‚élX‚́A‚ ‚È‚½‚Ì‚½‚ß‚É‚ ‚È‚½Ž©g‚ª—˜
—p‚Å‚«‚é
      ÅVƒo[ƒWƒ‡ƒ“‚ðƒRƒ“ƒpƒCƒ‹‚µ‚â‚·‚¢‚悤‚ɍì‚Á‚Ä‚¢‚Ü‚·BGCC ƒ\[ƒX
‚Æ‚Æ‚à‚É
      ”z’u‚·‚éƒXƒNƒŠƒvƒg‚ª‚ ‚È‚½‚Ì‚½‚ß‚É—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B

      ‚à‚µA‚ ‚È‚½‚ªŒ»•¨‚ðƒRƒ“ƒpƒCƒ‹‚µ‚½‚¢‚È‚çAÅV‚̃Cƒ“ƒNƒ‹[ƒhiƒw
ƒbƒ_j
      ƒtƒ@ƒCƒ‹‚ª•K—v‚É‚È‚é‚Å‚µ‚傤Bi‚±‚Ì•¶Í‚ðj‘‚¢‚Ä‚¢‚鎞“_‚̍ŐV
‚Ì
      ƒCƒ“ƒNƒ‹[ƒhiƒtƒ@ƒCƒ‹j‚́AˆÈ‰º‚©‚ç“üŽè‚Å‚«‚Ü‚·B

        tsx-11.mit.edu:/pub/linux/packages/GCC/inc-4.5.8.tar.gz
 

Q: 3) libc.so,libw.so ‚Ì‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚̍ŐV”Å‚Í‚Ç‚±‚ÅŒ©‚‚¯‚邱‚Æ‚ª‚Å
‚«‚Ü‚·‚©H

A:

‰ñ“š: ã‚Ì (2) ‚ðŒ©‚Ä‚­‚¾‚³‚¢Bimage*/tar.z ƒtƒ@ƒCƒ‹‚ª•K—v‚Å‚·B486 ‚½
‚߂̃Cƒ
      [ƒW‚́A/pub/linux/packages/GCC/486 ‚ÅŒ©‚‚¯‚ç‚ê‚Ü‚·B
 

Q: 4) Linux ‚Å‘¼‚ɂ͂ǂ̂悤‚È‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ªŽg‚¦‚Ü‚·‚©H

A:

‰ñ“š: Ok!‚±‚±‚ɁAŽ„‚ªƒRƒ“ƒpƒCƒ‹‚µ‚½ƒŠƒXƒg‚ª‚ ‚è‚Ü‚·B‘½­‚̒ljÁ^•ÏX‚Í
      ‘å–Ú‚É‚Ý‚Ä‚­‚¾‚³‚¢B

      ˆÈ‰º‚ɏq‚ׂéƒtƒ@ƒCƒ‹‚́AŠeƒ‰ƒCƒuƒ‰ƒŠ‚ªÅ‹ß“ü‚Á‚Ä‚¢‚éi‚Ü‚½‚Í“ü‚Á
‚Ä‚¢‚é‚Æ
      •ñ‚³‚ꂽjƒtƒ@ƒCƒ‹‚Å‚·B

      P.S. ˆÈ‰º‚̃‰ƒCƒuƒ‰ƒŠ‚ð‚æ‚èŠmŽÀ‚È‚à‚Ì‚É‚·‚邽‚߂ɁAƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ
ƒ“ƒe‚·‚é
      lXA‚Ü‚½ƒ‰ƒCƒuƒ‰ƒŠŽ©g‚ª tools-x.y.tar.z ƒpƒbƒP[ƒW‚É“ü‚Á‚Ä‚¢‚é
 
      doc/table_description ƒtƒ@ƒCƒ‹‚ðŽQÆ‚µ‚Ü‚·B
      ‚±‚ê‚炪‚Ç‚±‚ÅŽè‚É“ü‚é‚©‚ÍŽ¿–â (5) ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

‚±‚ꂪALinux —p‚Ì DLL ƒ‰ƒCƒuƒ‰ƒŠ‚ª“o˜^‚³‚ê‚Ä‚¢‚éˆê”Ê“I‚ȃtƒ@ƒCƒ‹ˆê——‚Å
‚·B
======================================================================

libc.so     tsx-11.mit.edu:/pub/linux/packages/GCC/image-4.5.8.tar.gz
libm.so         ã‹L‚Ì tar.gz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B

libX11.so   tsx-11.mit.edu:pub/linux/packages/X11/XFree86-2.0/
xf86-lib-2.0
.tar.gz
libXt.so        ã‹L‚Ì tar.gz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B
libXaw.so       ã‹L‚Ì tar.gz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B

librl.so    sunsite.unc.edu:/pub/Linux/libs/librl-1.1.tar.z
libgr.so    sunsite.unc.edu:/pub/Linux/libs/libgr-1.2.tar.z
libf2c.so   sunsite.unc.edu:/pub/Linux/development/fortran/
libf2c-0.9.tar.z
libF77.so       ã‹L‚Ì libf2c.so ‚ð‘ã‚í‚è‚ÉŽg‚Á‚Ä‚­‚¾‚³‚¢B
libI77.so       ã‹L‚Ì libf2c.so ‚ð‘ã‚í‚è‚ÉŽg‚Á‚Ä‚­‚¾‚³‚¢B

libXpm.so   sunsite.unc.edu:/pub/Linux/libs/libXpm32g.tar.z

libnsl.so   ftp.lysator.liu.se:/pub/NYS/nys-0.xx.tar.gz

libolgx.so  sunsite.unc.edu:/pub/Linux/libs/xview3L5.tar.gz
libxview.so     ã‹L‚Ì tar.gz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B
libsspkg.so     ã‹L‚Ì tar.gz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B
libUIT.so       ã‹L‚Ì tar.gz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B

libPEX.so   tsx-11.mit.edu:pub/linux/packages/X11/XFree86-1.3/
xf86-pex-2.0
.tar.gz

libtcl.so   sunsite.unc.edu:/pub/Linux/development/tcl/*
libtk.so        tcl/tk ‚Ì‚È‚©‚Ì‚¢‚ë‚¢‚ë‚È tar.gz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢
@@@@@@@@‚Ü‚·B

libWc.so            •s–¾‚Å‚·B
libXp.so            •s–¾‚Å‚·B

libIV.so    nic.funet.fi:/pub/OS/Linux/images/Slackware/iv1/iv*.tgz
libUnidraw.so   ã‹L‚Ì .tgz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B

libXm.so    Motif ƒ‰ƒCƒuƒ‰ƒŠ‚̓tƒŠ[ƒ\ƒtƒg‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‰º‹L‚̃m[ƒg
‚ðŽQÆ
            ‚µ‚Ä‚­‚¾‚³‚¢B

libsrgp.so  sunsite.unc.edu:/pub/Linux/X11/devel/suit.tpz
libsuit.so      ã‹L‚Ì tpz ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·Bi”z•z‚µ‚Ä‚¢‚È‚¢‚Æ
•ñ
@@@@@@@@‚³‚ê‚Ä‚¢‚Ü‚·j

libOI.so    tsx-11.mit.edu:/pub/linux/packages/OI/oi40.tar
libOIrg.so       ã‹L‚Ì tar ƒtƒ@ƒCƒ‹‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B

libld.so    tsx-11.mit.edu:/pub/linux/packages/GCC/ldso-1.4.tar.z
                 ilibc 4.4.4 ˆÈã‚ª•K—v‚Å‚·j

libarma.so  ftp.atnf.csiro.au:/pub/karma
libkarmaX11.so      ã‹L‚Ì site ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
libkarmaXt.so       ã‹L‚Ì site ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
libkarmagraphics.so ã‹L‚Ì site ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
libkarmawidgets.so  ã‹L‚Ì site ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
libkarmaxview.so    ã‹L‚Ì site ‚ðŒ©‚Ä‚­‚¾‚³‚¢B

libwxwin.so     sunsite.unc.edu:/pub/Linux/X11/devel/wxWin_linux.tgz

libandrew.so    sunsite.unc.edu:/pub/Linux/X11/andrew/
andrew.apps.tar.gz

libUil.so       ¤‹Æƒ‰ƒCƒuƒ‰ƒŠ‚Å‚·B

libBLT.so       sunsite.unc.edu:/pub/Linux/devel/tcl/blt1.0-bin.tar.z

libvga.so       sunsite.unc.edu:/pub/Linux/libs/svgalib097.tgz

libitcl.so      sunsite.unc.edu:/pub/Linux/devel/tcl/itcl1.3-bin.tar.z

------------
ƒm[ƒg 1:-

3D Œø‰ÊilibXaw3d-0.6j‚𓾂é Xaw ‚Ì DLL ƒ‰ƒCƒuƒ‰ƒŠ‚̈ꕔ‚Æ Xaw ƒNƒ‰ƒC
ƒAƒ“ƒgã
‚Ì Mac(TM) ƒ‰ƒCƒN‚̃XƒNƒ[ƒ‹ƒo[‚́A‚¨‚Ì‚¨‚̈ȉº‚Å“üŽè‚Å‚«‚Ü‚·B

    sunsite.unc.edu:/pub/Linux/libs/libXaw3d-3.0-B.tar.z
‚Æ
    sunsite.unc.edu:/pub/Linux/libs/libXaw.Scrollbar.taz

ƒm[ƒg 2:-

motif —p‚̃‰ƒCƒuƒ‰ƒŠ‚́A‚¨‹à‚𕥂í‚È‚¯‚ê‚΂¢‚¯‚Ü‚¹‚ñ!!
Ú‚µ‚­‚͈ȉº‚̈ø—p‚ð“Ç‚ñ‚Å‚­‚¾‚³‚¢B

------

Metro Link ŽÐ‚́A199 ƒhƒ‹‚Å Linux —p‚Ì OSF/Motif 1.2.2 ‚ÌŠ®‘S‚ȃ‰ƒ“ƒ^ƒC
ƒ€‚Æ
ŠJ”­ƒVƒXƒeƒ€‚ð’ñ‹Ÿ‚µ‚Ü‚·B

•K—v‚È‚à‚Ì:
    Linux 0.99pl4 ˆÈã (Œ»Ý‚Ì 0.99pl12 ‚Å OK)
    XFree86 1.2 ˆÈã (1.3 ‚Å OK)
    libc 4.3.3 ˆÈã (libc 4.4 ‚Å OK)

‰½‚ðŠÜ‚ñ‚Å‚¢‚é‚©:

ƒ‰ƒ“ƒ^ƒCƒ€:
    1) Motif ƒEƒBƒ“ƒhƒEƒ}ƒl[ƒWƒƒ (mwm)
    2) ‹¤—L motif ƒ‰ƒCƒuƒ‰ƒŠ (libXm.so.1.2.2)
    3) OSF ‚Æ net ‚©‚ç‚Ì Motif ‚̃fƒ‚

ŠJ”­ƒc[ƒ‹:
    1) ‹¤—L + Ã“I Motif ƒ‰ƒCƒuƒ‰ƒŠ
    2) Ã“I Mrm ‚Æ Uil ƒ‰ƒCƒuƒ‰ƒŠ
    3) UIL ƒRƒ“ƒpƒCƒ‰
    4) Motif ƒwƒbƒ_ƒ‰ƒCƒuƒ‰ƒŠ
    5) Motif ƒtƒ@ƒ“ƒNƒVƒ‡ƒ“ƒR[ƒ‹‚̃}ƒjƒ…ƒAƒ‹
    6) Imakefile ƒTƒ|[ƒg
    7) OSF/Motif ‚̃fƒ‚‚̃\[ƒX

‚»‚µ‚āAO'Reilly & Associates, Inc ‚É‚æ‚èo”Å‚³‚ê‚Ä‚¢‚é X-window books 
‚©‚ç
‚ ‚È‚½‚ª‘I‚ñ‚¾ˆêûB

Linux —p OSF/Motif 1.2.2 ‚́AMetro Link ŽÐ‚Ö˜A—‚·‚邱‚Æ‚Å’•¶‚Å‚«‚Ü‚·
B
“d˜b”ԍ†‚Í (305) 970-7353AFAX ”ԍ†‚Í (305) 970-7351A
“dŽqƒ[ƒ‹‚Í sales@metrolink.com ‚Å‚·B

=======================================================================
=======
  Metro Link Incorporated.  2213 W. McNab Rd. Pompano Beach,  Florida  33069
 X11.5 and OSF/Motif for QNX, SVR3, SVR4.
[012], SCO, Linux, UnixWare, LynxOS, 
                  AT&T, Venix, ISC, Solaris, Pyramid, SunOS
 Voice: +1.305.970.7353    Fax: +1.305.970.7351  Email:
 mahesh@metrolink.com
            WATCH your: Word Action Thought Character Heart
=======================================================================
=======
 

Q: 5) Linux —p‚Ì‹¤—L DLL ƒ‰ƒCƒuƒ‰ƒŠ‚ðì‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å‚·‚©H

A:

‰ñ“š: tsx-11.mit.edu ‚©‚çAˆÈ‰º‚̃tƒ@ƒCƒ‹‚ðŽè‚É“ü‚ê‚ăCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚­
‚¾‚³‚¢B

        /pub/linux/packages/GCC/src/tools-2.10.tar.z

      “O’ê“I‚É doc ƒTƒuƒfƒBƒŒƒNƒgƒŠ‚Ì README.tr ƒtƒ@ƒCƒ‹‚ð“Ç‚ñ‚Å‚­‚¾‚³
‚¢B
      ‚½‚­‚³‚ñ‚Ì“w—Í‚É‚æ‚肾‚ê‚à‚ª‹¤—L DLL ‚ðì‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É“Ç‚Ý
‚â‚·‚­A
      o—ˆ‚é‚©‚¬‚è‚Ì‚±‚Æ‚ªÚ‚¹‚Ä‚ ‚è‚Ü‚·B

      ‚à‚µA‚ ‚È‚½‚ª README.ps ‚æ‚è‚à“ú•t‚̐V‚µ‚¢ README.tr ‚ðŒ©‚Â‚¯A
‚«‚ê‚¢‚È
      ƒ|ƒXƒgƒXƒNƒŠƒvƒgƒo[ƒWƒ‡ƒ“‚ª—~‚µ‚¢‚È‚ç‚΁A README.tr ‚ðì‚è‚È‚¨‚³
‚È‚¯‚ê‚Î
      ‚È‚ç‚È‚¢‚Å‚µ‚傤B‚µ‚©‚µAgroff ‚ðw•K‚¸xƒCƒ“ƒXƒg[ƒ‹‚µ‚È‚¯‚ê‚Î
‚È‚è‚Ü‚¹
      ‚ñBdoc ƒTƒuƒfƒBƒŒƒNƒgƒŠ‚ŁAƒRƒ}ƒ“ƒh `make README.ps' ‚ðŽÀs‚·‚é
‚¾‚¯‚ŏ\
      •ª‚Å‚·B

      ** ƒm[ƒg: ƒo[ƒWƒ‡ƒ“‚ª•Ï‚í‚Á‚Ä‚¢‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
 

Q: 6) Š®àø‚ȃoƒCƒiƒŠ‚ðŽÀs‚µ‚½‚̂ɁC"PLT__oct__FUii" ƒƒbƒZ[ƒW‚ðŽó‚¯Žæ
‚é‚Ì‚Í‚È‚º‚Å‚·‚©H

A:

‰ñ“š: ‚¨‚»‚ç‚­A‚ ‚È‚½‚ªŽ‚Á‚Ä‚¢‚é libc.so ‚̃o[ƒWƒ‡ƒ“‚ªŒÃ‚¢AŠŽ‚^‚Ü
‚½‚́A
      Œë‚Á‚½ƒo[ƒWƒ‡ƒ“‚Ì `ld' ‚ð‚ðŽg‚Á‚ăvƒƒOƒ‰ƒ€‚ðƒRƒ“ƒpƒCƒ‹‚µ‚½‚©‚ç
‚Å‚µ‚å
      ‚¤B
      ‰ðŒˆ•û–@‚́Atsx-11.mit.edu ‚Ì /pub/linux/package/GCC/
binutils.tar.z ‚Ì’†
      ‚©‚çVƒo[ƒWƒ‡ƒ“‚̃oƒCƒiƒŠƒ†[ƒeƒBƒŠƒeƒB‚ðŽè‚É“ü‚ê‚邱‚Æ‚Å‚·B
 

Q: 7) ƒvƒ‰ƒbƒgƒz[ƒ€ XXX ã‚É Linux ‚̃R[ƒh‚ð‚Í‚«‚¾‚·ƒNƒƒXƒRƒ“ƒpƒCƒ‰
‚ðì‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å‚µ‚傤‚©H

A:

‰ñ“š: gcc ‚̃\[ƒXƒR[ƒh‚ðŽ‚Á‚Ä‚¢‚é‚Ɖ¼’肵‚Ü‚·B‚¢‚‚à‚́AGCC ‚Ì
 INSTALL ƒtƒ@
      ƒCƒ‹‚̏î•ñ‚Å—‰ð‚Å‚«‚Ü‚·B
      ƒvƒ‰ƒbƒgƒz[ƒ€ XXX ‚Å `configure --target=i386-linux-linux --host
=XXX' 
      ‚Æ‚·‚邱‚Æ‚É‚æ‚Á‚Ä `make' ‚ð‚²‚Ü‚©‚µAˆ—‚𑱂¯‚Ü‚·B
      Linux ‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚âƒJ[ƒlƒ‹‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚â
      tsx-11.mit.edu ‚É‚ ‚é /pub/linux/packages/GCC/src ‚̃\[ƒX‚©‚çƒN
ƒƒX
      ƒRƒ“ƒpƒCƒ‰‚âƒNƒƒXƒŠƒ“ƒJ‚ðì‚邱‚Æ‚ª•K—v‚È‚±‚Æ‚É‹C‚­‚Å‚µ‚傤B

      linux ƒ}ƒVƒ“‚̃R[ƒh‚ðì‚邽‚ß‚Ì Sparc (Sun) —p‚̃NƒƒXƒRƒ“ƒpƒCƒ‰
‚̍쐬—á
      ‚ª‚ ‚è‚Ü‚·BŠÈ’P‚È•û–@‚Å‚·B‚·‚Å‚ÉŽg‚Á‚Ä‚¢‚é linux ƒ}ƒVƒ“‚ðŽg‚Á‚Ä
‚¢‚é HLU
      ‚É‚æ‚Á‚ăRƒ“ƒpƒCƒ‹‚³‚ꂽlinux ƒ‰ƒCƒuƒ‰ƒŠ‚ðŽg—p‚·‚éŠÈ’P‚È•û–@‚Å‚·
B
      Ž„‚́w‹­—͂ȁxƒAƒhƒoƒCƒX‚́A‚¢‚­‚‚©‚̃Rƒ“ƒpƒCƒ‹‚ÅŽg—p‚·‚é GNU ‚Ì
 make 
      (gmake) ‚ðŽè‚É“ü‚ê‚邱‚Æ‚Å‚·BiƒoƒCƒiƒŠƒ†[ƒeƒBƒŠƒeƒB‚â@gas ‚ª
 Sun ‚Ì 
      make “¯—l‚É Makefiles.linux ‚ðˆµ‚¤‚ÆŽ¸”s‚·‚é‚Å‚µ‚傤)

    7.1) ‚·‚Å‚É Sun ã‚Ì•W€ƒCƒ“ƒXƒg[ƒ‹ƒpƒX‚Æ‚µ‚Ä /usr/local/bin ‚É“®
‚­ gcc
       ƒo[ƒWƒ‡ƒ“ 2.4.5 ‚ª‚ ‚é‚Ɖ¼’肵‚Ü‚·B‚·‚È‚í‚¿AƒRƒ“ƒpƒCƒ‰‚Í
       /usr/local/lib/gcc-lib ‚É‚ ‚è‚Ü‚·B

       Å‰‚́A ˆÈ‰º‚̂悤‚É linux “Á—L‚̃fƒBƒŒƒNƒgƒŠ‚ðì‚è‚Ü‚·B
       i’†ŠÔƒfƒBƒŒƒNƒgƒŠ‚àì‚é•K—v‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñj

        % mkdir -p /usr/local/lib/gcc-lib/i386-linux-linux/bin
        % mkdir -p /usr/local/lib/gcc-lib/i386-linux-linux/2.4.5/
include
        % mkdir    /usr/local/lib/gcc-lib/i386-linux-linux/include

    7.2) ŠÂ‹«•Ï”‚ðÝ’è‚·‚鎖‚É‚æ‚èA’·‚¢ƒpƒX–¼‚ð‘Å‚¿ž‚Ü‚È‚­‚Ä‚æ‚­‚È‚è
‚Ü‚·B
       .login ‚â .cshrc ƒtƒ@ƒCƒ‹‚ɃZƒbƒg‚µ‚Ä‚­‚¾‚³‚¢B“¯—l‚É DLL ‚È‚Ç‚Ì
ƒNƒƒXƒR
       ƒ“ƒpƒCƒ‹‚Ì‚½‚ß‚É l-ar, l-ranlib ‚ðŽg‚¤•K—v‚ª‚ ‚é‚Å‚µ‚傤B
       ‚³‚µ‚ ‚½‚èAˆÈ‰º‚Ì‚±‚Æ‚ðs‚Á‚Ä‚­‚¾‚³‚¢B

       csh ‚̏ꍇ:
           % setenv LBINS /usr/local/lib/gcc-lib/i386-linux-linux/bin/

       sh ‚̏ꍇ:
           % LBINS=/usr/local/lib/gcc-lib/i386-linux-linux/bin/
           % export LBINS

       linux, asm, gnu, sys ‚â‚»‚Ì‘¼‚̃TƒuƒfƒBƒŒƒNƒgƒŠ‚Ì“à—e‚Æ‚µ‚āw‚·
‚ׂẮx 
       linux “Á—L‚̃wƒbƒ_ƒtƒ@ƒCƒ‹‚ð“ü‚ê‚Ä‚­‚¾‚³‚¢B${LBINS}../include 
”z‰º‚ð
       wŠm”Fx‚µ‚Ä‚­‚¾‚³‚¢Bƒwƒbƒ_ƒtƒ@ƒCƒ‹‚݂̍菈‚ÍŽ¿–â(2)A(23)‚ðŒ©
‚Ä‚­‚¾‚³
       ‚¢B‚ ‚È‚½‚́A‚»‚ꂼ‚ê‚ɂ‚¢‚ĐV‚µ‚¢ƒJ[ƒlƒ‹‚ðƒŠƒŠ[ƒX‚µ‚È‚¯‚ê‚Î
‚È‚è‚Ü‚¹
       ‚ñB

       Ž„‚Ì linux ƒ}ƒVƒ“‚©‚çAsun ‚Ö“]‘—‚̘b‚ð‚µ‚Ü‚µ‚傤B

        % rcp -r linux_machine:/usr/include ${LBINS}../

       ˆê•ûAƒCƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚ƃJ[ƒlƒ‹‚̃\[ƒX‚ðŽè‚É“ü‚ê‚é•K—v‚ª‚ 
‚è‚Ü‚·B
       Ž¿–â (2) ‚ðŒ©‚Ä‚­‚¾‚³‚¢B‚»‚ê‚ð“WŠJ‚·‚é•K—v‚à‚ ‚è‚Ü‚·B
       ‚µ‚½‚ª‚Á‚āAlimits.h, varargs.h, stdargs.h ‚̂悤‚È gnu ‚Ì“Á•Ê‚È
ƒtƒ@ƒCƒ‹
       ‚ª•K—v‚É‚È‚é‚Å‚µ‚傤B‚Ü‚½AŽ„‚Ì linux ƒ}ƒVƒ“‚̘b‚ð‚µ‚Ü‚µ‚傤B

        % rcp -r \
            linux_machine:/usr/lib/gcc-lib/i386-linux/2.4.5/include \
            ${LBINS}../2.4.5

       i386 ‚Ü‚½‚Í 2.4.5 ‚Í‚ ‚È‚½‚̃}ƒVƒ“‚â gcc ‚̃o[ƒWƒ‡ƒ“‚É‚æ‚è•Ï‚¦
‚È‚¯‚ê‚Î
       ‚È‚ç‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB

    7.3) ‚³‚āA‚ ‚È‚½‚̓NƒƒXƒAƒZƒ“ƒuƒ‰‚ƃŠƒ“ƒJ‚ð“WŠJ‚µAƒRƒ“ƒpƒCƒ‹‚µ‚È
‚¯‚ê‚΂È
       ‚è‚Ü‚¹‚ñB

       ˆÈ‰º‚̃tƒ@ƒCƒ‹‚ðŽè‚É“ü‚ê‚Ä‚­‚¾‚³‚¢B

         tsx-11.mit.edu:/pub/linux/packages/GCC/src/
binutils-1.9l.3.tar.gz
         tsx-11.mit.edu:/pub/linux/packages/GCC/src/
gas-1.38.1l.2.tar.gz

       ‚»‚µ‚āA‚Ç‚±‚©‚Å“WŠJ‚µ‚Ä‚­‚¾‚³‚¢B

    7.3.1) ƒoƒCƒiƒŠƒ†[ƒeƒBƒŠƒeƒB‚̃fƒBƒŒƒNƒgƒŠ binutils-1.9l.3 ‚Ì’†:
        Makefile.linux ‚ðƒGƒfƒBƒbƒg‚µ‚āAbindir ’è‹`‚̍s‚ð‘‚«Š·‚¦‚Ä‚­
‚¾‚³‚¢B

                bindir=${LBINS}

        ‚»‚µ‚āA‚ ‚È‚½‚̃}ƒVƒ“i‚±‚̏ꍇ‚Í "sun4"j‚Ì“K“–‚ȃuƒƒbƒN‚ª•À
‚Ñ‚Ü‚·B

            HOST_ROOT=${LBINS}..

        0.99pl12 (‚½‚Ô‚ñ‚»‚êˆÈã‚̃Œƒxƒ‹‚Å‚à) ‚Ì‚½‚ß‚Éa.out.h ‚Æ
 page.h ‚ðƒfƒB
        ƒŒƒNƒgƒŠ‚ɃRƒs[‚µAMISCFLAGS ‚Ì’†‚ÉŠÜ‚Ü‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Å‚µ‚å
‚¤B
        ‚»‚µ‚āAƒJƒŒƒ“ƒgƒoƒCƒiƒŠƒ†[ƒeƒBƒŠƒeƒB‚̃fƒBƒŒƒNƒgƒŠ‚ňȉº‚Ì‚±
‚Æ‚ðŽÀs
        ‚µ‚Ä‚­‚¾‚³‚¢B

            % mkdir linux
            % cp ${LBINS}../include/linux/a.out.h linux
            % cp ${LBINS}../include/linux/page.h linux

        ‚»‚µ‚āAMakefile.linux ‚ð•ÒW‚µA“K“–‚È MISCFLAGS ‚̃‰ƒCƒ“‚É
 -I ‚ð‰Á‚¦
        ‚Ä‚­‚¾‚³‚¢B

        ‚»‚µ‚āAŽÀs‚µ‚Ä‚­‚¾‚³‚¢B

            % make -f Makefile.linux archpfx= install

        linux ‚Ì ar, ranlib ƒ†[ƒeƒBƒŠƒeƒB‚Æ‚µ‚āAl-ar, l-ranlib ‚ðŽÀs
‚·‚邱‚Æ
        ‚ª‚Å‚«‚é‚悤‚É‚·‚邽‚߂ɁAˆÈ‰º‚Ì‚±‚Æ‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B(Ž„‚ÍŒÂ
l‚Ì
        ${HOME}/bin ƒfƒBƒŒƒNƒgƒŠ‚É l-blah ‚ð’u‚¢‚Ä‚¢‚Ü‚·)

            % sh -c 'for i in ${LBINS}*; do \
                      ln -s $i ${HOME}/bin/l-`basename $i`; done'

    7.3.2) ******* gas-1.38.1l.1 ‚ÌŽž *******
        ƒAƒZƒ“ƒuƒ‰ƒfƒBƒŒƒNƒgƒŠ gas-1.38.1l.1 ‚Ì’†:
        makefile.linux ‚ð•ÒW‚µAˆÈ‰º‚ð“Ç‚ñ‚Å“K“–‚ȍs‚ð•ÏX‚µ‚Ä‚­‚¾‚³‚¢
B

            LINUX_INCDIR=

            HEADERS=-DA_OUT_H=\"${LBINS}../include/linux/a.out.h\"

        ‚»‚µ‚āA‘Å‚¿ž‚ñ‚Å‚­‚¾‚³‚¢B(‚½‚­‚³‚ñ‚̃[ƒjƒ“ƒO‚ª‚Å‚é‚Å‚µ‚å
‚¤)

            % make -f makefile.linux

         ƒNƒƒXƒAƒZƒ“ƒuƒ‰‚̃oƒCƒiƒŠƒtƒ@ƒCƒ‹‚ðŽè“®‚ŃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B

            % cp a386 ${LBINS}as

        ******* gas-2.2 i‚»‚êˆÈãj‚ÌŽž *******

        ƒAƒZƒ“ƒuƒ‰ƒfƒBƒŒƒNƒgƒŠ‚ňȉº‚Ì‚±‚Æ‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B

            % ./configure --host=sun4 --target=i386-linux-linux
            % make CC=gcc CFLAGS=-O2 LDFLAGS=-s

    7.3.3) ÅŒã‚Ɉȉº‚Ì“ñ‚‚̃Šƒ“ƒN‚ðs‚Á‚Ä‚­‚¾‚³‚¢B

            % ln -s ${LBINS}as ${LBINS}../2.4.5/as
            % ln -s ${LBINS}ld ${LBINS}../2.4.5/ld

    7.4) ‚³‚āA‚ ‚È‚½‚Ì Sun ã‚Ì GCC ƒ\[ƒXƒfƒBƒŒƒNƒgƒŠ‚É“WŠJ‚·‚é‚ɂ͈È
‰º‚Ì‚±‚Æ
       ‚ðs‚Á‚Ä‚­‚¾‚³‚¢B

        % ./configure --host=sun4 --target=i386-linux-linux
        % make  CC=/usr/local/bin/gcc CFLAGS="-O2 -s" \
                tooldir=${LBINS}.. LANGUAGES="c c++ objc"

      libgcc.a ƒ‰ƒCƒuƒ‰ƒŠ‚ðì¬Žž‚ɃGƒ‰[‚ŏI—¹‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªA–³
Ž‹‚µ‚Ä‚­
      ‚¾‚³‚¢B–]‚Ý‚Í‘æˆê‚ɃNƒƒXƒRƒ“ƒpƒCƒ‰‚̃oƒCƒiƒŠ‚Å‚·‚©‚çB

    7.5) ˆÈã‚̍ì‹Æ‚ªI—¹ŒãA“KØ‚ȏꏊ‚ɃRƒs[‚µ‚Ü‚·B

        % cp cc1 cc1plus cpp ${LBINS}../2.4.5

      ‘O’u‚«‚Æ‚µ‚ăRƒ“ƒpƒCƒ‰‚ð bin ƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µAŠÈ’P‚É‚Ç‚±‚©
i‚½‚Æ‚¦
      ‚Î ~/binj‚ɃŠƒ“ƒN‚µ‚Ü‚·B

        % cp xgcc ${LBINS}gcc
        % ln -s ${LBINS}gcc ${HOME}/bin/gcc-linux

    7.6) ‚ ‚È‚½‚Ì linux ƒ}ƒVƒ“‚©‚烉ƒCƒuƒ‰ƒŠ‚ðŽæ‚èo‚µ‚Ü‚·B

        % rcp linux_machine:/usr/lib/lib\*a ${LBINS}../2.4.5
        % rcp linux_machine:/usr/X386/lib\*a ${LBINS}../2.4.5
        % rcp linux_machine:/usr/lib/crt0.o ${LBINS}../2.4.5

    7.7) ‚»‚¤‚¢‚¤‚±‚Æ‚Å‚·B‚È‚É‚©ƒRƒ“ƒpƒCƒ‹‚µ‚Ä‚Ý‚Ä‚­‚¾‚³‚¢BƒpƒbƒP[ƒW
‚ɏ‘‚©
         ‚ê‚Ä‚¢‚邽‚­‚³‚ñ‚Ì‚æ‚¢‚±‚Æ‚ª‚ ‚é‚̂ŁAˆÈ‰º‚Ì‚±‚Æ‚ð‚â‚Á‚Ä‚Ý‚Ü‚µ
‚傤B
         i‚ ‚È‚½‚Ì ${HOME}/bin ‚ɃZƒbƒg‚·‚éƒpƒX‚ð‚ª‚ ‚é‚Ɖ¼’肵‚Ü‚·B
j

        % make CC="gcc-linux -O6 -s" RANLIB=l-ranlib AR="l-ar"

    7.8) ‚à‚µA‹¤—L DLL ‚ŃNƒƒXƒRƒ“ƒpƒCƒ‹‚ð‚µ‚½‚¢‚È‚ç‚΁AˆÈ‰º‚Ì‚à‚Ì‚ð
Žè‚É“ü
         ‚ê‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB

        tsx-11.mit.edu:/pub/linux/packages/GCC/src/tools-2.10.tar.z

         ƒNƒƒXƒo[ƒWƒ‡ƒ“‚̃Rƒ“ƒpƒCƒ‹‚Ì‚½‚ß‚É—pˆÓ‚³‚ꂽ tools ƒTƒuƒfƒB
ƒŒƒNƒgƒŠ
         ‚Ì Makefile.cross ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B Makefile.cross ‚̍ŏ‰‚Ì•”
•ª‚ðˆÈ‰º
         ‚̂悤‚ɕύX‚µ‚Ä‚­‚¾‚³‚¢B

                CROSSBINDIR=${LBINS}
                CROSSINCDIR=${LBINS}../include

         ÅŒã‚É BINDIR ‚Ì’è‹`‚ð•ÏX‚µ‚Ü‚·B‚킽‚µ‚Í ${LBINS}../dll/bin 
‚ðƒZƒbƒg
         ‚µ‚Ä‚¢‚Ü‚·B‚±‚ê‚́A‚ ‚È‚½‚Ì‚½‚ß‚É ${LBINS}../dll/jump ‚ðì¬
‚·‚邱‚Æ‚É
         ‚È‚é‚Å‚µ‚傤B‚»‚µ‚āA

        % make -f Makefile.cross install

         ‚ðs‚¤‚ׂ«‚Å‚·B
 

Q: 8) ‚ǂ̂悤‚ȃVƒ“ƒ{ƒ‹‚ª Linux ‚Ì GCC ‚É‚æ‚Á‚ÄŽ©“®“I‚É’è‹`‚³‚ê‚Ü‚·‚©
H

A:

‰ñ“š: ƒVƒ“ƒ{ƒ‹‚́A`linux', `__unix__', '__i386__', `__linux__', 
`__unix', 
      `__i386', `__linux' ‚Å‚·B
      ³‚µ‚¢ƒŠƒXƒg‚̓Rƒ“ƒpƒCƒ‹Žž‚É‚Ì gcc ‚É -v ƒtƒ‰ƒO‚ðŽg‚¤‚±‚Æ‚Å•\Ž¦‚³
‚ê‚Ü‚·B

      P.s ƒRƒ“ƒpƒCƒ‰‚ð’Ê‚µ‚ăvƒƒOƒ‰ƒ€‚Å "linux" ‚ÍŽ©“®“I‚É’è‹`‚³‚ê‚Ü‚·
BPOSIX 
      ‚ɏ€‹’‚µ‚Ä‚¢‚܁w‚¹‚ñxB__linux__ ‚Ì‘ã‚í‚è‚Æ‚µ‚ăIƒyƒŒ[ƒeƒBƒ“ƒO
ƒVƒXƒeƒ€ 
      ‚̂悤‚È“Á•Ê‚ȃRƒ“ƒpƒCƒ‹ƒvƒƒOƒ‰ƒ€‚ªŽg‚¤‚ׂ«‚à‚Ì‚Å‚·B__linux__ 
‚Í POSIX 
      ‚ɏ€‹’‚µ‚Ä‚¢‚܁w‚·xB

      ‚±‚Ì‚±‚Ƃ́A‚ ‚È‚½‚Ì linux ‚Ì“Á•Ê‚ȃR[ƒh‚̉ñ‚è‚ð•ï‚Þ‚±‚Æ‚ª‚Å‚«‚é
‚±‚Æ‚ð
      ˆÓ–¡‚µ‚Ä‚¢‚Ü‚·Bi—Ⴆ‚΁j

      #ifdef __linux__
      ...[linux specific code here]...
      #endif /* ifdef linux */

      Makefile ‚É’è‹`‚·‚é“Á•Ê‚ȉ½‚©‚ð‰Á‚¦‚È‚­‚Ä—Ç‚¢‚Ì‚Å‚·B

      ‚ ‚È‚½‚́Aƒtƒ@ƒCƒ‹‚É‚ ‚È‚½Ž©g‚Ì’è‹`‚ð‰Á‚¦‚邾‚¯‚Å‚·B

        /usr/lib/gcc-lib/i386-linux/2.5.7/specs
 

Q: 9) ƒRƒ“ƒpƒCƒ‹Žž‚Ɂisigvec‚Æ‚¢‚Á‚½“Á•Ê‚ȃVƒOƒiƒ‹‚Ȃǂ́j BSD ‚ÌŽd—l‚ð
‚È‚­‚·‚É‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚Å‚·‚©H

A:

‰ñ“š: ƒvƒƒOƒ‰ƒ€‚ð -I/usr/include/bsd ‚ð‚‚¯‚ăRƒ“ƒpƒCƒ‹‚µA-lbsd ‚ð‚Â
‚¯‚ăŠƒ“
      ƒN‚µ‚Ü‚·B‚µ‚½‚ª‚Á‚āAmakefile ‚Ì CFLAGS s‚É -I/usr/include/bsd 
‚ðA
      LDFLAGS s‚É -lbsd ‚ð’ljÁ‚µ‚Ü‚·B‚à‚µA‚ ‚È‚½‚ª BSD Œ`Ž®‚̃VƒOƒi
ƒ‹‚Ì“®‚«
      ‚ª•K—v‚È‚ç‚΁A-D__USE_BSD_SIGNAL ‚ð’ljÁ‚·‚é•K—v‚́w‚ ‚è‚Ü‚¹‚ñxB
‚»‚ê‚́A
      -I/usr/include/bsd ‚ðŽg‚Á‚½‚Æ‚«‚ɁAŽ©“®“I‚ɒljÁ‚³‚ê‚Ü‚·B
 

Q: 10) SIGBUS, SIGEMT, SIGIOT, SIGTRAP, SIGSYS ‚È‚Ç‚Í‚Ç‚±‚É‚ ‚è‚Ü‚·‚©H

A:

‰ñ“š: Linux ‚Í 100% POSIX ƒRƒ“ƒpƒ`‚Å‚ ‚èA‚±‚ê‚ç‚Í POSIX ‚̃VƒOƒiƒ‹‚Å‚Í
‚ ‚è‚Ü
      ‚¹‚ñBŠÈ’P‚È•û–@‚Æ‚µ‚ẮA‚»‚ê‚ç‚̃VƒOƒiƒ‹‚ð SIGUNUSED ‚ōĒè‹`‚·
‚邱‚Æ‚Å
      ‚·B /usr/include/bsd/signal.h ‚Ì’è‹`‚ðŒ©‚Ä‚­‚¾‚³‚¢B

      ‚µ‚©‚µ‚È‚ª‚çA‚»‚ê‚ç‚̃VƒOƒiƒ‹‚ª‚È‚¢‚±‚Æ‚ªAPOSIX ‚Ɂw]‚¤x‚±‚Æ
‚ðŠo‚¦‚Ä
      ‚¨‚­‚ׂ«‚Å‚·B‚±‚ê‚ç‚ð SIGUNUSED ‚Å #define ‚·‚é‘ã‚í‚è‚ɁAV‚µ‚¢
ƒvƒƒOƒ‰
      ƒ€‚͈ȉº‚̂悤‚É‚·‚ׂ«‚Å‚·B

      #ifdef SIGSYS
      ....[non-posix sigsys code here]....
      #endif

      SIGSYSiSIGBUS ‚à“¯—l‚Ɂj‚ÌŽg—p‚ª•K—v‚ȃR[ƒh‚Æ‚È‚è‚Ü‚·B

      ISO/IEC 9945-1:1990 (IEEE Std 1003.1-1990) ‚Ì B.3.3.1.1 ‚©‚ç‚Ì”²
ˆ‚Å‚·B

    uSIGBUS, SIGEMT, SIGIOT, SIGTRAP ‚Æ SIGSYS ‚́APOSIX.1 ‚©‚çŠO‚³‚ê
‚Ü‚µ‚½B
    ‚È‚º‚È‚çA‚»‚ê‚ç‚Ì“®‚«‚ÍŽè’i‚É—Š‚Á‚Ä‚¢‚Ü‚·‚µA\•ª‚É•ª—Þ‚·‚邱‚Æ‚ª
‚Å‚«‚Ü‚¹
    ‚ñ‚Å‚µ‚½BŽè’i‚ðˆê’v‚³‚¹‚邱‚Æ‚É‚æ‚肱‚ê‚ç‚̃VƒOƒiƒ‹‚Í’ñ‹Ÿ‚³‚ꂽ‚©
‚à‚µ‚ê‚Ü
    ‚¹‚ñ‚ªA‚»‚ê‚ç‚ð’ñ‹Ÿ‚·‚é‚Æ‚«‚ÍŽ–‚ÌŽŸ‘æ‚ðØ–¾‚µA’ñ‹Ÿ‚ÉŠÖ‚µ‚Ă̐§ŒÀ
‚ð‹Lq‚µ
    ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
 

Q: 11) libhard ‚Æ libsoft ‚Ƃ͉½‚Å‚·‚©H

A:

‰ñ“š: ‚»‚ê‚ç‚́A”’lƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“ƒ‹[ƒ`ƒ“‚̃‰ƒCƒuƒ‰ƒŠ‚Å‚·B‚à‚µi—á
‚¦‚Î 387 
      ‚̂悤‚ȁj”’l‰‰ŽZ‚ðs‚¤ƒn[ƒhƒEƒFƒA‚ðŽ‚Á‚Ä‚¢‚é‚È‚ç hard ‚ðA‚»
‚̂悤‚È
      ƒn[ƒh‚ª‚È‚¢‚Ȃ琔’l‰‰ŽZ‚̃Gƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“‚ðs‚¤ soft ‚ð‘I‘ð‚µ‚Ü
‚·B

    ‚à‚µAŒ»Ý”z•z‚µ‚Ä‚¢‚é Linux ‚ðŽg—p‚µ‚Ä‚¢‚é‚È‚ç‚΁A‚±‚ê‚ç‚̃‰ƒCƒuƒ‰
ƒŠ‚Í•K—v
    w‚ ‚è‚Ü‚¹‚ñxB”’l‰‰ŽZƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“‚̓J[ƒlƒ‹ƒŒƒxƒ‹‚ŃTƒ|[ƒg
‚µ‚Ä‚¢‚Ü
    ‚·Bi‚·‚È‚í‚¿A‚à‚µAŽg‚¢‚½‚¢‚È‚çA`make config' ‚É‚æ‚èƒJ[ƒlƒ‹‚ª
ì‚ç‚ꂽ
    Žž‚©‚çŽg‚¦‚Ü‚·Bj
    ‚¢‚¢‚©‚¦‚é‚Æ 387 ‚ÍŽdŽ–‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚à‚µA/libm.so.4.x.y 
‚©‚ç 
    /lib/libm.so.4 ‚ðƒŠƒ“ƒN‚µ‚Ä‚¢‚é‚È‚çAˆÀ‘S‚ɏÁ‚·‚±‚Æ‚ª‚Å‚«‚é‚©‚à‚µ‚ê
‚Ü‚¹‚ñB
 

Q: 12) ƒƒbƒZ[ƒW "can't load library: /lib/libxxx.so, Incompatible
version" ‚̈Ӗ¡‚͉½‚Å‚·‚©H

A:

‰ñ“š: ‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ª”­“W‚µ‚Ä‚¢‚­‚ƁAƒvƒƒOƒ‰ƒ€ŽÀsŽž‚ɃNƒ‰ƒbƒVƒ…‚ðˆø
‚«‹N‚±‚·
    ‚悤‚É‚È‚Á‚½‚èA§ŒÀ‚ª‚Å‚«‚½‚肵‚Ü‚·B‚»‚ê‚ð‚Í‚Á‚«‚肳‚¹‚邽‚߂ɁA
ƒo[ƒWƒ‡
    ƒ“‚É‚æ‚Á‚Ä•ª—Þ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B—Ⴆ‚΁Aƒtƒ@ƒ“ƒNƒVƒ‡ƒ“ƒR[ƒ‹‚ª‚Ü
‚é‚Á‚«‚è
    •Ï‚í‚éA‚Ü‚½‚Í–³‚­‚È‚Á‚Ä‚µ‚Ü‚Á‚½ê‡‚È‚Ç‚ª‚»‚¤‚Å‚·B

       ƒ‰ƒCƒuƒ‰ƒŠ‚̌Ăі¼ - libc.so.4.3.3
                               T    T T T
                              /    /  |  \
                             /    /   |   \
                            /    /    |    \
                 ƒ‰ƒCƒuƒ‰ƒŠ–¼   /     |     \
                               /      |      \
          ƒƒWƒƒ[ƒo[ƒWƒ‡ƒ“ƒiƒ“ƒo[  |      ƒpƒbƒ`ƒŒƒxƒ‹
                                      |
                            ƒ}ƒCƒi[ƒo[ƒWƒ‡ƒ“ƒiƒ“ƒo[

    ƒƒWƒƒ[ƒo[ƒWƒ‡ƒ“ƒiƒ“ƒo[‚̈Ⴂ‚́AƒvƒƒOƒ‰ƒ€‚ðƒŠƒ“ƒN‚µ‚½ƒ‰ƒCƒuƒ‰
ƒŠ‚Æ“®ì
    ‚·‚é  ƒJƒŒƒ“ƒgƒ‰ƒCƒuƒ‰ƒŠ‚̃ƒWƒƒ[ƒo[ƒWƒ‡ƒ“‚Æ‚ª“™‚µ‚¢ê‡‚ɂ̂݃v
ƒƒOƒ‰ƒ€
    ‚ÌŽÀs‚ª•ÛØ‚³‚ê‚邱‚Æ‚Å‚·B
    ‚±‚ê‚́Alibc.so.4.3.3 ‚ŃRƒ“ƒpƒCƒ‹‚³‚ꂽƒvƒƒOƒ‰ƒ€‚́A
libc.so.5.1.2 ‚Æ
    ‚¢‚Á‚½‚æ‚èÅV‚Ì DLL ƒ‰ƒCƒuƒ‰ƒŠã‚Å‚ÍŽÀs•s‰Â”\‚Å‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚ðˆÓ
–¡‚µ‚Ä
    ‚¢‚Ü‚·B
    ‚‚܂èƒvƒƒOƒ‰ƒ€‚Å libc.so.4 ‚ð•K—v‚Æ‚µ‚Ä‚¢‚āAlibc.so.5.1.2 ‚©‚ç 
    libc.so.4 ‚ւ̃Šƒ“ƒN‚𒣂Á‚Ä‚à“®‚©‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B

    ƒ}ƒCƒi[ƒo[ƒWƒ‡ƒ“ƒiƒ“ƒo[‚Ì’è‹`‚Æ‚µ‚ẮA‹¤—L DLL ƒ‰ƒCƒuƒ‰ƒŠ‚Ń}ƒC
ƒi[ƒ`ƒF
    ƒ“ƒW‚âV’ljÁŠÖ”‚ª‚ ‚Á‚½‚ªA‰ß‹Ž‚̌݊·«‚ª•Û‚½‚ê‚Ä‚¢‚邱‚Æ‚ðŽ¦‚µ‚Ä
‚¢‚Ü‚·B
    ƒ}ƒCƒi[ƒo[ƒWƒ‡ƒ“ƒiƒ“ƒo[‚ªƒIƒŠƒWƒiƒ‹‚̃Rƒ“ƒpƒCƒ‹Žž‚æ‚è‚æ‚菬‚³‚¢
ƒ‰ƒCƒuƒ‰
    ƒŠ‚ðŽg—p‚µ‚悤‚Æ‚·‚é‚ƁAƒiƒ“ƒo[•ÏX‚É‚æ‚郏[ƒjƒ“ƒO‚ª”­¶‚·‚é‚Å‚µ
‚傤‚ªA
    ˆê”Ê‚ÌŽÀs‚Å‚Í‘S‚­–³Ž‹‚µ‚č\‚¢‚Ü‚¹‚ñB

    ƒpƒbƒ`ƒŒƒxƒ‹ƒiƒ“ƒo[‚̓iƒ“ƒoƒŠƒ“ƒO‚̐\‚µ‡‚킹‚©‚ç‚È‚Ì‚Å–³Ž‹‚µ‚Ä‚©
‚Ü‚¢‚Ü‚¹
    ‚ñB‚»‚ê‚Í‚¢‚‚à‚̓‰ƒCƒuƒ‰ƒŠƒR[ƒh‚ÌŒëA‚⏬‚³‚ȃoƒOƒtƒBƒbƒNƒX‚ÅŽg
—p‚³‚ê‚Ü
    ‚·B

    –â‘è‚É–ß‚é‚ƁA‚ ‚È‚½‚ªƒoƒCƒiƒŠ‚ÌŽÀs‚ðŽŽ‚·‚Æ‚«‚ɁA³‚µ‚¢ƒ‰ƒCƒuƒ‰ƒŠ
‚ªƒCƒ“ƒX
    ƒg[ƒ‹‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·Bó‹µ‚ð‰ü‘P‚·‚é‚ɂ́AŽ¿–â‚Ì (3),
(19) ‚ð
    Œ©‚āAÅV‚̃‰ƒCƒuƒ‰ƒŠ‚ðŽè‚É“ü‚ê‚邱‚Æ‚Å‚·B
 

Q: 13) ‚킽‚µ‚̃‰ƒCƒuƒ‰ƒŠ‚ª‚Æ‚Ä‚à‘å‚«‚¢‚Ì‚Í‚È‚º‚Å‚·‚©H‚Ü‚½A‚Ç‚¤‚·‚ê‚Î
¬‚³‚­‚È‚è‚Ü‚·‚©H

A:

‰ñ“š: ‚æ‚菬‚³‚¢ƒ‰ƒCƒuƒ‰ƒŠ‚ª—~‚µ‚¢‚È‚çA‚·‚ׂ«‚±‚Æ‚Í‚½‚­‚³‚ñ‚ ‚è‚Ü‚·B

    * ƒR[ƒh‚̍œK‰» - ƒRƒ“ƒpƒCƒ‹Žž‚É -O2 ƒtƒ‰ƒO‚ðŽg‚¢‚Ü‚·B
    * ‡¬ƒoƒCƒiƒŠ‚̃XƒgƒŠƒbƒv‰» - ld ‚Ì•”•ª‚Å -s ƒtƒ‰ƒO‚ðŽg‚¢‚Ü‚·B
    * ‡¬ƒoƒCƒiƒŠ‚̍쐬 - ld ‚Ì•”•ª‚Å -N ƒtƒ‰ƒO‚ðŽg‚¢‚Ü‚·B

    ‚±‚ê‚ç‚ð‘g‚ݍ‡‚킹‚ÄŽg‚¢‚Ü‚·B‚à‚µAƒoƒCƒiƒŠ‚ðƒXƒgƒŠƒbƒv‰»‚µ‚½‚¢‚È
‚çAŽèŒy
    ‚É ld ‚Ì "-s" ƒIƒvƒVƒ‡ƒ“‚ðŽg‚Á‚½ƒ\[ƒX‚É‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B"strip" 
ƒRƒ}ƒ“ƒh
    ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B"man strip" ‚ðŽÀs‚µ‚ďڂµ‚¢î•ñ‚ðŒ©‚Ä‚­‚¾‚³‚¢B

    `ld' ƒŠƒ“ƒJ‚̓fƒtƒHƒ‹ƒg‚ŃvƒƒOƒ‰ƒ€‚ð‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ɃŠƒ“ƒN‚µ‚Ü‚·B
‚µ‚©‚µ
    ‚È‚ª‚çAŠÖ˜A‚Ì‚ ‚éˆê•”‚ðŒ©‚Â‚¯‚邱‚Æ‚ª‚Å‚«‚È‚¢i‚·‚È‚í‚¿ .sa ƒtƒ@ƒC
ƒ‹jA
    w‚Ü‚½‚́xƒ†[ƒU‚É‚Æ‚Á‚Ä•s‰ÂŽ‹ƒtƒ@ƒCƒ‹‚Å‚ ‚Á‚½ê‡‚́i‚·‚È‚í‚¿ .a 
ƒtƒ@ƒCƒ‹
    ‚Æ‚µ‚ājÃ“IƒŠƒ“ƒN‚ðŽŽ‚Ý‚æ‚¤‚Æ‚µ‚Ü‚·B‚ ‚È‚½‚̃oƒCƒiƒŠ‚ª‘å•Ï‘å‚«‚¢
——R‚Í‚±
    ‚ê‚©‚à‚µ‚ê‚Ü‚¹‚ñBƒT[ƒ`ƒpƒX‚Í /usr/lib ‚â /lib ‚â / ‚̃‰ƒCƒuƒ‰ƒŠ‚©
‚ç .sa 
    ‚â .a ‚ð’T‚µ‚Ü‚·B‚±‚Ì‚±‚Ƃ́Astub ‚Æ DLL ‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ð‚±‚ê‚ç‚Ì
ƒfƒBƒŒƒN
    ƒgƒŠ’†‚É“_Ý‚³‚¹‚邱‚Æ‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB‚æ‚è_“î“I‚ɍs‚¤‚É‚Í 
(20) ‚ðŒ©
    ‚Ä‚­‚¾‚³‚¢B

    ‚½‚­‚³‚ñ‚Ì FSF ‚̍ìŽÒ‚½‚¿‚à‚Ü‚½AŽ©•ª‚̃vƒƒOƒ‰ƒ€‚ªƒfƒoƒbƒO‚³‚êA
Makefile 
    ‚©‚ç -g ƒIƒvƒVƒ‡ƒ“‚ªŽæ‚è‹Ž‚ç‚ê‚邱‚Æ‚ð‰äX‚ª–]‚ñ‚Å‚¢‚é‚Ì‚ð’m‚Á‚Ä‚¢
‚Ü‚·B
    Œ‹‰Ê‚Æ‚µ‚āAƒXƒ^ƒeƒBƒbƒN‚ɃŠƒ“ƒN‚³‚ꂽƒvƒƒOƒ‰ƒ€‚Ì‚È‚©‚É‚Í”œ‘å‚ȃf
ƒoƒbƒOƒV
    ƒ“ƒ{ƒ‹‚ªŽc‚Á‚Ä‚¢‚Ü‚·B‚à‚µ‚ ‚È‚½‚ªƒ\ƒtƒg‚ðƒRƒ“ƒpƒCƒ‹‚µA‚»‚Ì“®‚«‚É
–ž‘«‚µ‚Ä
    ‚¢‚é‚È‚ç‚΁A-g ‚ð CFLAGS ‚©‚^‚Ü‚½‚Í LDFLAGS ‚©‚çíœ‚·‚邽‚߂ɁA
’ˆÓ[‚­
    Makefile ‚ðƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 14) -N ƒtƒ‰ƒO‚ðŽg‚¤‚Ɖ½‚ª‹N‚±‚è‚Ü‚·‚©H‚Ü‚½A‚Ç‚¤Žg‚¦‚΂¢‚¢‚Ì‚Å‚·‚©
H

A:

‰ñ“š: ‰¼‘z‹L‰¯‚É‚æ‚éƒXƒƒbƒv‚ª‰Â”\‚É‚È‚è‚Ü‚·B-N ƒIƒvƒVƒ‡ƒ“‚ðŽg‚¤‚ƁAƒy
[ƒW‹«ŠE
      ‚¢‚Á‚Ï‚¢‚É‹l‚ߍž‚܂ꂽŒÂX‚̃ZƒOƒƒ“ƒg—̈æ‚ðŽ‚¿A‚»‚ê‚炪˜A‘±‚µ
‚È‚¢ŽÀs
      ƒtƒ@ƒCƒ‹‚ªŽg—p‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·BLinux ‚́AŠÈ’P‚Ɂw–Y‚ê‚邱‚Æ
x‚É‚æ‚Á
      ‚ÄŠ„‚è“–‚Ä‚ç‚ê‚éi‚·‚Á‚«‚肵‚½jƒy[ƒWƒXƒƒbƒv‚ðŠˆ—p‚Å‚«‚Ü‚·B‚È
‚º‚È‚çA
      ‚¢‚‚àƒtƒ@ƒCƒ‹‚©‚ç’¼Ú‚ɍ㍁[ƒh‚Å‚«‚é‚©‚ç‚Å‚·B
      ‘¼•ûAƒXƒƒbƒvƒp[ƒeƒBƒVƒ‡ƒ“‚âƒXƒƒbƒvƒtƒ@ƒCƒ‹‚É‚æ‚镨—“I‚ȃXƒ
ƒbƒv‹@”\
      ‚àŽ‚Á‚Ä‚¢‚Ü‚·B‚»‚ê‚ɂ́A‘½­‚ÌŽžŠÔ‚ƃfƒBƒXƒNƒXƒy[ƒX‚ª•K—v‚Å‚·
B

      ƒXƒƒbƒv‚́A’ʏí‚͏¬‚³‚ȃvƒƒOƒ‰ƒ€‚É‚ÍŠÖŒW‚ ‚è‚Ü‚¹‚ñB-N ‚ðŽg‚Á‚Ä
ƒRƒ“ƒpƒC
      ƒ‹‚³‚ê‚Ä‚¢‚½‚Æ‚µ‚Ä‚à‚Å‚·B‘å‚«‚ȃvƒƒOƒ‰ƒ€i—Ⴆ‚΁Agcc ‚Ü‚½‚Í
 emacsjA
      ‚Ü‚½‚Í•¡”‚Ì’iŠK‚ðŽ‚Á‚Ä‚¢‚é‚悤‚ȃvƒƒOƒ‰ƒ€ishell ‚â xterm ‚Ì‚æ
‚¤‚È
      ‚à‚́j‚́A-N ‚È‚µ‚ŃRƒ“ƒpƒCƒ‹‚·‚ׂ«‚Å‚·B‚»‚ÌŒ‹‰ÊAƒR[ƒhƒy[ƒW‚Í
‚«‚ê‚¢‚É
      Š„‚è“–‚Ä‚ç‚ê‚Ü‚·B‚à‚µAƒƒ‚ƒŠ•s‘«‚ŁiƒvƒƒOƒ‰ƒ€‚ðj‘–‚点‚½‚È‚ç
‚΁A
      ƒJ[ƒlƒ‹‚͉¼‘z‹L‰¯‚Å“®‚¢‚Ä‚¢‚éŽg‚í‚ê‚Ä‚¢‚È‚¢ƒR[ƒhƒy[ƒWi‚ ‚Æ‚Å
Äƒ[ƒh
      ‚Å‚«‚éj‚ðíœ‚µ‚Í‚¶‚ß‚Ü‚·B˜A‘±‚µ‚È‚¢ŽÀsŒ`Ž®‚Å‚Í•s‰Â”\‚Å‚·B

      ‚µ‚½‚ª‚Á‚āA‚à‚µ‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ªd—v‚È‚½‚­‚³‚ñ‚̃ƒ‚ƒŠ‚ðŽg—p
‚·‚é‚悤
      ‚È‚ç‚΁A-N ‚ðŽg—p‚µ‚È‚¢‚©AƒJ[ƒlƒ‹‚̃ƒ‚ƒŠŠÇ—‚ð–W‚°‚邵‚©‚È‚¢‚Å
‚µ‚傤B

      ƒnƒbƒLƒŠ‚Æ‚µ‚½ `one-off' ƒvƒƒOƒ‰ƒ€‚́A‚±‚̃tƒ‰ƒO‚ðŽg—p‚µ‚ăRƒ“ƒp
ƒCƒ‹‚³‚ê
      ‚Ä‚¢‚Ü‚·B‚·‚È‚í‚¿A’·ŽžŠÔƒƒ‚ƒŠã‚É‚Æ‚Ç‚Ü‚ç‚È‚¢‚à‚Ì‚Å‚·B—Ⴆ‚Î
A
      hostname, fsck, mkfs, w ‚È‚Ç‚Å‚·Bdaemon ‚ł́A‚±‚Ì -N ƒtƒ‰ƒO‚ðŒˆ
‚µ‚Ä
      Žg—p‚µw‚È‚¢x‚ʼnº‚³‚¢Bƒƒ‚ƒŠã‚ɏ풓‚·‚邱‚Ƃ͈Ӗ¡‚ª‚È‚¢‚©‚ç‚Å
‚·B
 

Q: 15) ƒvƒƒOƒ‰ƒ€‚̃fƒoƒbƒLƒ“ƒOî•ñ‚Í‚Ç‚¤‚·‚ê‚ÎŽæ‚ê‚é‚Ì‚Å‚·‚©H

A:

‰ñ“š: ƒvƒƒOƒ‰ƒ€‚ðƒRƒ“ƒpƒCƒ‹‚·‚邱‚Æ‚ª•K—v‚Å‚·Bi‚·‚È‚í‚¿A‚·‚ׂẴI
ƒuƒWƒFƒN
    ƒgj‚»‚µ‚āA-g ƒtƒ‰ƒO‚ð•t‚¯‚ăŠƒ“ƒN‚µ‚Ü‚·BŒ¾‚¢Š·‚¦‚é‚Ɓw‚·‚ׂẴv
ƒƒOƒ‰ƒ€
    x‚É -g ‚ð•t‚¯‚ăRƒ“ƒpƒCƒ‹‚µ‚Ü‚·B
    ƒfƒoƒbƒLƒ“ƒOƒc[ƒ‹‚Å‚Ü‚¾‚¢‚­‚‚©‚̃tƒ@ƒCƒ‹‚ª -g ‚Å“®‚¢‚Ä‚¢‚Ü‚·Bi
ƒfƒoƒbƒL
    ƒ“ƒOƒc[ƒ‹‚̓oƒO‚¾‚炯‚Å‚·j-g ƒtƒ‰ƒO‚ðŽg‚¤‚æ‚èd—v‚È‚±‚Ƃ́A
    -fomit-frame-pointer ‚ðŽg—p‚µw‚È‚¢x‚±‚Æ‚Å‚ ‚èA‚±‚ê‚É‚æ‚èAgdb ‚ª
‚²‚Ü‚©‚³
    ‚ê‚Ü‚·B
    •sK‚É‚µ‚āA‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚͐«”\‚Ì‚½‚ß‚É•’ʁA
 -fomit-frame-pointer ‚ð•t‚¯
    ‚ăRƒ“ƒpƒCƒ‹‚³‚ê‚Ä‚¢‚Ü‚·B

    ‚»‚Ì‘ã‚í‚è‚ɁAƒfƒoƒbƒLƒ“ƒOŽž‚É -g ‚Ü‚½‚́A -static ƒtƒ‰ƒO‚ðƒŠƒ“ƒJ‚É
•t‚¯‚½
    ‚èA”ñ‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ɃŠƒ“ƒN‚·‚邱‚Æ‚ÍŒœ–½‚È‚±‚Æ‚Å‚·B‚à‚µA‚»‚¤‚µ
‚È‚©‚Á‚½
    ‚çAƒZƒOƒƒ“ƒgˆá”½‚ª”­¶‚µ‚½‚Æ‚«‚Ɂiƒƒ‚ƒŠƒAƒNƒZƒX‚́jŒo‰ß‚ð‚½‚Ç‚é
‚±‚Æ‚ª‚Å
    ‚«‚Ü‚¹‚ñB

    ƒŠƒ“ƒNŽž‚É
        Can't find libg.a
    ‚̃ƒbƒZ[ƒW‚ªo—Í‚³‚ꂽ‚È‚ç‚΁A
    tsx-11.mit.edu : /pub/linux/packages/GCC/extra*.tar.z 
    ƒtƒ@ƒCƒ‹‚ðŽè‚É“ü‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·B

    ‚µ‚©‚µ‚È‚ª‚çA‚ ‚È‚½‚̃}ƒVƒ“‚Å’Pƒ‚É
        % cd /usr/lib; ln -s libc.a libg.a
    ‚ðŽÀs‚·‚ê‚Ώ\•ª‚ȃfƒoƒbƒLƒ“ƒOî•ñ‚ª“¾‚ç‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
    ƒtƒ‹‹@”\‚Ì libg.a (~2Mb) ‚ðŽg—p‚µ‚È‚¯‚ê‚΁AƒfƒoƒbƒO‚Å‚«‚È‚¢ƒ‰ƒCƒuƒ‰
ƒŠƒR[
    ƒ‹‚à‚ ‚é‚Å‚µ‚傤B

    ‚à‚µA«”\‚̃fƒoƒbƒO‚ð‚µ‚½‚¢‚Ì‚È‚ç‚΁AƒoƒCƒiƒŠ‚ðƒXƒgƒŠƒbƒv‰»‚µ‚Ä‚¢
w‚È‚¢x
    ‚±‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 16) ‚ǂ̃fƒoƒbƒK‚ª Linux ‚ÅŽg‚¦‚Ü‚·‚©H

A:

‰ñ“š: ‚¦`‚à‚¿‚ë‚ñAˆê”Ô‚¢‚¢ƒfƒoƒbƒK‚Í `gdb' ‚Å‚·B‚¨‹C‚É“ü‚è‚̃TƒCƒg‚Å
’T‚µ‚Ä‚­
    ‚¾‚³‚¢B—Ⴆ‚΁A
        prep.ai.mit.edu:/pub/gnu/gdb-4.11.tar.gz
     ‚É‚ ‚è‚Ü‚·B

    Linux —p‚Ì‚Í
        sunsite.unc.edu:/pub/Linux/devel/gdb-4.11-bin.tar.gz
    ‚É‚ ‚è‚Ü‚·B

    X ƒfƒoƒbƒK‚Í gdb ‚ðŒ³‚Æ‚µ‚Ä‚¢‚é‚̂Łi‚·‚È‚í‚¿AÅ‰‚É gdb ‚ðƒCƒ“ƒX
ƒg[ƒ‹‚·
    ‚é•K—v‚ª‚ ‚è‚Ü‚·‚ªjŽg—p‚Å‚«‚Ü‚·Bƒ\[ƒX‚Í
                ftp.x.org:/contrib/xxgdb-1.06.tar.Z
    ‚É‚ ‚è‚Ü‚·B

    ‚Ü‚½AUPS ƒfƒoƒbƒK‚Í Rick Sladkey Ž‚É‚æ‚èì‚ç‚ê‚Ü‚µ‚½B‚»‚ê‚Í
 xxgdb ‚Æ“¯
    —l‚É X ”z‰º‚Å“®ì‚µ‚Ü‚·‚ªAŽ—‚Ä‚¢‚Ü‚¹‚ñB’P‚È‚é X ‚̃eƒLƒXƒgƒx[ƒX
‚̃fƒoƒb
    ƒK‚Å‚Í‚ ‚è‚Ü‚¹‚ñB—Ç‚¢“Á’¥‚ð‚½‚­‚³‚ñŽ‚Á‚Ä‚¨‚èA‚à‚µAƒfƒoƒbƒOÞ—¿
‚ÉŽžŠÔ‚ð
    ”ï‚â‚·‚È‚ç‚΁AÞ—¿‚ðƒ`ƒFƒbƒNƒAƒEƒg‚·‚ׂ«‚Å‚µ‚傤BUPS ‚Ì Linux —p‚Ì
ƒpƒbƒ`‚Í
            sunsite.unc.edu:/pub/Linux/devel/
ups-2.45.2-linux-0.1.diff.gz
    ‚ÅŒ©‚‚¯‚ç‚ê‚Ü‚·B‚Ü‚½A‹ß‚­‚Ì X ƒA[ƒJƒCƒu‚Ü‚½‚Í
                ftp.x.org:/contrib/ups-2.45.2.tar.Z
    ‚©‚çAƒtƒ‹ƒ\[ƒX‚ðŽè‚É“ü‚ê‚é•K—v‚ª‚ ‚é‚Å‚µ‚傤B
 

Q: 17) daemon ƒvƒƒOƒ‰ƒ€‚ðƒfƒoƒbƒO‚·‚é•û–@‚́H

A:

‰ñ“š: ŠÈ’P‚ɏ‘‚­‚ƁAƒfƒoƒbƒN‚·‚é‘O‚É fork ‚µ‚Ä‚¢‚È‚¢Adaemon ƒvƒƒOƒ‰ƒ€
‚ðŽè‚É
    “ü‚ê‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB

    ‚µ‚©‚µ‚È‚ª‚çA`gdb' ƒfƒoƒbƒK‚ðŽg—p‚·‚é‚Æ‚¢‚¤‚±‚Ƃ́AforkwŒãx‚Ì
 daemon ‚É
     attach ‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·Bgdb ‚ɃfƒoƒbƒO‚µ‚½‚¢ƒvƒƒZƒX‚Ì id ‚ð
“`‚¦‚邱
     ‚ƂŃfƒoƒbƒO‚Å‚«‚Ü‚·B
    ‚±‚ê‚ɂ́A`attach' ƒRƒ}ƒ“ƒh‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢BGDB ‚ÌŠ®‘S‚ȃIƒ“ƒ‰ƒCƒ“
ƒwƒ‹ƒv‚Í
    ‚±‚±‚Å‚Í–ð‚É—§‚¿‚Ü‚·B

    ‚Ü‚½Aƒ\[ƒX‚ð“üŽè‚µ‚Ä‚È‚­‚Ä‚àAƒoƒCƒiƒŠ‚ªƒXƒgƒŠƒbƒv‚³‚ê‚Ä‚¢‚é‚È‚ç
‚΁A
    `strace' ƒvƒƒOƒ‰ƒ€‚ðŽè‚É“ü‚êAdaemon ‚̃vƒƒZƒX id ‚ÉŠ„“–‚āAo—Í
‚ðŒŸ¸‚·
    ‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
    ‚à‚µA’T‚µ‚©‚½‚ð’m‚Á‚Ä‚¢‚½‚È‚ç‚΁A—LŒø‚È•û–@‚Å‚·B
 

Q: 18) profiling ‚Ƃ͉½‚Å‚·‚©H‚Ü‚½AƒvƒƒOƒ‰ƒ€‚ð profile ‚·‚é‚É‚Í‚Ç‚Ì
‚悤‚É‚·‚ê‚΂悢‚Ì‚Å‚µ‚傤‚©H

A:

‰ñ“š: profiling ‚Ƃ́A‚Ç‚±‚Å‚Ç‚Ì“®ì‚ÅŽžŠÔ‚ª”ï‚₳‚ꂽ‚©A‚½‚­‚³‚ñ‚́i
ƒVƒXƒeƒ€
    ƒR[ƒ‹‚ªˆê’è‚̊֐”‚É‚æ‚Á‚čì‚ç‚ꂽ‚©A‚Ü‚½A‘SŽÀsŽžŠÔ‚𒲂ׂé•û–@
‚Å‚·B
    ƒR[ƒh‚̍œK‰»‚â‚Ç‚±‚Å•s•K—v‚ÉŽžŠÔ‚ª˜Q”‚Ä‚¢‚é‚©‚ðŒ©‚é‚É‚Í—Ç‚¢•û
–@‚Å‚·B
    ‘S‚ẴIƒuƒWƒFƒNƒg‚ƃŠƒ“ƒN‚ð profiling ‚·‚é‚ɂ́A-p ƒtƒ‰ƒO‚ŃRƒ“ƒp
ƒCƒ‹‚µ‚È
    ‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñBŽ¿–â (15) ‚Ì profiling ‚É•K—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚Ì“üŽèê
Š‚ðŒ©‚Ä
    ‚­‚¾‚³‚¢B

    ŽÀÛ‚É graph profile ‚ðŽè‚É“ü‚ê‚é‚ɂ́A`grof' ‚Æ‚¢‚¤ƒvƒƒOƒ‰ƒ€‚ª•K
—v‚Å‚·B
    ‚»‚ê‚́AƒoƒCƒiƒŠƒ†[ƒeƒBƒŠƒeƒBƒpƒbƒP[ƒW‚É“ü‚Á‚Ä‚¢‚Ü‚·B
    ‚­‚è‚©‚¦‚µ‚Ü‚·‚ƁA‚ ‚È‚½‚̍s‚«‚‚¯‚Ì Linux ƒA[ƒJƒCƒuƒTƒCƒg‚ÅŒ©‚‚¯
‚Ä‚­‚¾‚³
    ‚¢B—Ⴆ‚΁A

        tsx-11.mit.edu:/pub/linux/packages/GCC/binutils.tar.z
 

Q: 19) ‚à‚µAƒoƒCƒiƒŠ‚ªÃ“I‚É‚Ü‚½‚Í‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ɃŠƒ“ƒN‚³‚ê‚Ä‚¢‚½ê‡
‚ɁA‚»‚ê‚𒲂ׂé•û–@‚Í‚ ‚è‚Ü‚·‚©H

A:

‰ñ“š: ‚Í‚¢‚ ‚è‚Ü‚·B
    `ldd' ‚Æ‚¢‚¤ƒ†[ƒeƒBƒŠƒeƒB‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B‚±‚̃†[ƒeƒBƒŠƒeƒB‚Í
A—v‹‚³
    ‚ê‚郉ƒCƒuƒ‰ƒŠ‚̏î•ñ‚ðo—Í‚µ‚Ü‚·B‚à‚µA`ldd' ‚ðŽÀs‚µ‚½‚Æ‚«‚ɉ½‚Ì
î•ñ‚ào
    —Í‚³‚ê‚È‚©‚Á‚½ê‡‚́A’²‚ׂ½ƒvƒƒOƒ‰ƒ€‚͐ÓI‚ɃŠƒ“ƒN‚³‚ê‚Ä‚¢‚Ü‚·B

    —á (1): ƒRƒ}ƒ“ƒhiŽ„‚Ì linux ƒVƒXƒeƒ€j
        % ldd /bin/init
    o—Í‚ª‚È‚¢‚±‚Ƃ͐ÓI‚ɃŠƒ“ƒN‚³‚ꂽ‚Æ‚¢‚¤‚±‚Æ‚Å‚·BÃ“I‚ɃŠƒ“ƒN‚³‚ê
‚ê‚΂悢
    ‚Ì‚Å‚·B:-) iƒm[ƒg: libc.so.4.5.10 ˆÈã‚ŃŠƒ“ƒN‚³‚ꂽƒvƒƒOƒ‰ƒ€‚Å
‚Í
    "statically linked" ‚̃ƒbƒZ[ƒW‚ªo—Í‚³‚ê‚é‚Å‚µ‚傤Bj

    —á (2): ƒRƒ}ƒ“ƒhiŽ„‚Ì linux ƒVƒXƒeƒ€j
        % ldd /usr/bin/gs
    ‚·‚È‚í‚¿Aghostscript ƒCƒ“ƒ^ƒvƒŠƒ^‚͈ȉº‚̏î•ñ‚ðo—Í‚µ‚Ü‚·B
            libm.so.4       => /lib/libm.so.4.4 (4.0)
            libX11.so.3     => /lib/libX11.so.3.0 (DLL Jump 3.0pl0)
            libc.so.4       => /lib/libc.so.4.4 (DLL Jump 4.3)
    ‚±‚Ì‚±‚Ƃ́A`gs' ƒvƒƒOƒ‰ƒ€‚ª“®“I‚ɃŠƒ“ƒN‚³‚êA3 ‚‚̋¤—Lƒ‰ƒCƒuƒ‰ƒŠ
‚ð—v‹‚µ
    ‚Ä‚¢‚邱‚Æ‚ðŽ¦‚µ‚Ä‚¢‚Ü‚·BŠ‡ŒÊ“à‚̐”‚Í‚½‚¾ˆê‚‚̃‰ƒCƒuƒ‰ƒŠilibX11
j‚ðŽ¦‚µ
    ‚Ä‚¨‚èAƒvƒƒOƒ‰ƒ€‚ªƒRƒ“ƒpƒCƒ‹‚³‚ꂽ‚Æ‚«‚ÉŽ‚Á‚Ä‚¢‚½ƒ‰ƒCƒuƒ‰ƒŠ‚̃J
ƒŒƒ“ƒgƒo
    [ƒWƒ‡ƒ“‚Å‚·B`gs' ‚ªA”’l‰‰ŽZƒ‰ƒCƒuƒ‰ƒŠ (libm), ‚ŃRƒ“ƒpƒCƒ‹‚³‚ê
‚½‚Æ‚«
    ‚́Aƒo[ƒWƒ‡ƒ“ 4.0 ‚ŁADLL ƒ‰ƒCƒuƒ‰ƒŠ‚Å‚È‚©‚Á‚½‚Ì‚Å‚·‚ªAK‰^‚É‚à
 4.4 ‚Ì 
    DLL ƒ‰ƒCƒuƒ‰ƒŠ‚Å‚à‘–‚点‚邱‚Æ‚ª‚Å‚«‚»‚¤‚Å‚·B“¯—l‚ɁAŽ„‚̃JƒŒƒ“ƒg
‚Ì C ƒ‰ƒC
    ƒuƒ‰ƒŠ (libc)‚́A`gs' ‚ðƒRƒ“ƒpƒCƒ‹‚µ‚½‚Æ‚«‚æ‚èƒo[ƒWƒ‡ƒ“‚ªã‚ª‚Á‚Ä
‚¢‚Ü‚·B

    ¦ ‚ ‚È‚½‚Ì `ldd' ‚̓o[ƒWƒ‡ƒ“‚É‚æ‚Á‚ẮA‚È‚É‚©•Ê‚ÌŒ‹‰Ê‚ðo—Í‚ð‚·
‚é‚©‚à‚µ
       ‚ê‚Ü‚¹‚ñB
 

Q: 20) Linux ‚Í LD_LIBRARY_PATH ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·‚©H

A:

‰ñ“š: ‚Í‚¢‚Æ‚¢‚¢‚¦‚Å‚·BƒoƒCƒiƒŠ‚̃Rƒ“ƒpƒCƒ‹Žž‚ÉŽg—p‚µ‚½ libc ‚̃o[ƒW
ƒ‡ƒ“‚É
    ˆË‘¶‚µ‚Ü‚·B

    * ‘æˆê‚É LD_LIBRARY_PATH ‚́A4.3.3 ˆÈã‚̃‰ƒCƒuƒ‰ƒŠ‚ŃTƒ|[ƒg‚³‚ê‚Ä
‚¢‚Ü‚·B

    ‚·‚È‚í‚¿A‚ ‚È‚½‚Ì stub (/usr/lib/libc.sa) ‚Ì __load.o ƒ‹[ƒ`ƒ“‚́A
‚±‚ê‚ðŽÀ
    Œ»‚·‚邽‚߂ɕύX‚³‚ê‚Ä‚¢‚Ü‚·Blibc ‚̃o[ƒWƒ‡ƒ“ 4.4.4 –¢–ž‚ŃRƒ“ƒp
ƒCƒ‹‚³‚ê
    ‚½ƒoƒCƒiƒŠ‚ł́ALinux ‚Ì“®“IƒŠƒ“ƒJ‚́Alibc.sa ‚Ì stub ‚ÉŒ»‚êAì‚Á
‚½ƒoƒCƒi
    ƒŠ‚·‚ׂĂɃŠƒ“ƒN‚³‚ê‚é __load.o Œ`Ž®‚̐ÓIƒIƒuƒWƒFƒNƒg‚Å‚·B‚±‚Ì‚±
‚Ƃ́A
    __load.o ‚̕ύX‚ªA‚ЂƂ‚ЂƂA‚·‚ׂẴoƒCƒiƒŠ‚ÉŒ»‚êA•‹y‚·‚é‚Ì
‚É‘å•Ï
    ‚ÈŽžŠÔ‚ð—v‚·‚邱‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B

    ‚»‚µ‚āAŽ¿–â‚̉ñ“š‚Æ‚µ‚ẮA4.3.3 (libc.so.4.3.4 ˆÈã) ˆÈã‚̃‰ƒCƒu
ƒ‰ƒŠ‚ðŽg
    —p‚µ‚ăRƒ“ƒpƒCƒ‹‚µ‚½‚È‚ç‚΁AƒCƒGƒX‚Å‚·B‚µ‚©‚µAŒ‹‰Ê‚Æ‚µ‚ẮAw‚·
‚ׂẮx
    ƒoƒCƒiƒŠ‚ðƒŠƒRƒ“ƒpƒCƒ‹‚·‚ê‚΁A‹C‚ð‚‚¯‚é•K—v‚Í‚È‚¢‚Å‚µ‚傤B

    * libc ‚̃o[ƒWƒ‡ƒ“‚ª 4.4.4 ˆÈã‚ł́A“®“I‚ɍì‚ç‚ꂽ“®“Iƒ[ƒ_‚Í•K
—v‚ȃ‰ƒC
    ƒuƒ‰ƒŠ‚ðŒŸõAˆÊ’u‚¯Œã‚ÉŽ©•ªŽ©g‚ðƒ[ƒfƒBƒ“ƒOAƒAƒ“ƒ[ƒfƒBƒ“ƒO
‚µ‚Ü‚·B
    ‚±‚ÌŒ‹‰ÊAƒoƒCƒiƒŠ‚͏¬‚³‚­A“®“Iƒ[ƒ_AƒŠƒ“ƒJ‚É‚æ‚é•ÏX‚Í libc ‚©
‚çŠu—£‚³
    ‚ê‚Ü‚·Bld.so ƒpƒbƒP[ƒW‚É‚ ‚é ld.so ‚Æ ldconfig ‚̃}ƒjƒ…ƒAƒ‹‚ðŒ©‚Ä
‚­‚¾‚³
    ‚¢B‚Ü‚½CŽ¿–â (4) ‚Ì libld.so ‚̍€–Ú‚àŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

    Linux ‚Ì LD_LIBRARY_PATH ‚͈À‘S‚ÅŠÈŒ‰‚Å‚ ‚èASun-OS ‚ōs‚Á‚½•û–@‚â
s‚¢‚½
    ‚¢•û–@‚Å‚Ì“®‚«‚Í—\Šú‚Å‚«‚Ü‚¹‚ñB

    Å‰‚É Sun-OS ‚Ì LD_LIBRARY_PATH ‚ÌŽg—p•û–@‚Ƃ̈Ⴂ‚́AƒRƒ“ƒpƒCƒ‹i
ƒŠƒ“ƒNj
    ó‘Ô’†‚ÌŽ–‚Å‚ ‚èASun-OS ‚Ì LD_LIBRARY_PATH ‚́A‚¢‚ë‚¢‚ë‚ȃ‰ƒCƒuƒ‰
ƒŠ‚ðŒ©‚Â
    ‚¯‚邽‚߂ɉðŽß‚³‚êAì‚ç‚ꂽ×Ø‚ê‚̃oƒCƒiƒŠ‚Ɂw‹L˜^x‚³‚ê‚Ü‚·B‚ä
‚¦‚ɁAƒ‰
    ƒ“ƒ^ƒCƒ€ƒoƒCƒiƒŠ‚É‚¨‚¢‚ẮALD_LIBRARY_PATH ‚𒲂ׂé‘O‚Ɂi‚Ü‚ê‚É 
    LD_LIBRARY_PATH ‚ð‰ðŽß‚¹‚¸A‹L˜^‚³‚ꂽƒpƒX‚̍ŏ‰‚Ì‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ð
Œ©‚‚¯‚é
    ‚±‚ƂŁj‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚Ì‚Ç‚±‚ð’T‚·‚©‚ð’m‚Á‚Ä‚¢‚Ü‚·B‚µ‚½‚ª‚Á‚āAƒI
[ƒo[ƒw
    ƒbƒh‚ðŒ¸‚ç‚¹‚Ü‚·B
    ˆê•û Linux ‚́A‚±‚̏î•ñ‚ð‹L˜^‚µ‚Ä‚¢‚Ü‚¹‚ñ‚ªA‚»‚Ì‘ã‚í‚è‚Æ‚µ‚ăŠƒ“ƒN
‚É•K—v‚È
    ƒ‰ƒCƒuƒ‰ƒŠ‚̃‰ƒ“ƒ^ƒCƒ€iŽÀsƒtƒ@ƒCƒ‹j‚ð’T‚µ‚Ü‚·B

    Linux ‚ŃoƒCƒiƒŠ‚ðŽÀs‚·‚é‚Æ‚«A‚à‚µALD_LIBRARY_PATH  ‚ªw‚È‚¯‚êx
‚΁Aƒ‰ƒ“
    ƒ^ƒCƒ€‚Ƀ‰ƒCƒuƒ‰ƒŠ‚ðƒŠƒ“ƒN‚·‚邽‚߂ɍŏ‰ /usr/lib ŽŸ‚É /lib ‚»‚µ‚Ä 
/ ‚ð’T‚µ
    ‚Ü‚·B‚±‚ê‚́A"Šú‘ÒƒT[ƒ`ƒpƒX" ‚Æ‚µ‚ďƉ‚ê‚Ü‚·B

    ¦ / ‚́A–{“–‚̓T[ƒ`ƒpƒX‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªA‰ß‹Ž‚̌݊·«‚Ì‚½‚ß‚ÉŽc‚Á
‚Ä‚¨‚èA
      ƒ†[ƒU‚Ì‚È‚©‚É‚Í "/lib/libfoo.so" ‚Æ‚¢‚Á‚½–¼‘O‚ðŽg‚Á‚Ä‚¢‚é ‹¤—L
 DLL ‚ð
      ì‚é‚Æ uselib() ‚͈ȉº‚̂悤‚É“®ì‚µ‚Ü‚·B

        (1) uselib("/usr/lib//lib/libfoo.so.x")  ---- ‚Í‚¸‚ê
        (2) uselib("/lib//lib/libfoo.so.x")      ---- ‚Ü‚½‚Í‚¸‚ê
        (3) uselib("//lib/libfoo.so.x")          ---- “–‚½‚è !!

    ‚»‚Ì‚½‚߁AŽÀÛ‚É DLL ‚ð / ‚É’u‚©‚È‚¢‚Å‚­‚¾‚³‚¢B

    ‚³‚āA‚à‚µ LD_LIBRARY_PATH ‚ðwŽ‚Á‚āx‚¢‚āAƒ‹[ƒgiuid ‚ª 0j‚Å‚ 
‚é‚È‚ç
    ‚΁ALD_LIBRARY_PATH ‚́AŠú‘ÒƒT[ƒ`ƒpƒX‚É‚µ‚½‚ª‚Á‚Ä’T‚µ‚Ü‚·B

    ‚à‚µA‚»‚êˆÈŠO‚É•’ʂ̃†[ƒUiuid != 0j‚Å‚ ‚èAŽÀs‚·‚éƒoƒCƒiƒŠ‚ª
 suid 
    ŽÀsŒ`Ž®‚̏ꍇAlibc.so.x ‚Æ•K—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚Í‹­§“I‚ÉŠú‘ÒŒŸõƒpƒX
‚Ì‚Ç‚±
    ‚©‚©‚烍[ƒh‚³‚ê‚Ü‚·BLD_LIBRARY_PATH ‚Í–³Ž‹‚³‚ê‚Ü‚·BiŽ–ŽÀ‘S‚­ƒŠ
ƒZƒbƒgó
    ‘ԁj‚±‚ê‚É‚æ‚èAŽ©g‚̃Gƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“‚©‚畁’ʂ̃†[ƒU‚Å‚Í’âŽ~‚µ‚Ü
‚·B
    —Ⴆ‚΁Asetuid() ‚́AŽ©•ª‚ōì‚Á‚½ libc ƒ‰ƒCƒuƒ‰ƒŠ‚ªŒÄ‚΂ê‚Ü‚·B

    ÅŒã‚ɁA‚à‚µAƒm[ƒ}ƒ‹ƒ†[ƒU‚ÅŽÀs‚·‚éƒoƒCƒiƒŠ‚ªw•’ʂ́xƒoƒCƒiƒŠ
‚È‚çA
    LD_LIBRARY_PATH ‚͍ŏ‰‚É•K—v‚Æ‚·‚郉ƒCƒuƒ‰ƒŠ‚ð’T‚µ‚Ü‚·B

    ‚à‚µAƒ†[ƒU‚Ì LD_LIBRARY_PATH ‚щƒCƒuƒ‰ƒŠ‚ªŒ©‚‚©‚ç‚È‚¯‚ê‚΁AŒŸõ
ƒpƒX
    ‚Æ‚µ‚āwŠú‘ÒƒT[ƒ`ƒpƒXx‚ðƒZƒbƒg‚µ‚ÄŒŸõ‚𑱂¯‚Ü‚·B‚±‚Ì‚±‚ƂŁAŒë
‚Á‚½A
    –³‘Ê‚È LD_LIBRARY_PATH ‚ðƒZƒbƒg‚·‚é–â‘è‚ð‰ðŒˆ‚µA“KØ‚ȃ†[ƒU[‚̃o
ƒCƒiƒŠ
    ‚ðŽÀs‚µ‚Ü‚·B
 

Q: 21) Ž„‚̃vƒƒOƒ‰ƒ€‚Å‚Í /lib/cpp ‚ª•K—v‚Å‚·B‚Ç‚±‚©‚çŽè‚É“ü‚ꂽ‚ç‚æ‚¢
‚Ì‚Å‚µ‚傤‚©H

A:

‰ñ“š: cpp ‚Í /usr/lib/gcc-lib/i386-linux/2.5.7 ‚Ì’†‚É‚ ‚è‚Ü‚·B
    (gcc ‚̃o[ƒWƒ‡ƒ“ƒiƒ“ƒo[‚Í•Ï‚í‚Á‚Ä‚¢‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ)

    ˆÈ‰º‚̃Rƒ}ƒ“ƒh‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B

        % cd /lib; ln -sf /usr/lib/gcc-lib/i486-linux/2.5.7/cpp

    ** 2.5.7 ‚Í‚ ‚È‚½‚ÌŽg‚Á‚Ä‚¢‚é GCC ‚Ì‚à‚Ì‚É‚µ‚Ä‚­‚¾‚³‚¢B
    ** 386 ‚̃Rƒ“ƒpƒCƒ‰‚ðŽg‚Á‚Ä‚¢‚é‚È‚çAi486 ‚ð i386 ‚É‚µ‚Ä‚­‚¾‚³‚¢B
    ‘¼‚Ì•û–@‚ŁA‚æ‚è‚æ‚¢‰ðŒˆ•û–@‚Í‚±‚¿‚ç‚Å‚·B

        % cat > /lib/cpp
        #!/bin/sh
        cc -E "$@"
        Ctrl-D[EOF]

    ‚±‚Ì•û–@‚́AV‚µ‚¢ gcc ‚É‚µ‚āAŒÃ‚¢ gcc ‚ðíœ‚µ‚½‚Æ‚«‚É /lib/cpp 
‚ª“®‚©‚È
    ‚­‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
 

Q: 22) <varargs.h> ‚Í‚Ç‚±‚Å‚·‚©H

A:

‰ñ“š: varargs.h ‚́A/usr/lib/gcc-lib/i386-linux/2.5.7/include ‚Ì’†‚Ì‘¼
‚̃VƒXƒe
    ƒ€‚É‘¶‚µ‚½ƒtƒ@ƒCƒ‹‚É‚ ‚è‚Ü‚·B
    <varargs.h> ‚́AK&R ‚É‚ ‚é‚à‚Ì‚Å‚·Bgcc ‚̃fƒtƒHƒ‹ƒg‚Í ANSI ‚Å‚·B
    <stdarg.h> ‚ð‘ã‚í‚è‚ÉŽg‚¤‚ׂ«‚Å‚µ‚傤B

    ** ƒo[ƒWƒ‡ƒ“ƒiƒ“ƒo 2.5.7 ‚́A‚ ‚È‚½‚ÌŽg‚Á‚Ä‚¢‚é GCC ‚̃o[ƒWƒ‡ƒ“‚É
’u‚«Š·‚¦
       ‚ĉº‚³‚¢B
    ** ‚à‚µA486 —p‚̃Rƒ“ƒpƒCƒ‰‚ðŽg‚Á‚Ä‚¢‚é‚È‚çAi386 ‚ð i486 ‚ɕύX‚µ
‚Ä‚­‚¾‚³
        ‚¢B
 

Q: 23) Ž„‚̃vƒƒOƒ‰ƒ€‚ŁA<linux/foo.h> ‚ðƒCƒ“ƒNƒ‹[ƒh‚µ‚½‚¢‚Ì‚Å‚·‚ªAŒ©
‚‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB‚Ç‚±‚É‚ ‚é‚Ì‚Å‚µ‚傤‚©H

A:

‰ñ“š: ‚¢‚­‚‚©‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́AƒJ[ƒlƒ‹‚̃o[ƒWƒ‡ƒ“‚Ɉˑ¶‚µ‚Ä
‚¨‚èA
    ‚±‚̂悤‚ɁAƒJ[ƒlƒ‹‚̃ŠƒŠ[ƒX‚²‚Æ‚É‚È‚Á‚Ä‚¢‚Ü‚·BÅV‚̃J[ƒlƒ‹‚Ì
ƒ\[ƒX‚ð
    Žè‚É“ü‚ê‚é•K—v‚ª‚ ‚èA“WŠJŒãAƒŠƒ“ƒN‚𒣂é•K—v‚ª‚ ‚è‚Ü‚·B

    ‚à‚µA/usr/src ‚ª‚ ‚èA‚³‚ç‚ɃJ[ƒlƒ‹‚̃\[ƒX‚ª‚ ‚é‚È‚çAˆÈ‰º‚̃Rƒ}
ƒ“ƒh‚ð
    ŽÀs‚µ‚Ä‚­‚¾‚³‚¢B
        % cd /usr/include
        % ln -sf /usr/src/linux/include/linux
        % ln -sf /usr/src/linux/include/asm

    MCC ƒŠƒŠ[ƒX‚Í‚»‚ê‚ç‚̃Šƒ“ƒN‚ðŽn‚ß‚©‚玝‚Á‚Ä‚¢‚Ü‚¹‚ñB‚µ‚½‚ª‚Á‚āA
V‚µ‚¢
    ƒJ[ƒlƒ‹‚̃\[ƒXƒcƒŠ[‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚àŒÃ‚¢ƒCƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹
‚ðŽg—p‚·
    ‚邱‚Æ‚ª‚Å‚«‚Ü‚·B’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 24) foo() ŠÖ”‚̓‰ƒCƒuƒ‰ƒŠ‚É“ü‚Á‚Ä‚¢‚é‚Ì‚Å‚µ‚傤‚©H

A:

‰ñ“š: ŠÖ”‚ªƒ‰ƒCƒuƒ‰ƒŠ‚É“ü‚Á‚Ä‚¢‚é‚©‚Ç‚¤‚©’²‚ׂé•û–@‚́AˆÈ‰º‚ÉŽ¦‚·‚Æ‚¨
‚è‚Å‚·B
    flock() ŠÖ”‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©‚𒲂ׂé‚͈̂ȉº‚̂悤‚É‚µ
‚Ü‚·B

        % nm /usr/lib/libc.a | grep flock

    ŽŸ‚̂悤‚ȏo—ÍŒ‹‰Ê‚̏ꍇ‚́A

        00000000 T flock

    flock() ŠÖ”‚ª libc.a/libc.sa. ‚É’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B

    ŽŸ‚̂悤‚ȏo—ÍŒ‹‰Ê‚̏ꍇ‚́A

        00000000 U flock

    flock() ‚ªŽQÆ‚Å‚«‚邱‚Æ‚ðŽ¦‚µ‚Ü‚·B`U' ‚́Aflock ‚ª‚Ç‚±‚©‚Å’è‹`‚³
‚ê‚Ä‚¨
    ‚èAî•ñ‚ð‰ðÍ‚·‚邱‚Ƃŏꏊ‚ª‚í‚©‚郉ƒCƒuƒ‰ƒŠ‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é•K
—v‚ª‚ 
    ‚邱‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B
 

Q: 25) ƒvƒƒOƒ‰ƒ€ XXX ‚ð Linux ‚ÉŽ‚Á‚Ä‚­‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚Å‚·‚©H

A:

‰ñ“š: ‚¾‚ê‚©‚ªALinux ‚ɃvƒƒOƒ‰ƒ€‚ðwŽ‚Á‚Ä‚«‚½xŽž‚É–ß‚Á‚Ä‚­‚¾‚³‚¢B
    ‚à‚µALinux ‚ÉŽ‚Á‚Ä‚«‚½‚à‚Ì‚ª‰½‚à‚È‚©‚Á‚½‚çAˆÓ–¡‚ª‚ ‚è‚Ü‚¹‚ñB

    –{‹C‚ōl‚¦‚é‚ƁAˆê”Ê“I‚ɏ¬•ÏX‚Æ‚µ‚ẮALinux —p‚É 100% POSIX ‚É‚µ
‚½‚ª‚Á‚Ä
    •ÒW‚µ‚½ƒ\[ƒX‚ª•K—v‚Å‚·B
    Œ³‚̃vƒƒOƒ‰ƒ€ƒR[ƒh‚ª•ÏX‚³‚ê‚Ä‚à‚¢‚¢‚悤‚ɁA«—ˆ“I‚É‚Í `make' ‚¾
‚¯‚ÅŽÀs
    Œ`Ž®‚ðì‚ê‚é‚悤‚É‚·‚ׂ«‚Å‚·B

    ‚à‚Á‚Æ‚à‚æ‚­‹N‚±‚é–â‘è‚̈ê‚‚Ƃµ‚āAˆê”ʊ֐”‚ª Linux ‚̃wƒbƒ_ƒtƒ@ƒC
ƒ‹‚Ƀ}ƒN
    ƒ‚Å’è‹`‚³‚ê‚Ä‚¢‚āAƒvƒŠƒvƒƒZƒbƒT‚ªƒR[ƒh‚Ì‚È‚©‚Ì—ÞŽ—‚µ‚½ƒvƒƒgƒ^
ƒCƒv’è‹`
    ‚̉ðÍ‚ð‹‘”Û‚·‚邱‚Æ‚ª‚ ‚°‚ç‚ê‚Ü‚·B—ÞŽ—‚µ‚½‚à‚Ì‚Æ‚µ‚ẮAatoi() ‚Æ
 atol() 
    ‚ª‚ ‚°‚ç‚ê‚Ü‚·B

    ‚»‚Ì‘¼‚̈ê”Ê“I‚È–â‘è‚Æ‚µ‚ẮA"sprintf(string, fmt, ...)" ‚ł́A‚Ù
‚Æ‚ñ‚Ç‚Ì
     unix ‚̏ꍇ‚́A”z—ñ‚̃|ƒCƒ“ƒ^‚ð•Ô‚µ‚Ü‚·BLinux ‚ł́A”z—ñ‚Ì’†‚Ì•¶
Žš”‚ð•Ô
    ‚µ‚Ü‚·B

    ‚»‚Ì‘¼‚Ì–â‘è‚́ALinux ‚Ì GCC ‚́AANSI ƒRƒ“ƒpƒCƒ‰‚Å‚ ‚é‚Æ‚¢‚¤Ž–ŽÀ‚É
‚æ‚è”­¶
    ‚µ‚ª‚¿‚Å‚·Bd—v‚È‚Ù‚Æ‚ñ‚ǂ̕ύX‚́AƒvƒŠƒvƒƒZƒbƒT‚Ì‚½‚ß‚Å‚·BˆÈ‰º
‚̃IƒvƒV
    ƒ‡ƒ“‚ð’ljÁ‚µ‚Ä‚­‚¾‚³‚¢B

        -traditional

    ‚́A‚½‚¾‚ЂƂ‚́iÁ‹É“I‚ȁj‰ðŒˆ•û–@‚Å‚·B

    +----------------------------------------+
    | Brouno Haible Ž‚©‚ç‚̉¿’l‚ ‚éƒRƒƒ“ƒg |
    +----------------------------------------+

    ‚±‚ê‚́AUnix ‚̃\ƒtƒgƒEƒFƒA‚ð Linux ‚ÉŽ‚Á‚Ä‚­‚é‚Æ‚«‚É”­¶‚·‚é‚Å‚ 
‚낤–â‘è
    ‚ð‹Lq‚µ‚Ä‚Ý‚½‚à‚Ì‚Å‚·B

    C ‚ŏ‘‚©‚ꂽƒ\ƒtƒgƒEƒFƒA‚Å‚ ‚é‚Ɖ¼’肵‚Ü‚·B

    Linux (Œ¾‚¢Š·‚¦‚é‚ƁALinux ‚̃VƒXƒeƒ€ƒR[ƒ‹‚Æ C ƒ‰ƒCƒuƒ‰ƒŠŠÖ”) ‚Í
A‚Å‚«‚é
    ‚©‚¬‚èAPOSIX ŒÝŠ·‚ɋ߂¯‚Ä‚¢‚Ü‚·B‚±‚ê‚©‚ç’Z‚¢ƒŠƒXƒg‚ðì‚Á‚Ä‚Ý‚Ü
‚·B

    –â‘è 1: select() ‚Ì timeout ƒpƒ‰ƒƒ^
    ------------------------------------

    ’›Œó:
    “ü—Í‚Å CPU ‚ðH‚¢‚‚Ԃ·ƒ|[ƒŠƒ“ƒO‚ð‚·‚é‚悤‚ȃvƒƒOƒ‰ƒ€

    –â‘è:
    select() ‚̓VƒXƒeƒ€ƒR[ƒ‹‚Å‚·Btimeout ƒpƒ‰ƒƒ^‚́AŒÃ“T“I‚ɃVƒXƒeƒ€
‚ł́A
    ƒŠ[ƒhƒIƒ“ƒŠ[‚Æ‚µ‚ÄŽg‚í‚ê‚Ü‚·B‚¢‚­‚‚©‚̃}ƒjƒ…ƒAƒ‹‚ɂ́A3 ”NˆÈã
‘O‚©‚ç
    ‹Lq‚³‚ê‚Ä‚¢‚Ü‚·B

        select() ‚́AŒˆ‚Ü‚Á‚½êŠ‚ÅŽžŠÔ‚ª•ÏX‚³‚ê‚é‚Æ‚¨‚¨‚æ‚»ƒIƒŠƒWƒiƒ‹
‚Ì 
        timeout ‚©‚çŽc‚Á‚½ŽžŠÔ‚ð•Ô‚µ‚Ü‚·B‚±‚Ì‚±‚Ƃ́A«—ˆA•â‘«‚³‚ê‚é
‚Å‚µ‚å
        ‚¤B‚µ‚½‚ª‚Á‚āAselect ƒR[ƒ‹‚Åtimeout ƒ|ƒCƒ“ƒ^‚ª•ÏX‚³‚ê‚È‚¢‚Æ
Žv‚¤‚±
        ‚Æ‚Í‹ð‚©‚È‚±‚Æ‚Å‚·B

    ‚à‚µA‚Ü‚¶‚ß‚É‚±‚̃AƒhƒoƒCƒX‚ðŽó‚¯Žæ‚ç‚È‚©‚Á‚½‚çAƒ^ƒCƒ€ƒAƒEƒg‚̍\
‘¢‘̂̏‘
    ‚«–ß‚µ‚Å 0 ‚̃^ƒCƒ€ƒAƒEƒg‚ª”­¶‚·‚é‚Å‚µ‚傤B‚»‚ê‚Í“¯‚¶ƒ^ƒCƒ€ƒAƒEƒg
\‘¢‘Ì‚ð
    Žg‚Á‚½ select() ‚̏«—ˆ“I‚ȃR[ƒ‹‚ª‚·‚®‚É–ß‚Á‚Ä‚­‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·
B

    —pˆÓ:
    ƒ^ƒCƒ€ƒAƒEƒg‚Ì’l‚ð select() ‚ðŒÄ‚Ô‚Æ‚«‚Í‚¢‚‚à\‘¢‘Ì‚É“ü‚ê‚Ä‚­‚¾‚³
‚¢B

    ˆÈ‰º‚̂悤‚ɃR[ƒh‚ð•ÏX‚µ‚Ä‚­‚¾‚³‚¢B

               struct timeval timeout;
               timeout.tv_sec = 1; timeout.tv_usec = 0;
               while (some_condition)
                 { select(n,readfds,writefds,exceptfds,&timeout); }

    ‚©‚ç

               struct timeval timeout;
               while (some_condition)
                 { timeout.tv_sec = 1; timeout.tv_usec = 0;
                   select(n,readfds,writefds,exceptfds,&timeout);
                 }

    ‚Ö

    –â‘è‚Q: ƒVƒXƒeƒ€ƒR[ƒ‹‚É‚æ‚銄‚荞‚Ý
    ------------------------------------

    ’›Œó:
    ƒRƒ“ƒgƒ[ƒ‹ Z ‚ŃvƒƒOƒ‰ƒ€‚ðŽ~‚߁A‚»‚̌ナƒXƒ^[ƒg‚µ‚½A‚Ü‚½‚́A‚»
‚Ì‘¼‚Ì
    ó‹µ‚ŁAƒRƒ“ƒgƒ[ƒ‹ C Š„‚荞‚݂̃VƒOƒiƒ‹‚ª”­¶‚µ‚½‚Æ‚«AƒRƒvƒƒZƒX
‚ªI—¹
    ‚µ‚Ü‚·B"interrupted system call" ‚â "write: unknown error" ‚̂悤
‚ȃƒbƒZ
    [ƒW‚ª•Ô‚Á‚Ä‚«‚Ü‚·B

    –â‘è:
    ŽÀs’†‚̃VƒXƒeƒ€ƒR[ƒ‹ƒvƒƒOƒ‰ƒ€‚̓VƒOƒiƒ‹ƒvƒƒZƒX‚É‚æ‚芄‚荞‚Ý‚ª
‚©‚©‚èA
    -1 ‚ð•Ô‚µAerrno = EINTR ‚ðƒZƒbƒg‚µ‚Ü‚·B‚»‚̃vƒƒOƒ‰ƒ€‚ُ͈íI—¹‚µ
‚½‚悤‚É
    Œ©‚¦‚Ä‚µ‚Ü‚¢‚Ü‚·B

    ‰ðà:
    ‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚́isignal(), sigaction(), sigvec() ‚ðŽg‚¤jƒCƒ“
ƒXƒg[ƒ‹
    ‚³‚ꂽƒVƒOƒiƒ‹ƒnƒ“ƒhƒ‰‚ðŽ‚Á‚Ä‚¢‚Ü‚·BƒVƒOƒiƒ‹‚ª”­¶‚·‚é‚ƃVƒOƒiƒ‹
ƒnƒ“ƒhƒ‰
    ‚ªŒÄ‚яo‚³‚ê‚Ü‚·B‚±‚ÌŒ»Û‚́A‚Ù‚©‚Ì UNIX ƒVƒXƒeƒ€‚̏ꍇA”ñ“¯ŠúA
‚Ü‚½‚Í
@@ 2, 3 ‚Ì’x‚¢ƒVƒXƒeƒ€ƒR[ƒ‹‚Å‹N‚±‚è‚Ü‚·B

        ƒVƒOƒiƒ‹‚ª’x‚¢ƒfƒoƒCƒXiƒtƒ@ƒCƒ‹‚Å‚È‚¢Aƒ^[ƒ~ƒiƒ‹‚̂悤‚ȁj‚Å
 read(2),
        write(2), open(2), ioctl(2) ‚̃VƒXƒeƒ€ƒR[ƒ‹‚ÌŽÀs’†‚â pause(2)
 ‚̃VƒX
        ƒeƒ€ƒR[ƒ‹‚â wait(2) ‚̃VƒXƒeƒ€ƒR[ƒ‹‚ÌŽÀs’†‚Ɉø‚«‹N‚±‚³‚ꂽ‚Æ
‚«A
        ‘O‚à‚Á‚Ä’âŽ~‚µ‚½‚Ü‚½‚̓]ƒ“ƒrƒvƒƒZƒX‚ª‚·‚Å‚É‘¶Ý‚µ‚Ä‚¢‚邽‚ß‚·
‚®‚É‚Í
        –ß‚Á‚Ä‚«‚Ü‚¹‚ñBƒVƒOƒiƒ‹‚ðƒLƒƒƒbƒ`‚·‚éŠÖ”‚ªŽÀs‚³‚êAƒVƒXƒeƒ€
ƒR[ƒ‹
        Š„‚荞‚Ý‚ª errno ‚É EINTR ‚ðƒZƒbƒg‚·‚éƒvƒƒZƒX‚ðŒÄ‚яo‚µA-1 ‚ð
•Ô‚µ‚Ü
        ‚·B

    Linux iPOSIX ‚àŠÜ‚Ý‚Ü‚·j‚ł́AƒVƒOƒiƒ‹‚ðƒ`ƒFƒbƒN‚µAƒVƒOƒiƒ‹ƒnƒ“
ƒhƒ‰‚ð
    ŽÀs‚µ‚Ü‚·B
          * ”ñ“¯Šú‚Å‚ ‚Á‚½‚©iƒ^ƒCƒ}‚̍‚݁j,
          * w‚ǂ́xƒVƒXƒeƒ€ƒR[ƒ‹‚©‚ç‚̃Šƒ^[ƒ“‚Å‚ ‚é‚©
          * ˆÈ‰º‚ÉŽ¦‚·ƒVƒXƒeƒ€ƒR[ƒ‹‚ÌŽÀs’†‚Å‚ ‚Á‚½‚©
                  select(),
                  pause(),
                  connect(), accept(),
                  ƒ^[ƒ~ƒiƒ‹Aƒ\ƒPƒbƒgAƒpƒCƒvA /proc ƒtƒ@ƒCƒ‹‚Ö‚Ì
 read(),
                  ƒ^[ƒ~ƒiƒ‹Aƒ\ƒPƒbƒgAƒpƒCƒvAƒ‰ƒCƒ“ƒvƒŠƒ“ƒ^‚Ö‚Ì
 write(),
                  FIFO, PTY, ‚Ü‚½‚̓VƒŠƒAƒ‹‰ñü‚Ö‚Ì open(),
                  ƒ^[ƒ~ƒiƒ‹‚Ö‚Ì ioctl(),
                  F_SETLKW ƒRƒ}ƒ“ƒh‚Å‚Ì fcntl(),
                  wait4(),
                  syslog(),
                  ‚»‚Ì‘¼ TCP or NFS ‘€ì
          w‚»‚Ì‘¼‚̃IƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚ł́AˆÈ‰º‚̃VƒXƒeƒ€ƒR[ƒ‹
‚àŠÜ‚ß‚È
          ‚¯‚ê‚΂Ȃç‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB

           creat(), close(), getmsg(), putmsg(), msgrcv(), msgsnd
(), recv(),
           send(), wait(), waitpid(), wait3(), tcdrain(), sigpause(),
           semop() x

    ÅŒã‚Ì 2 ‚‚̃P[ƒX‚ƃVƒOƒiƒ‹ƒnƒ“ƒhƒ‰‚Ì•œ‹A’l‚̉¼’è‚É‚æ‚èƒVƒXƒeƒ€ƒR
[ƒ‹‚Í
    -1 ‚ð•Ô‚µAerrno ‚É EINTR ‚ðƒZƒbƒg‚µ‚Ü‚·B

    ‚à‚µASA_RESTART ƒtƒ‰ƒO‚ª•„‡‚µ‚½ƒVƒOƒiƒ‹‚Æ‚µ‚ăZƒbƒg‚³‚ê‚Ä‚àA‚Ù‚Æ
‚ñ‚ǂ̏ê
    ‡AƒVƒXƒeƒ€ƒR[ƒ‹‚̓VƒOƒiƒ‹ƒnƒ“ƒhƒ‰ŽÀsŒãAŽ©“®“I‚ɃŠƒXƒ^[ƒgi‘±
sj‚µA
    ‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚Í EINTR ‚ÍŒ©‚¦‚Ü‚¹‚ñB

    ‚ ‚È‚½‚Í‚È‚º‚±‚ꂪƒfƒtƒHƒ‹ƒg‚Ì“®ì‚Å‚È‚¢‚Ì‚©Ž¿–â‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ
B——R‚Í
    EINTR ‚ð•Ô‚µAƒZƒbƒg‚·‚邱‚Æ‚ª‚æ‚è‹­—́iƒvƒƒOƒ‰ƒ€‚ɑ΂µŽó‚¯Žæ‚Á‚½
‚·‚ׂÄ
    ƒVƒOƒiƒ‹‚É’¼‚¿‚É”½‰ž‚·‚é‹@‰ï‚ð—^‚¦‚Ü‚·j‚Å‚ ‚é‚©‚ç‚Å‚·B
    ƒVƒXƒeƒ€ƒR[ƒ‹‚Í‚à‚Í‚âwƒ_[ƒNƒgƒ“ƒlƒ‹x‚Å‚Í‚È‚¢‚Ì‚Å‚·B

    ƒm[ƒg : ‚¢‚­‚‚©‚̃o[ƒWƒ‡ƒ“‚Ì BSD Unix ‚̃fƒtƒHƒ‹ƒg“®ì‚̓VƒXƒeƒ€
ƒR[ƒ‹‚ð
    ƒŠƒXƒ^[ƒg‚·‚邱‚Æ‚Å‚·BŠ„‚荞‚܂ꂽƒVƒXƒeƒ€ƒR[ƒ‹‚ðŽæ‚èo‚·‚½‚ß‚É
‚́A
    SV_INTERRUPT ‚Ü‚½‚Í SA_INTERRRUP ƒtƒ‰ƒO‚ðŽg—p‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB

    C³•û–@‚Æ‚µ‚Ä‚Í 2 ‚‚̕û–@‚ð‘I‘ð‚Å‚«‚Ü‚·B

    C³ 1:
    ‚ ‚È‚½‚̃Cƒ“ƒXƒg[ƒ‹‚µ‚½‘S‚ẴVƒOƒiƒ‹ƒnƒ“ƒhƒ‰‚ɑ΂µAƒVƒOƒAƒNƒVƒ‡
ƒ“ƒtƒ‰ƒO
    ‚Æ‚µ‚āASA_RESTRT ‚ð’ljÁ‚µ‚Ü‚·B—Ⴆ‚΁A

                signal (sig_nr, my_signal_handler);

    ‚ð

                 signal (sig_nr, my_signal_handler);
                 { struct sigaction sa;
                   sigaction (sig_nr, (struct sigaction *)0, &sa);
                 #ifdef SA_RESTART
                   sa.sa_flags |= SA_RESTART;
                 #endif
                 #ifdef SA_INTERRUPT
                   sa.sa_flags &= ~ SA_INTERRUPT;
                 #endif
                   sigaction (sig_nr, &sa, (struct sigaction *)0);
                 }

    ‚ɕύX‚µ‚Ü‚·B

    ƒm[ƒg : ‚±‚ê‚ð‚Ù‚Æ‚ñ‚ǂ̃VƒXƒeƒ€ƒR[ƒ‹‚É“K—p‚·‚éê‡Aread
(), write(),
    ioctl(), select(), pause(), connect() ã‚Ì EINTR ‚ðƒ`ƒFƒbƒN‚µ‚È‚¯‚ê
‚΂Ȃè‚Ü
    ‚¹‚ñB
    ‚±‚±‚É read() ‚Æ ioctl() ‚Ì 2 ‚‚̗á‚ð‚ ‚°‚Ä‚¨‚«‚Ü‚·B

    read() ‚ðŽg‚Á‚Ä‚¢‚éƒIƒŠƒWƒiƒ‹•”•ª‚Ì

                 int result;
                 while (len > 0)
                   { result = read(fd,buffer,len);
                     if (result < 0) break;
                     buffer += result; len -= result;
                   }
    ‚ð

                 int result;
                 while (len > 0)
                   { result = read(fd,buffer,len);
                     if (result < 0) { if (errno != EINTR) break; }
                     else { buffer += result; len -= result; }
                   }

    ‚ɕύX‚µ‚Ü‚·B
    ‚Ü‚½Aioctl() ‚ðŽg‚Á‚Ä‚¢‚éƒIƒŠƒWƒiƒ‹‚Ì•”•ª‚Ì

                 int result;
                 result = ioctl(fd,cmd,addr);

    ‚ð

                 int result;
                 do { result = ioctl(fd,cmd,addr); }
                    while ((result == -1) && (errno == EINTR));

    ‚ɕύX‚µ‚Ü‚·B
 

Q: 26) gcc/library ‚Ì foo ‚ŃoƒO‚ðŒ©‚Â‚¯‚½‚Ì‚Å‚·‚ªA‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å
‚µ‚傤‚©H

A:

‰ñ“š: –{“–‚Å‚·‚©H
    ‚¦‚Á‚ƁA‚à‚µAƒvƒƒOƒ‰ƒ€‚ªˆÙíI—¹A‚Ü‚½‚ÍŠú‘Ò’Ê‚è‚É“®‚©‚È‚¢‚È‚ç‚Î
A‚Ü‚¸
    Å‰‚ÉŽŽ‚µ‚Ă݂āA”s‚ɃR[ƒh‚ði‚荞‚ñ‚ŁAŠm”F‚µ‚Ä‚­‚¾‚³‚¢B

    Ã“Iƒo[ƒWƒ‡ƒ“‚Æ‹¤—Lƒo[ƒWƒ‡ƒ“‚Ç‚¿‚ç‚Å‚à”­¶‚µ‚Ü‚·‚©H
    i‚·‚È‚í‚¿ADLL ƒ‰ƒCƒuƒ‰ƒŠ‚ƐÓIƒ‰ƒCƒuƒ‰ƒŠ‚Ç‚¿‚ç‚©‚Ì–â‘è‚Å‚µ‚傤‚©
Hj

    gcc ‚Ì‘–‚é•Ê‚̃}ƒVƒ“‚ðŽg‚¤‚±‚Æ‚Í‚Å‚«‚Ü‚·‚©HŒ¾‚¢Š·‚¦‚é‚ƁALinux/
GCC ‚Ì‚Ý‚Å
    ‚È‚­AGCC ‘S‘Ì‚Ì–â‘è‚Å‚·‚©H‚à‚µ‚»‚¤‚È‚çˆÈ‰º‚ÉŽ¦‚· USENET ‚̃jƒ…[
ƒXƒOƒ‹[
    ƒv‚É“Še‚µ‚½‚Ù‚¤‚ª‚æ‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB

                gnu.gcc.bug, gnu.gcc.help, gnu.g++.help,
                comp.lang.c, or comp.lang.c++.

    –â‘è‚͐”’l‰‰ŽZƒGƒ~ƒ…ƒŒ[ƒ^‚Å‚·‚©H‚à‚µ‚»‚¤‚È‚çA”’l‰‰ŽZƒGƒ~ƒ…ƒŒ[
ƒ^‚̍ìŽÒ
    ‚Å‚ ‚é Bill Metzenthen  Ž (apm233m@vaxc.cc.monash.edu.au) ‚Ƀ[ƒ‹
‚µ‚½
    ‚Ù‚¤‚ª‚æ‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB

    Œ‹‹ÇAlinux-bugs@sunsite.unc.edu ‚©AŽ„ 
(mitchum.dsouza@mrc-apu.cam.ac.uk) 
    ‚©AHLU ‚É‚Å‚àƒ[ƒ‹‚·‚ׂ«‚Å‚µ‚傤B
 

Q: 27) ‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ª“¯‚¶‹@”\‚ðŽ‚Á‚½Ã“Iƒ‰ƒCƒuƒ‰ƒŠ‚æ‚è‘å‚«‚­‚È‚é‚Ì‚Í
‰½ŒÌ‚Å‚·‚©H

A:

‰ñ“š: ‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚̓fƒBƒXƒNƒXƒy[ƒX•s‘«Žž‚Å‚àŠg’£‚Å‚«‚é‚悤‚É‚·‚邽
‚ß‚É 
    `holes' ‚Æ‚¢‚¤Œ`‚ŃXƒy[ƒX‚ð—\–ñ‚µ‚Ä‚¢‚Ü‚·B`makehole' ‚ðŒÄ‚яo‚·A
‚Ü‚½‚Í
    Žg—p‚·‚éŠÈ’P‚È `cp' ‚Í‚±‚Ì—\–ñ—̈æ‚ðŽg—p‚µ‚Ü‚·B
    ‚ ‚È‚½‚́Aƒ‰ƒCƒuƒ‰ƒŠ‚ðì¬Œã‚ɏ¬‚³‚­‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
 

Q: 28) /usr/lib “à‚É‚ ‚é .sa ƒtƒ@ƒCƒ‹‚Ƃ͉½‚Å‚·‚©H

A:

‰ñ“š: .sa ƒtƒ@ƒCƒ‹‚Ƃ́A‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚©‚甲‚«o‚½‚à‚Ì‚Å‚ ‚èA³“–‚ȃ‰
ƒCƒuƒ‰ƒŠ
    ‚©‚çŽæ‚èo‚µ‚½‚·‚ׂẴOƒ[ƒoƒ‹•Ï”‚ðŠÜ‚݁Aƒ‰ƒ“ƒ^ƒCƒ€‚ðƒŠƒ“ƒN‚·‚é
‚½‚ß‚É
    •K—v‚Ȋ֐”‚ðƒ|ƒCƒ“ƒg‚µ‚Ä‚¢‚Ü‚·BŽ¿–â (13) ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 29) Linux —p‚̃IƒuƒWƒFƒNƒgŽwŒü‚Ì C ‚Í‚Ç‚±‚ÅŽè‚É“ü‚ê‚ç‚ê‚Ü‚·‚©H

A:

‰ñ“š: ƒIƒuƒWƒFƒNƒgŽwŒü‚Ì C ‚Í gcc ‚Ì 2.4.0 ˆÈã‚̃o[ƒWƒ‡ƒ“‚ŃŠƒŠ[ƒX‚³
‚ê‚Ä‚¢‚Ü
    ‚·B‚±‚ê‚́A–Ú‰ºƒeƒXƒg’†‚Å‚·BÅVƒo[ƒWƒ‡ƒ“‚͈ȉº‚Ì‚à‚Ì‚Å‚·B

        tsx-11.mit.edu:/pub/linux/packages/GCC/gcc-2.5.7-p2.tar.gz
 

Q: 30) "Internal compiler error: cc1 got fatal signal 11" ‚̃ƒbƒZ[ƒW
‚̈Ӗ¡‚͉½‚Å‚·‚©H

A:

‰ñ“š: GCC ‚Í‚½‚Ô‚ñƒvƒƒOƒ‰ƒ€‚𑖂点‚邽‚ß‚Éæ×~‚Ƀƒ‚ƒŠ‚ðÁ”A‚«‚Á
‚Æ RAM 
    ‚̗̈æ‚ðH‚¢‚‚Ԃµ‚½‚Ì‚Å‚µ‚傤B•’ʁA’v–½“IƒVƒOƒiƒ‹‚Ì 11 ‚́ARAM 
‚Ì
    ƒpƒŠƒeƒBƒGƒ‰[‚âƒn[ƒháŠQ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·BŽ„‚àƒn[ƒhƒfƒBƒXƒN‚Ì•s
—ǃuƒƒb
    ƒN‚Ì‚¹‚¢‚Å cc1 ‚Å“¯‚¶ó‘ԂɊׂÁ‚½‚±‚Æ‚ª‚ ‚è‚Ü‚·B‚»‚ê‚́Aƒ`ƒbƒv‚̃I
[ƒo[
    ƒq[ƒgiƒtƒŒƒ“ƒ`ƒtƒ‰ƒC‚Å‚Í‚ ‚è‚Ü‚¹‚ñj‚É‚æ‚éƒGƒ‰[‚Æ‚µ‚Ä•ñ‚³‚ê‚Ä
‚¢‚Ü‚·B
    ‚Ü‚½A’á‹@”\‚Ì IDE ƒRƒ“ƒgƒ[ƒ‰‚ƃhƒ‰ƒCƒu‚Å 8MHz AT ƒoƒXƒNƒƒbƒNˆÈ
ã‚Å‘–‚ç
    ‚¹‚悤‚Æ‚·‚é‚Æ”­¶‚µ‚Ü‚·B‚±‚ê‚̓XƒƒbƒvƒXƒy[ƒX‚Ì•Ï‘¢‚ðˆø‚«‹N‚±‚·
‚±‚Æ‚É‚æ
    ‚蓯‚¶ƒGƒ‰[‚Æ‚È‚è‚Ü‚·B

    ˆê”ʂɁAƒVƒOƒiƒ‹ 11 (ƒZƒOƒƒ“ƒe[ƒVƒ‡ƒ“EƒoƒCƒIƒŒ[ƒVƒ‡ƒ“j‚́Aƒvƒ
ƒZƒXƒX
    ƒy[ƒX•s‘«ó‘ԂłŃƒ‚ƒŠ‚ðƒAƒNƒZƒX‚ɍs‚Á‚½A‚Ü‚½‚̓Š[ƒhƒIƒ“ƒŠ[—Ì
ˆæ‚ɏ‘‚«
    ž‚݂ɍs‚Á‚½‚±‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B‚½‚܂ɁA‚±‚̃VƒOƒiƒ‹‚̓\ƒtƒg‚̃o
ƒO‚Å”­¶
    ‚·‚邱‚Æ‚à‚ ‚èAƒn[ƒháŠQ‚Æ‚ÍŒÀ‚è‚Ü‚¹‚ñBi‚Ü‚½‚̓VƒXƒeƒ€‚ÌŒJ‚è•Ô
‚µ
    ƒnƒ“ƒOB‚È‚º‚È‚çƒJ[ƒlƒ‹‚Å“¯‚¶Ž–‚ª‹N‚«‚é‚©‚ç‚Å‚·Bjgcc 2.3.3 ‚Å‚Í
A‰½l‚©
    ‚ª‚½‚­‚³‚ñ‚́hƒVƒOƒiƒ‹ 11h‚ðÄŒ»‚µ‚Ü‚µ‚½B

    ‚Ü‚½A`ld' ‚â `as' ‚̍Œ†‚̏áŠQ‚Æ‚µ‚Ä‚à”­¶‚µ‚Ü‚·B‚à‚µAcc1, cpp, 
‚Ü‚½‚Í
    ld ‚É–â‘肪‚ ‚é‚Æ‚·‚ê‚΁Agcc ‚Å -v ƒtƒ‰ƒO‚ð•t‚¯‚ăŠƒRƒ“ƒpƒCƒ‹‚µ‚ÄŠm
”F‚µ‚Ä
    ‚Ý‚Ä‚­‚¾‚³‚¢B
 

Q: 31) libc.lite ‚Ƃ͉½‚Å‚·‚©H

A:

‰ñ“š: libc.lite ‚Ƃ́Aƒtƒƒbƒs[‰^—p‚Å‚Ù‚Æ‚ñ‚ǂ̔ڂµ‚¢(–ó’:ˆÓ–¡•s–¾)
 UNIX ‚Ì
    ƒ^ƒXƒN‚ð–ž‘«‚·‚邽‚ß‚Ì libc ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŒy‚¢ƒo[ƒWƒ‡ƒ“‚Å‚·‚±‚ê‚É‚Í
Acurses,
    dbm, termcap ‚Ȃǂ̃R[ƒh‚ðŠÜ‚ñ‚Å‚¢‚Ü‚¹‚ñB‚à‚µA‚ ‚È‚½‚Ì /lib/
libc.so.4 ‚ª
    Œy‚¢ƒ‰ƒCƒuƒ‰ƒŠ‚ðƒŠƒ“ƒN‚µ‚Ä‚¢‚é‚È‚ç‚΁Aƒtƒ‹ƒo[ƒWƒ‡ƒ“‚É’u‚«Š·‚¦‚鎖
‚ð‚¨Š©‚ß
    ‚µ‚Ü‚·B‚Ç‚±‚ÅŽè‚É“ü‚ê‚ç‚ê‚é‚©‚ÍŽ¿–â (3) ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 32) Linux ‚̃‰ƒCƒuƒ‰ƒŠ‚Í SHADOW Password ‚ðƒTƒ|[ƒg‚µ‚Ä‚Ü‚·‚©H‚Ü‚½
AƒIƒ“EƒIƒt‚Í‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å‚·‚©H

A:

‰ñ“š: ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
    “K“–‚ȏꏊ‚É SHADOW_PWD ‚ð’è‹`‚µ‚ăRƒ“ƒpƒCƒ‹‚µAshadow ƒ‰ƒCƒuƒ‰ƒŠ‚ð
ƒŠƒ“ƒN
    ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·Bshadow ƒ‰ƒCƒuƒ‰ƒŠ‚͈ȉº‚Å“üŽè‚Å‚«‚Ü‚·B
        sunsite.unc.edu:/pub/Linux/distributions/SLS/a4/shadow.tgz
    ‹ï‘Ì“I‚É‚Í Makefile ‚Ì CFLAGS s‚É -DSHADOW_PWD ƒtƒ‰ƒO‚ðALDFLAGS 
s‚É 
    -lshadow ƒtƒ‰ƒO‚ð’ljÁ‚·‚ê‚΂¢‚¢‚Ì‚Å‚·B

    ƒ\[ƒXƒrƒbƒg‚ð•ÏX‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚µAshadow ‚ðƒTƒ|
[ƒg‚µ
    ‚½ "cript()" ‚͊֐”‚Å‚Í‚È‚­Aƒ}ƒNƒ‚Æ‚µ‚Ä’ñ‹Ÿ‚³‚ê‚Ü‚·B
    ‚»‚ê‚䂦A‚·‚×‚Ä‚Ì "extern int crypt()" ‚Å‚à‚‚܂­‚©‚à‚µ‚ê‚Ü‚¹‚ñ
B

    ‚±‚ê‚́Agetpwent(), setpwent() ‚»‚Ì‘¼‚̃‹[ƒ`ƒ“‚ðŽg‚Á‚½w‚·‚ׂẮx
•K—v‚È
    ƒoƒCƒiƒŠ‚ðƒRƒ“ƒpƒCƒ‹‚·‚邱‚Æ‚È‚µ‚ł́Ashadow password ‚̃Iƒ“EƒIƒt
‚ðs‚¤
    •û–@‚ªw‚È‚¢x‚±‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B
 

Q: 33) math.h ƒ‹[ƒ`ƒ“‚ªŒ©‚‚©‚è‚Ü‚¹‚ñBƒvƒƒOƒ‰ƒ€‚ðƒRƒ“ƒpƒCƒ‹‚µ‚Ä‚¢‚é
‚Ì‚Å‚·‚ªA log(), sin() ‚È‚Ç‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB‚¾‚ê‚©A•‚¯‚āI

A:

‰ñ“š: ³‚µ‚¢ŠÖ”‚ðŽg—p‚µ‚½ƒvƒƒOƒ‰ƒ€‚ðƒRƒ“ƒpƒCƒ‹‚µ‚Ä‚¢‚éê‡A“KØ‚ȃ‰
ƒCƒuƒ‰ƒŠ
    ‚ðƒvƒƒOƒ‰ƒ€‚Ɂw•K‚¸xƒŠƒ“ƒN‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB”’l‰‰ŽZŠÖ”‚ðŽg
‚¤‚É‚Í
    ƒŠƒ“ƒNŽž‚É libm.a ‚ðƒCƒ“ƒNƒ‹[ƒh‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
Œ¾‚¢Š·‚¦
    ‚é‚Æ LDFLAGS ‚É -lm ‚ðAcurses ŠÖ”‚Å‚Í -lcurses ‚ð dbm ŠÖ”‚Å‚Í
 -ldbm ‚È‚Ç
    ‚ð‰Á‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B

    •’ʂ́AƒIƒuƒWƒFƒNƒg‚ÌŒã‚É -lm ƒtƒ‰ƒO‚ð’u‚«‚Ü‚·B

        % gcc -lm -o math_prog math_prog.c

    ‚́A‚Ü‚¸‚¢‚â‚è•û‚Ő”’l‰‰ŽZŠÖ”‚͉ðÍ‚Å‚«‚Ü‚¹‚ñB‚»‚¤‚Å‚Í‚È‚­A

        % gcc -o math_prog math_prog.c -lm

    ‚Æ“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 34) GCC ‚̃}ƒjƒ…ƒAƒ‹‚Í‚ ‚è‚Ü‚·‚©H‚à‚µ‚ ‚é‚È‚çA‚Ç‚±‚ÅŽè‚É“ü‚ê‚ç‚ê‚Ü
‚·‚©H‚Ü‚½A‚Ç‚¤‚·‚ê‚Έóü‚Å‚«‚Ü‚·‚©H

A:

‰ñ“š: ƒ}ƒjƒ…ƒAƒ‹‚Í sunsite ‚Ì GCC ƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚è‚Ü‚·B
        sunsite.unc.edu:/pub/Linux/GCC/gcc-man.tar.z

    ‚±‚̃tƒ@ƒCƒ‹‚Í cccp.1, cpp.1, g++.1, gcc.1 ‚Ì man ƒtƒ@ƒCƒ‹‚ðŠÜ‚ñ‚Å
‚¢‚Ü‚·B

    ‚à‚µA‚ ‚È‚½‚ªˆóü‚³‚ꂽ‚·‚×‚Ä‚Ì GCC ‚̃}ƒjƒ…ƒAƒ‹‚ð•K—v‚Æ‚µ‚Ä‚¢‚é‚È
‚çA
    GCC ‚ª’u‚¢‚Ä‚ ‚é‚Ç‚±‚©‚̃[ƒJƒ‹ ftp ƒTƒCƒg‚â‚»‚Ì‘¼‚Ì FSF ‚Ì“s‡‚Ì
‚æ‚¢‚Æ‚±
    ‚ë‚©‚ç‚·‚ׂẴ\[ƒX‚ðŽè‚É“ü‚ê‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñBGCC ‚̃\[ƒX‚©‚ç
 TeX Ӂ
    ‚̃}ƒjƒ…ƒAƒ‹‚ðì‚é•K—v‚ª‚ ‚è‚Ü‚·B

    ‚à‚µA‚ ‚È‚½‚ªƒ‰ƒCƒuƒ‰ƒŠ‚̃tƒ@ƒ“ƒNƒVƒ‡ƒ“ƒR[ƒ‹‚̃}ƒjƒ…ƒAƒ‹‚ð’T‚µ‚Ä
‚¢‚é‚È
    ‚çAglibc ‚Ì‘S‚Ẵ\[ƒX‚ª•K—v‚Å‚·B‚±‚ê‚́AGCC ‚̃\[ƒX‚ª‚ ‚é ftp 
ƒTƒCƒg
    ‚Æ“¯‚¶êŠ‚É‚ ‚è‚Ü‚·BÄ‚сAƒ}ƒjƒ…ƒAƒ‹‚ðì¬‚·‚邽‚ß‚É TeX ‚ª•K—v‚Æ
‚È‚è‚Ü
    ‚·B
    ‚±‚̃}ƒjƒ…ƒAƒ‹‚Å’ˆÓ‚·‚ׂ«“_‚Í 900 ƒy[ƒW‚Ì‘å‚«‚³‚Å‚ ‚邱‚Æ‚Å‚·B
    Œn}‚ðŽæ‚Á‚Ä‚¨‚«Advi ƒtƒ@ƒCƒ‹‚Æ‚µ‚ăIƒ“ƒ‰ƒCƒ“‚Å•Û‘¶‚µ‚Ä‚¨‚¢‚Ä‚­‚¾
‚³‚¢B

    wî•ñxƒtƒ@ƒCƒ‹‚©‚ç—ˆ‚é‚Ç‚¿‚ç‚̃pƒbƒP[ƒW‚à Gnu info ‚â
 xinfo, emacs ‚ðŽg
    —p‚µ‚ÄŒ©‚邱‚Æ‚ª‚Å‚«‚Ü‚·Bwî•ñxƒtƒ@ƒCƒ‹‚͏î•ñƒVƒXƒeƒ€‚ÉŠî‚¢‚½
ƒnƒCƒp[
    ƒeƒLƒXƒgŒ`Ž®‚Å‚·B
 

Q: 35) "Undefined symbol _bsd_ioctl" ‚̃ƒbƒZ[ƒW‚ªo‚Ü‚µ‚½B‚Ç‚¤‚·‚ê‚Î
‚¢‚¢‚Ì‚Å‚·‚©H

A:

‰ñ“š: ƒŠƒ“ƒNŽž‚É /usr/lib/libbsd.a ‚Æ‚¢‚¤ bsd ‚̃‰ƒCƒuƒ‰ƒŠ‚ðƒCƒ“ƒNƒ‹[
ƒh‚·‚邱
    ‚Æ‚ð–Y‚ê‚Ä‚¢‚Ü‚·B

    ‰ðŒˆ•û–@: Makefile ‚Ì LDFLAGS s‚É -lbsd ƒtƒ‰ƒO‚ð‰Á‚¦‚Ä‚­‚¾‚³‚¢Bi
LDFLAGS 
    s‚ª–³‚¢ê‡‚ÍŽè“®‚ʼnÁ‚¦‚Ä‚­‚¾‚³‚¢j
 

Q: 36) ƒo[ƒWƒ‡ƒ“ƒAƒbƒv‚·‚é‚Æ‚«‚́A/usr/lib/gcc-lib/i[34]86-linux/
<old-version> ‚©‚çŒÃ‚¢‚à‚Ì‚ðŽæ‚菜‚­‚±‚Æ‚Í‚Å‚«‚Ü‚·‚©H

A:

‰ñ“š:  ‚¦‚Á‚ƁA‚à‚µAgcc ‚̃eƒXƒgƒo[ƒWƒ‡ƒ“‚Å‚È‚¯‚ê‚΁AƒfƒBƒŒƒNƒgƒŠ‚©‚ç
ŒÃ‚¢
       ƒo[ƒWƒ‡ƒ“‚ðŽæ‚菜‚­‚±‚Æ‚Í‘S‚­–â‘è‚ ‚è‚Ü‚¹‚ñB

         "gcc -V <old-version>" 

       ‚Æ‚·‚邱‚ƂŌ¢ƒo[ƒWƒ‡ƒ“‚Ì GCC ‚ŃRƒ“ƒpƒCƒ‹‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·
B
 

Q: 37) w•‚¯‚āxlibipc.a ‚Í‚Ç‚±‚Å‚·‚©Hdosemu 0.49 ‚Ì‚½‚ß‚É•K—v‚È‚Ì‚Å
‚·‚ªB

A:

‰ñ“š: Inter Process Communication (IPC) ŠÖ”‚Í•W€‚Ì libc >=
 libc.so.4.4.1 ‚É
    ‚ ‚è‚Ü‚·B‚à‚µA‚ ‚È‚½‚ªŽ‚Á‚Ä‚¢‚é libc ‚ª libc.so.4.4.1 ˆÈã‚¾‚Á‚½
ê‡‚́A
    -lipc ‚Í•K—v‚ ‚è‚Ü‚¹‚ñBMakefile ‚©‚ç‚»‚̍s‚ðÁ‚µ‚Ä‚­‚¾‚³‚¢B‚à‚µA
    libc.so.4.4.1 –¢–ž‚¾‚Á‚½ê‡‚́Aƒ‰ƒCƒuƒ‰ƒŠ‚ðƒo[ƒWƒ‡ƒ“ƒAƒbƒv‚µ‚Ä‚­
‚¾‚³‚¢B
 

Q: 38) XXX ‚ªƒRƒ“ƒpƒCƒ‹‚Å‚«‚Ü‚¹‚ñB_daemon ‚ª–¢’è‹`‚É‚È‚è‚Ü‚·B‚¾‚ê‚©•
‚¯‚āII

A:

‰ñ“š: daemon() ‚Í libbsd.a ‚É“ü‚Á‚Ä‚¢‚Ü‚·B-lbsd ‚ð Makefile ‚Ì
 LDFLAGS s‚É
    ‰Á‚¦‚Ä‚­‚¾‚³‚¢B
 

Q: 39) w•‚¯‚āxar ‚ƃ‰ƒCƒuƒ‰ƒŠ‚ɂ‚¢‚Ä‚Å‚·BƒVƒ“ƒ{ƒ‹‚̓‰ƒCƒuƒ‰ƒŠ‚É‚ 
‚é‚Ì‚Å‚·‚ªAƒŠƒ“ƒN‚ÉŽ¸”s‚µ‚Ü‚·B

A:

‰ñ“š: ‚µ‚΂µ‚Î `ranlib' ‚ª³‚µ‚¢ƒe[ƒuƒ‹‚ðì‚ç‚È‚¢‚Æ‚¢‚¤ `ar'‚̃oƒO‚Å‚·
B
    ˆÈ‰º‚̃Rƒ}ƒ“ƒh‚ð‘Å‚¿ž‚߂Γ®‚­‚悤‚É‚È‚è‚Ü‚·B

        % ar -dv libfoo.a __.SYMDEF
        % ranlib libfoo.a
 

Q: 40) •‚¯‚āI‰SŽÒ‚È‚Ì‚Å‚·‚ªA"libc.so.4: incompat. minor ver no."
‚Æ‚¢‚¤ƒ[ƒjƒ“ƒOƒƒbƒZ[ƒW‚ª‚łč¢‚Á‚Ä‚¢‚Ü‚·B

A:

‰ñ“š: ‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚̃o[ƒWƒ‡ƒ“ƒAƒbƒv‚ª•K—v‚Å‚·BŽ¿–â 12 ‚Æ 3 ‚ÌŠT—v‚ð
Œ©‚Ä‚­‚¾
    ‚³‚¢B
 

Q: 41) c ‚̃vƒƒOƒ‰ƒ€‚̃Rƒ“ƒpƒCƒ‹‚Ì‘O‚Ƀ`ƒFƒbƒN‚·‚é `lint' ‚Í‚Ç‚±‚Å‚·‚©
H

A:

‰ñ“š: `lint' ‚̂悤‚ȃvƒƒOƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚È‚à‚Ì‚Í‚ ‚è‚Ü‚¹‚ñB‚»
‚Ì‘ã‚í‚è
    ‚ɃvƒƒOƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚·‚é‚É‚Í gcc ‚̉ߓx‚̃IƒvƒVƒ‡ƒ“‚ðŽg‚¢‚Ü‚·Bƒ}
ƒjƒ…ƒAƒ‹
    ‚ɏ‘‚¢‚Ä‚ ‚é‚¢‚ë‚¢‚ë‚ȃIƒvƒVƒ‡ƒ“‚ðŒ©‚Ä‚­‚¾‚³‚¢B

    Å‚àŒø‰Ê“I‚È‚à‚͈̂ȉº‚̃IƒvƒVƒ‡ƒ“‚Å‚·B

        % gcc -Wall foo.c

    ‚±‚̃IƒvƒVƒ‡ƒ“‚Í‹N‚±‚é‚Å‚ ‚낤‰Â”\‚ÈŒÀ‚è‚̃[ƒjƒ“ƒO‚ðo—Í‚µ‚Ü‚·B
 

Q: 42) Ž„‚̃vƒƒOƒ‰ƒ€‚Å sgtty.h ‚ª•K—v‚È‚Ì‚Å‚·‚ªA‚Ç‚±‚É‚ ‚é‚Ì‚Å‚µ‚傤
‚©H

A:

‰ñ“š: sgtty.h ‚Í /usr/include/bsd ƒfƒBƒŒƒNƒgƒŠ‚É“ü‚è‚Ü‚·BƒRƒ“ƒpƒCƒ‹Žž
‚É
    Makefile ‚Ì CFLAGS s‚Ɉȉº‚̍s‚ð’ljÁ‚µ‚Ä‚­‚¾‚³‚¢B

                -I/usr/include/bsd
 

Q: 43) SIGSEGV ‚É‚æ‚éƒRƒAƒtƒ@ƒCƒ‹‚̍쐬‚ð‹ÖŽ~‚µ‚½‚èA‹–‰Â‚µ‚½‚è‚·‚é‚É‚Í
‚Ç‚¤‚·‚ê‚΂悢‚Ì‚Å‚µ‚傤‚©H

A:

‰ñ“š: ‚±‚ê‚Í–{“–‚Í GCC ‚ÌŽ¿–â‚Å‚Í‚È‚­Ashell ‚ÌŽ¿–â‚È‚Ì‚Å‚·‚ªA‚È‚É‚ª‚È
‚ñ‚Å‚à
    Š®‘S‚ɃRƒAƒtƒ@ƒCƒ‹‚ðì‚ç‚È‚­‚·‚é‚É‚Í

    C-shell `csh' (tcsh) ‚̏ꍇ
                        % limit core 0
    Bourne shell `sh' (bash) ‚̏ꍇ
                        % ulimit -c 0

    ‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B

    ƒVƒOƒiƒ‹ 11 (SEGV) ‚ðŽó‚¯Žæ‚Á‚½Žž‚̂݁AƒRƒAƒtƒ@ƒCƒ‹‚ðì‚é‚悤‚É‚·‚é
‚É‚Í

    C-shell `csh' (tcsh) ‚̏ꍇ
                        % limit core unlimited
    Bourne shell `sh' (bash) ‚̏ꍇ
                        % ulimit -c unlimited

    ‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 44) "can't load dynamic linker `/lib/ld.so'" ‚̃ƒbƒZ[ƒW‚̈Ӗ¡‚͉½
‚Å‚·‚©H

A:

‰ñ“š: ‚±‚ê‚́A“®“IƒŠƒ“ƒJ^ƒ[ƒ_‚ªƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ
‚Ä‚¢‚Ü
    ‚·BŽ¿–â 4 ‚Ì libld.so ‚Ì“üŽè•û–@‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 45) -O2 ‚Æ -O6 ‚Å‚ÌŒø—¦‚̈Ⴂ‚͉½‚Å‚·‚©H

A:

‰ñ“š:  Œ»Ý‚Í‚ ‚è‚Ü‚¹‚ñB‚à‚µA‚ ‚È‚½‚ª i386/i486 ‚̃zƒXƒg / ƒ^[ƒQƒbƒg
‚Æ‚µ‚Ä 
       GCC ‚̃\[ƒXƒR[ƒh‚ðŒ©‚Ä‚¢‚é‚È‚çA-Ox ‚Å x>2 ‚̏ꍇ‚Í“¯‚¶‚à‚Ì‚Å
‚ ‚é
       ‚±‚Æ‚ª‚í‚©‚é‚Å‚µ‚傤BŽÀÛAMakefile ‚Å x>2 ‚ðŽg—p‚·‚邱‚Ƃ͈«‚¢
‚±‚Æ
       ‚Å‚·B‚È‚º‚È‚çAGCC ‚ª«—ˆ -O3 ‚Æ‚¢‚Á‚½Å“K‰»ƒIƒvƒVƒ‡ƒ“‚ðƒCƒ“ƒe
ƒ‹i‚Ì
       ƒ`ƒbƒvj‚ðƒ^[ƒQƒbƒgÌ—p‚·‚é‚©‚à‚µ‚ê‚È‚¢‚½‚߁A‚»‚̍œK‰»‚É‚æ‚Á‚Ä
o—Í
       ‚³‚ê‚éƒR[ƒh‚ª”j‰ó‚³‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
 

Q: 46) oŠ•s–¾‚̃oƒCƒiƒŠ‚ªƒgƒƒC‚Ì–Ø”n‚̂悤‚ȃEƒBƒ‹ƒX‚ÉŠ´õ‚µ‚Ä‚¢‚é‚©
‚Ç‚¤‚©ƒ`ƒFƒbƒN‚·‚é•û–@‚́H

A:

‰ñ“š: Å‰‚ɁA‚à‚µA‚ ‚È‚½‚̃}ƒVƒ“‚ªƒEƒBƒ‹ƒX‚ÉŠ´õ‚µ‚Ä‚¢‚é‚©S”z‚È‚ç‚Î
A“®‚©‚³
    w‚È‚¢x‚±‚Æ‚Å‚·i­‚È‚­‚Æ‚à root ‚ł́jB‚»‚µ‚āAƒ\[ƒX‚ðŒ©‚Â‚¯‚Ä
ƒŠƒRƒ“ƒp
    ƒCƒ‹‚µ‚Ä‚­‚¾‚³‚¢B‘¼‚Ì•û–@‚Æ‚µ‚ẮA"string <filename> | less" ‚Æ
    “ü—Í‚·‚邱‚Ƃʼn½‚ç‚©‚̏î•ñ‚ªŽè‚É“ü‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB‚à‚µA“®‚©‚·“q
‚ɏo‚é
    ‚È‚ç‚΁A‰½‚©•s‰¸‚È“®‚«‚ð’T‚邽‚ß‚É "strace" ‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
 

Q: 47) C ƒ‰ƒCƒuƒ‰ƒŠ‚̃\[ƒX‚Í‚Ç‚±‚É‚ ‚è‚Ü‚·‚©H‚Ü‚½ƒŠƒrƒ‹ƒh‚·‚é•û–@‚́H

A:

‰ñ“š: ˆÈ‰º‚̃TƒCƒg‚̃‚ƒWƒ…[ƒ‹‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

         tsx-11.mit.edu:/pub/linux/pagkages/GCC/libc-4.5.8.tar.gz

    ‚à‚µA‹¤—Lƒ‰ƒCƒuƒ‰ƒŠ‚ª—~‚µ‚¢‚È‚çAdll ƒc[ƒ‹ƒpƒbƒP[ƒW‚ª•K—v‚É‚È‚é
‚Å‚µ‚å
    ‚¤BŽ¿–â (5) ‚Ì“üŽèêŠ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
 

Q: 48) FD_* ‚Ì’è‹`‚Í‚Ç‚±‚É‚ ‚è‚Ü‚·‚©H

A:

‰ñ“š: <sys/time.h> ‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚āAƒ}ƒNƒ‚à’ljÁ‚³‚ê‚é‚Å‚µ‚傤B
 

Q: 49) -g ƒIƒvƒVƒ‡ƒ“•t‚ŃŠƒ“ƒN‚µ‚½‚çA___fpu_control ‚Æ ___setfpucw ‚ª
–¢’è‹`‚¾‚ÆŒ¾‚í‚ê‚Ä‚µ‚Ü‚Á‚½‚Ì‚Å‚·‚ªB /usr/lib/crt0.o Undefined symbol
___fpu_control reference from text segment. /usr/lib/crt0.o Undefined
symbol ___setfpucw reference from text segment. ‚È‚É‚ªˆ«‚¢‚Ì‚Å‚µ‚傤‚©
H

A:

‰ñ“š: libc.sa ‚Ì crt0.o ‚Æ libc.sa ‚Æ libc.a ‚ðÅ‹ß‚Ì linux ‚Ì libc ‚É
ƒAƒbƒvƒf
    [ƒg‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚µ‚©‚µAŒÃ‚¢ libg.a ŠÖŒW‚ªŽc‚Á‚Ä‚µ‚Ü‚¢‚Ü‚·
B

    ‚à‚µA–{“–‚ɃfƒoƒbƒOƒ‰ƒCƒuƒ‰ƒŠ‚É‚æ‚éƒXƒ^ƒeƒBƒbƒNƒoƒCƒiƒŠi-g ‚̈Ӗ¡
‚·‚éj
    ‚ª•K—v‚È‚ç‚΁Alibg.a ‚ð“üŽè‚µ‚ăCƒ“ƒXƒg[ƒ‹‚·‚ׂ«‚Å‚·B
    ‚±‚ê‚ɂ‚¢‚Ä‚ÍŽ¿–â (15) ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
 

Q: 50) ‚킽‚µ‚̃‰ƒCƒuƒ‰ƒŠ‚âƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð‘Û‰»‚·‚éƒc[ƒ‹‚Í‚Ç‚±‚ÅŽè
‚É“ü‚è‚Ü‚·‚©H

A:

‰ñ“š: ˆÈ‰º‚̃tƒ@ƒCƒ‹‚ðŽè‚É“ü‚ê‚Ä‚­‚¾‚³‚¢B
        sunsite.unc.edu:/pub/Linux/utils/nls/cat-pack.tar.gz
    ‚»‚µ‚āAŽwŽ¦‚ɏ]‚Á‚Ä‚­‚¾‚³‚¢B

    ƒ†[ƒU‚ªì‚Á‚½‚¢‚ë‚¢‚ë‚ÈŒ¾Œê‚É‚æ‚éƒJƒ^ƒƒO‚͈ȉº‚Ì‚Æ‚±‚ë‚ÅŒ©‚‚¯‚ç
‚ê‚Ü‚·B
        sunsite.unc.edu:/pub/Linux/utils/nls/catalogs
    ‚»‚ê‚ç‚ð“ü‚é‚ׂ«ƒfƒBƒŒƒNƒgƒŠ‚É“±“ü‚µ‚Ü‚·B

    ’‚P: ‘Û‰»ƒc[ƒ‹‚Ɗ֐”‚̓o[ƒWƒ‡ƒ“ 4.4.4i—Ⴆ‚΁Alibc.so.4.5.x 
ˆÈãj‚Å
    Žg—p‰Â”\‚Å‚·B

    ’‚Q: linux ‚É‚¨‚¯‚éw‘Û‰»x‚̏󋵂͒x‚ê‚Ä‚¨‚èAlinux pl14 ‚Å 
    Latin-1/ISO-8859-1 ‚̃Lƒƒƒ‰ƒNƒ^[ƒZƒbƒg‚ª‚â‚Á‚ƃTƒ|[ƒg‚³‚ꂽ‚悤‚È
ó‘Ô‚Å
    ‚·B
 

Q: 51) `mkimage' ‚Æ‚¢‚¤ DLL ƒc[ƒ‹‚ª libgcc ‚Ì‚È‚©‚ÉŒ©‚‚©‚è‚Ü‚¹‚ñB•
‚¯‚Ä‚­‚¾‚³‚¢B

A:

‰ñ“š: libc.so.4.5.x ˆÈã‚ł́Alibgcc ‚Í‚·‚Å‚É‹¤—L‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
    ‚µ‚½‚ª‚Á‚āAmkimage ‚Ì `-lgcc' ‚Ì•”•ª‚ðˆÈ‰º‚̂悤‚É’u‚«Š·‚¦‚È‚¯‚ê‚Î
‚È‚è‚Ü‚¹
    ‚ñB

        `gcc -print-libgcc-file-name`

    ’Z‚­‚·‚é‚Æ

        `gcc --print`

    ‚Å‚·BƒoƒbƒNƒNƒH[ƒg‚Í•K—v‚ ‚è‚Ü‚¹‚ñB
 

Q: 52) "__NEEDS_SHRLIB_libc_4 multiply defined" ‚̃ƒbƒZ[ƒW‚ðo‚È‚¢‚æ
‚¤‚É‚·‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚Ì‚Å‚µ‚傤‚©H

A:

‰ñ“š: libc.sa.4.5.x ˆÈã‚Å‚Í libgcc ‚Í‹¤—L‚Å‚Í‚È‚­‚È‚Á‚Ä‚¢‚Ü‚·B‚µ‚½‚ª
‚Á‚āA
    /usr/lib/libgcc* ƒtƒ@ƒCƒ‹‚ð‚·‚×‚Äíœ‚µw‚È‚¯‚ê‚΁x‚È‚è‚Ü‚¹‚ñB

        % rm -f /usr/lib/libgcc*
 

Q: 53) QMAGIC ‚Æ‚¢‚¤‚̂́Aˆê”Ê“I‚É‚Í‚Ç‚¤‚¢‚¤‚à‚Ì‚Å‚·‚©H

A:

‰ñ“š: QMAGIC ‚̓Xƒ^ƒ“ƒ_[ƒh‚Ì a.out iZMAGIC ‚Æ‚¢‚Á‚½j‚̂悤‚ÈŽÀsŒ`Ž®
‚̃tƒH[
    ƒ}ƒbƒg‚Å‚·B‚µ‚©‚µAƒ}ƒbƒsƒ“ƒO‚³‚ê‚È‚¢Å‰‚̃y[ƒW‚É’u‚©‚ê‚Ü‚·B‚±
‚Ì‚±‚Æ‚É
    ‚æ‚èA0-4096 ‚͈̔͂Ń}ƒbƒsƒ“ƒO‚³‚ê‚È‚¢ƒgƒ‰ƒbƒv‚Æ‚µ‚ÄŠÈ’P‚Ɂw‚Ü‚Á‚½
‚­x“¯‚¶
    •û–@‚ÅŽÀŒ»‚Å‚«‚Ü‚·B‚»‚ê‚ɑ΂µA‚ ‚È‚½‚̃oƒCƒiƒŠ‘¤‚ւ̉e‹¿‚Í‚Ù‚Æ‚ñ
‚Ç‚ ‚è‚Ü
    ‚¹‚ñB(~1K)

    /etc/magic ƒtƒ@ƒCƒ‹‚ɐ³‚µ‚­“o˜^‚·‚ê‚΁A‚ ‚È‚½‚Ì `file' ƒRƒ}ƒ“ƒh‚Í
 QMAGIC ƒo
    ƒCƒiƒŠ‚Æ“¯‚¶‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚킽‚µ‚́A‚Ù‚Æ‚ñ‚ǂ̃`ƒƒƒlƒ‹‚É“K
“–‚È
    ƒGƒ“ƒgƒŠ[‚ð”z•t‚µ‚Ä‚¢‚Ü‚·B
 

Q: 54) ‚ǂ̂悤‚É‚·‚ê‚΁AQMAGIC ‚ÌŽÀsƒtƒ@ƒCƒ‹‚⃉ƒCƒuƒ‰ƒŠ‚ðì¬‚Å‚«‚Ü
‚·‚©H

A:

‰ñ“š: QMAGIC ‚ÌŽÀsƒtƒ@ƒCƒ‹‚ðì‚é‚ɂ́AÅV‚Ì `ld' ‚̃oƒCƒiƒŠ‚âƒ\[ƒX‚Ì
ƒpƒbƒ`‚ª
    •K—v‚Å‚·B`binutils-as.tar.gz' ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ª”z•t‚³‚ê‚Ä‚¢‚Ü‚·BŽ¿
–â (6)
    ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

    QMAGIC ŽÀsƒtƒ@ƒCƒ‹‚̍ì‚è•û:

      Makefile ’†‚Ì LDFLAGS s‚Ɉȉº‚Ì•”•ª‚ð’ljÁ‚µ‚Ü‚·B
      
        LDFLAGS = -Wl,-qmagic
      ‚Ü‚½‚Í
        LDFLAGS = -Xlinker -qmagic

    QMAGIC ƒ‰ƒCƒuƒ‰ƒŠ‚̍ì‚è•û:

      ‚²‚ß‚ñ‚È‚³‚¢B`mkimage' ‚ÌŽg‚¢•û‚ª‚¢‚Ü‚¢‚¿‚í‚©‚è‚Ü‚¹‚ñB‚à‚¤­‚µ
‘Ò‚Á‚Ä‚­
      ‚¾‚³‚¢B
 

Q: 55) "warning using incompatable library version xxx" ‚̃ƒbƒZ[ƒW‚ð
o‚È‚¢‚悤‚É‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚·‚©H

A:

‰ñ“š: ‚Í‚¢‚Å‚«‚Ü‚·B
    ‚à‚µA ld.so ‚̃o[ƒWƒ‡ƒ“ 1.4 ˆÈã‚ðŽ‚Á‚Ä‚¢‚é‚È‚çAŠÂ‹«•Ï”‚É
 LD_NOWARN ‚ð
    ’ljÁ‚·‚邱‚ƂсƒbƒZ[ƒW‚ðo‚È‚­‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B’: ’v–½“I‚ȃG
ƒ‰[ƒƒb
    ƒZ[ƒW‚͏o—Í‚³‚ê‚Ü‚·B

    csh (tcsh)‚Å‚Í:
        setenv LD_NOWARN
    sh (bash)‚Å‚Í:
        export LD_NOWARN=1

    ‚Å‚·B

=======================================================================
========

                       ŽÓŽ«: (‡•s“¯)

                                  H.J.Lu
                               Dirk Hohndel
                                David Engel
                              Eric Youngdale
                             Bill Metzenthen
                                Rik Faith
                              Steven S. Dick
                               Bruno Haible
                               Andrew Tefft
                                Kai Petzke
                              Tuomas J Lukka
                             Fergus Henderson
                              Paul Gortmaker
                               Olaf Flebbe
                              ‚»‚µ‚āA‚à‚¿‚ë‚ñ

                              Linus Torvalds

=======================================================================
========

’ˆÓ ‚à‚µA‚ ‚È‚½‚Ì–¼‘O‚ª–³‚­AˆÓ–¡E–³ˆÓ–¡‚É‚©‚©‚í‚炸‰½‚©vŒ£‚µ‚Ä‚¢‚Ä
‚àA
     ‚Ç‚¤‚©A‹C•ª‚ðŠQ‚³‚È‚¢‚Å‚­‚¾‚³‚¢BŽ„‚Ì’P‚È‚éƒ~ƒX‚Å‚·‚̂ŁBŽ„‚É“dŽq
ƒ[ƒ‹‚ð
     ‚­‚¾‚³‚¢BC³‚µ‚Ü‚·‚̂ŁB

=======================================================================
========

‚±‚Ì FAQ ‚ð Linux —p GCC ‚Ì–¾Šm‚ȉñ“š‚Ì•óŒÉ‚É‚·‚邽‚߂ɁA“dŽqƒ[ƒ‹‚É‚æ
‚鎿–â‚ð
 (‚à‚µA‰ñ“š‚à‚ ‚é‚È‚ç‚΁A‚»‚ê‚à) Z³A’ljÁ‚µ‚ÄŽ„‚Ì‚¨Žè“`‚¢‚ð‚µ‚Ä‚­‚¾
‚³‚¢B

                    Mitchum DSouza <m.dsouza@uk.ac.cam.mrc-apu>

-- 
comp.os.linux.announce ‚Ö‚Ì‚²ˆÓŒ©‚Í linux-announce@tc.cornell.edu ‚Ü‚Å
B