  =====================================================================
                 Linux GCC FAQ 1994/02/01 

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

  {  iuhbj (NIFTY-Serve GAA00714)
                                <GAA00714@niftyserve.or.jp>

                   {t 1995/02/11

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

  -------------------- Linux GCC FAQ 1994/02/01  -----------------------------
  0)  FAQ ̍ŐVo[W͂ǂŎɓ܂H
  1) gĂ GCC ̃o[Wmɂ͂ǂ΂łH
  2) GCC,as,ld,ar, ̑̍ŐVł̔zt͂ǂɂ܂H
  3) libc.so,libw.so ̋LCu̍ŐVł͂ǂŌ邱Ƃł܂H
  4) Linux őɂ͂ǂ̂悤ȋLCug܂H
  5) Linux p̋L DLL Cuɂ͂ǂ΂悢̂łH
  6) ȃoCiŝɁC"PLT__oct__FUii" bZ[W󂯎̂͂Ȃ
     łH
  7) vbgz[ XXX  Linux ̃R[h͂NXRpCɂ͂
     ΂悢̂ł傤H
  8) ǂ̂悤ȃV{ Linux  GCC ɂĎIɒ`܂H
  9) RpC isigvecƂʂȃVOiȂǂ́j BSD ̎dlȂɂ
    ǂ΂łH
  10) SIGBUS, SIGEMT, SIGIOT, SIGTRAP, SIGSYS Ȃǂ͂ǂɂ܂H
  11) libhard  libsoft Ƃ͉łH
  12) bZ[W "can't load library: /lib/libxxx.so, Incompatible version" ̈
    ͉łH
  13) 킽̃CuƂĂ傫̂͂ȂłH܂AǂΏȂ
    ܂H
  14) -N tOgƉN܂H܂Aǂg΂̂łH
  15) vÕfobLO͂ǂΎ̂łH
  16) ǂ̃fobJ Linux Ŏg܂H
  17) daemon vOfobO@́H
  18) profiling Ƃ͉łH܂AvO profile ɂ͂ǂ̂悤ɂ
    悢̂ł傤H
  19) AoCiÓIɂ܂͋LCuɃNĂꍇɁA
    ׂ@͂܂H
  20) Linux  LD_LIBRARY_PATH T|[gĂ܂H
  21) ̃vOł /lib/cpp KvłBǂɓꂽ悢̂ł傤
    H
  22) <varargs.h> ͂ǂłH
  23) ̃vOŁA<linux/foo.h> CN[ĥłA邱
    ł܂Bǂɂ̂ł傤H
  24) foo() ֐̓CuɓĂ̂ł傤H
  25) vO XXX  Linux ɈڐAɂ͂ǂ΂łH
  26) gcc/library  foo ŃoO̂łAǂ΂悢̂ł傤H
  27) LCu@\ÓICu傫Ȃ̂͂Ȃł
    H
  28) /usr/lib ɂ .sa t@CƂ͉łH
  29) Linux p̃IuWFNgw C ͂ǂŎɓ܂H
  30) "Internal compiler error: cc1 got fatal signal 11" ̃bZ[ẄӖ͉
    H
  31) libc.lite Ƃ͉łH
  32) Linux ̃Cu SHADOW Password T|[gĂ܂H
    ܂AIEIt͂ǂ΂悢̂łH
  33) math.h [`܂BvO log(), sin() ȂǂgpĂ
    ܂BĂI
  34) GCC ̃}jA͂܂HȂAǂŎɓ܂H
    ܂AǂΈł܂H
  35) "Undefined symbol _bsd_ioctl" ̃bZ[Wo܂Bǂ΂̂ł
    H
  36) o[WAbvƂ́A/usr/lib/gcc-lib/i[34]86-linux/<old-version>
    Â STUFF 菜Ƃ͂ł܂H
  37) wāxlibipc.a ͂ǂłHdosemu 0.49 ̂߂ɕKvȂ̂łB
  38) XXX RpCł܂B_deamon `ɂȂ܂BꂩāII
  39) wāxar  CuɂĂłBV{̓Cuɂ̂ł
    ANɎs܂B
  40) āIS҂Ȃ̂łA "libc.so.4: incompat. minor ver no." Ƃ[
    jObZ[WłčĂ܂B
  41) c ̃vÕRpC̑OɃ`FbN `lint' ͂ǂłH
  42) ̃vO sgtty.h KvȂ̂łAǂɂ̂ł傤H
  43) SIGSEGV ɂRAt@C~߂葖点肷ɂ͂ǂ΂悢̂
    傤H
  44) "can't load dynamic linker `/lib/ld.so'" ̃bZ[ẄӖ͉łH
  45) -O2  -O6 ̃IvV̈Ⴂ͉łH
  46) os̃oCigC̖ؔn̂悤ȃEBXɊĂ邩ǂ
    `FbN@́H
  47) C Cũ\[X͂ǂɂ܂H܂rh@́H
  48) FD_* ̒`͂ǂɂ܂H
  49) -g IvVtŃNA__fpu_control  ___setfpucw `ƌ
    Ă܂̂łB
  50) 킽̃CuAvP[Vۉc[͂ǂŎɓ܂
    H
  51) `mkimage' Ƃ DLL c[ libgcc ̂ȂɌ܂BĂ
    B
  52) "__NEEDS_SHRLIB_libc_4 multiply defined" ̃bZ[WoȂ悤ɂɂ
    ǂ΂̂ł傤H
  53) QMAGIC Ƃ͈̂ʓIɂ͂ǂ̂łH
  54) ǂ̂悤ɂ΁AQMAGIC ̎st@C⃉Cu쐬ł܂H
  55) "warning using incompatable library version xxx" ̃bZ[WoȂ悤
      邱Ƃ͂ł܂H

  -------------------------------------------------------------------------------

  0)  FAQ ̍ŐVo[W͂ǂŎɓ܂H

  : ŐVł comp.os.linux.announce ɒIɃ|XgĂAv Linux
      TCgɔztĂ܂BႦ΁A

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

      ̑ GCC, C, C++, g++, Objective-C  FAQ ͑

                  rtfm.mit.edu:pub/usenet/news.answers
      ɂł傤B

  -------------------------------------------------------------------------------

  1) gĂ GCC ̃o[Wmɂ͂ǂ΂łH

  : ȉ̃R}hsĂB
               gcc -v
        Ȃ̎gĂ GCC ̃o[WmFł܂Bi͂̕j
        鎞_Ŏ̃}VŏL̃R}hsƁAȉ̂悤ɕ\
        B
          Reading specs from /usr/lib/gcc-lib/i386-linux/2.5.7/specs
          gcc version 2.5.7

        Ɠ̂Aȏ̃o[WɃAbvO[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ɃRpCꂽ gcc 𑖂点邱Ƃł܂B

  -------------------------------------------------------------------------------

  2) GCC,as,ld,ar, ̑̍ŐVł̔zt͂ǂɂ܂H

  : GCC zť̏ꏊ́Atsx-11.mit.edu  /pub/linux/packages/GCC łB
      ̃~[TCgłlłBׂĂ GCC ̌̍ŐVo[ẂA
      Ō܂B

      i͂̕jĂ鎞_̍ŐV GCC ́Ao[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łŐVo[W
      ƂӖĂ̂ł͂܂BŐV * zt * o[WłB

      Linux GCC ̃eĂlX́AȂ̂߂ɂȂgpł
      ŐVo[WRpC₷悤ɍĂ܂BGCC \[XƂƂ
      zuXNvgȂ̂߂ɗpӂĂ܂B

      AȂRpCȂAŐṼCN[hiwb_jt@
      CKvɂȂł傤Bi͂̕jĂ鎞_̍ŐṼCN[h
      it@Cj́Aȉł܂B
          tsx-11.mit.edu:/pub/linux/packages/GCC/inc-4.5.8.tar.gz

  -------------------------------------------------------------------------------

  3) libc.so,libw.so ̋LCu̍ŐVł͂ǂŌ邱Ƃł܂H

  :  (2) ĂBimage*/tar.z t@CKvłB486 ߂̃C
        [ẂA/pub/linux/packages/GCC/486 Ō܂B

  -------------------------------------------------------------------------------

  4) Linux őɂ͂ǂ̂悤ȋLCug܂H

  : Ok!ɁARpCXg܂B̒ǉ^ύX
      ڂɂ݂ĂB

      ȉɏqׂt@ĆAeCuŋߓĂi܂͓Ă
      񍐂ꂽjt@CłB

      P.S. ȉ̃CumȂ̂ɂ邽߂ɁACue
      lXA܂Cug tools-x.y.tar.z pbP[WɓĂ
      doc/table_description t@CQƂ܂B
      炪ǂŎɓ邩͎ (5) QƂĂB

  ꂪALinux p DLL Cuo^Ăʓ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 Cu̓t[\tgł͂܂BL̃m[gQ
              ĂB

  libsrgp.so  sunsite.unc.edu:/pub/Linux/X11/devel/suit.tpz
  libsuit.so      L tpz t@CɊ܂܂Ă܂BizzĂȂƕ
          Ă܂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 ȏオKvł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       ƃCuł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.6j𓾂 Xaw  DLL Cüꕔ Xaw NCAg
   Mac(TM) CÑXN[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̃CúA𕥂Ȃ΂܂!!
  ڂ͈ȉ̈pǂłB

  ------

  Metro Link Ђ́A199 h Linux p OSF/Motif 1.2.2 ̊Sȃ^C
  JVXe񋟂܂B

  KvȂ:
      Linux 0.99pl4 ȏ (݂ 0.99pl12  OK)
      XFree86 1.2 ȏ (1.3  OK)
      libc 4.3.3 ȏ (libc 4.4  OK)

  ܂ł邩:

  ^C:
      1) Motif EBhE}l[W (mwm)
      2) L motif Cu (libXm.so.1.2.2)
      3) OSF  net  Motif ̃f

  Jc[:
      1) L + ÓI Motif Cu
      2) ÓI Mrm  Uil Cu
      3) UIL RpC
      4) Motif wb_Cu
      5) Motif t@NVR[̃}jA
      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
  dbԍ (305) 970-7353AFAX ԍ (305) 970-7351A
  dq[ 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
  ==============================================================================

  -------------------------------------------------------------------------------

  5) Linux p̋L DLL Cuɂ͂ǂ΂悢̂łH

  : tsx-11.mit.edu Aȉ̃t@CɓăCXg[ĂB
          /pub/linux/packages/GCC/src/tools-2.10.tar.z
        OI doc TufBNg README.tr t@CǂłB
        ̓w͂ɂ肾L DLL 邱Ƃł悤ɓǂ݂₷A
        o邩̂ƂڂĂ܂B

        AȂ README.ps t̐V README.tr Aꂢ
        |XgXNvgo[W~Ȃ΁A README.tr ȂȂ
        ȂȂł傤BAgroff wKxCXg[Ȃ΂Ȃ܂
        Bdoc TufBNgŁAR}h `make README.ps' s邾ŏ\
        łB

        ** m[g: o[WςĂ邩܂B

  -------------------------------------------------------------------------------

  6) ȃoCiŝɁC"PLT__oct__FUii" bZ[W󂯎̂͂Ȃ
     łH

  : 炭AȂĂ libc.so ̃o[WÂA^܂́A
        o[W `ld' găvORpCł
        B
        @́Atsx-11.mit.edu  /pub/linux/package/GCC/binutils.tar.z ̒
        Vo[W̃oCi[eBeBɓ邱ƂłB

  -------------------------------------------------------------------------------

  7) vbgz[ XXX  Linux ̃R[h͂NXRpCɂ͂
     ΂悢̂ł傤H

  : gcc ̃\[XR[hĂƉ肵܂B́AGCC  INSTALL t@
      C̏ŗł܂B
      vbgz[ XXX  `configure --target=i386-linux-linux --host=XXX'
      Ƃ邱Ƃɂ `make' ܂A𑱂܂B
      Linux ̃CN[ht@CJ[l̃CN[ht@C
      tsx-11.mit.edu ɂ /pub/linux/packages/GCC/src ̃\[XNXRp
      CNXJ邱ƂKvȂƂɋCÂł傤B

      linux }ṼR[h邽߂ Sparc (Sun) p̃NXRpC̍쐬
      ܂BȒPȕ@łBłɎgĂ linux }VgĂ HLU
      ɂăRpCꂽlinux CugpȒPȕ@łB
      ́w͂ȁxAhoCX́A̃RpCŎgp GNU  make
      (gmake) ɓ邱ƂłBioCi[eBeB gas  Sun 
      make l Makefiles.linux Ǝsł傤)

      7.1) ł Sun ̕WCXg[pXƂ /usr/local/bin ɓ gcc
         o[W 2.4.5 Ɖ肵܂BȂ킿ARpC
         /usr/local/lib/gcc-lib ɂ܂B

         ŏ́A ȉ̂悤 linux L̃fBNg܂B
         iԃfBNgKv邩܂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) ϐݒ肷鎖ɂApXł܂ȂĂ悭Ȃ܂B
         .login  .cshrc t@CɃZbgĂBl DLL Ȃǂ̃NXR
         pĈ߂ l-ar, l-ranlib gKvł傤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 ₻̑̃TufBNg̓eƂāwׂẮx
         linux L̃wb_t@CĂB${LBINS}../include z
         wmFxĂBwb_t@C݂̍菈͎(2)A(23)Ă
         BȂ́AꂼɂĐVJ[l[XȂ΂Ȃ܂
         B

          linux }VAsun ֓]̘b܂傤B

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

         ACN[ht@CƃJ[l̃\[XɓKv܂B
          (2) ĂBWJKv܂B
         āAlimits.h, varargs.h, stdargs.h ̂悤 gnu ̓ʂȃt@C
         KvɂȂł傤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Ȃ̓NXAZuƃJWJARpCȂ΂
         ܂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ǂœWJĂB

      7.3.1) oCi[eBeB̃fBNg binutils-1.9l.3 ̒:
          Makefile.linux GfBbgāAbindir `̍sĂB

                  bindir=${LBINS}

          āAȂ̃}Vȉꍇ "sun4"j̓KȃubNт܂B

              HOST_ROOT=${LBINS}..

          0.99pl12 (Ԃ񂻂ȏ̃xł) ̂߂a.out.h  page.h fB
          NgɃRs[AMISCFLAGS ̒Ɋ܂܂Ȃ΂ȂȂł傤B
          āAJgoCi[eBeB̃fBNgňȉ̂Ƃs
          ĂB

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

          āAMakefile.linux ҏWAK MISCFLAGS ̃C -I 
          ĂB

          āAsĂB

              % make -f Makefile.linux archpfx= install

          linux  ar, ranlib [eBeBƂāAl-ar, l-ranlib s邱
          ł悤ɂ邽߂ɁAȉ̂ƂsĂB(͌l
          ${HOME}/bin fBNg 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 ̎ *******
          AZufBNg gas-1.38.1l.1 ̒:
          makefile.linux ҏWAȉǂœKȍsύXĂB

              LINUX_INCDIR=

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

          āAłłB(̃[jOłł傤)

              % make -f makefile.linux

           NXAZũoCit@C蓮ŃRs[ĂB

              % cp a386 ${LBINS}as

          ******* gas-2.2 iȏj̎ *******

          AZufBNgňȉ̂ƂsĂB

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

      7.3.3) ŌɈȉ̓̃NsĂB

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

      7.4) āAȂ Sun  GCC \[XfBNgɓWJɂ͈ȉ̂
         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 Cu쐬ɃG[ŏI邩܂񂪁AĂ
        B]݂͑ɃNXRpC̃oCiłB

      7.5) ȏ̍ƂIAK؂ȏꏊɃRs[܂B

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

        OuƂăRpC bin fBNgɃRs[AȒPɂǂiƂ
         ~/binjɃN܂B

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

        7.6) Ȃ linux }V烉Cuo܂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ȂɂRpCĂ݂ĂBpbP[Wɏ
           Ă邽̂悢Ƃ̂ŁAȉ̂ƂĂ݂܂傤B
           iȂ ${HOME}/bin ɃZbgpXƉ肵܂Bj

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

        7.8) AL DLL ŃNXRpCȂ΁Aȉ̂̂ɓ
           Ȃ΂Ȃ܂B

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

           NXo[W̃RpĈ߂ɗpӂꂽ tools TufBNg
            Makefile.cross gĂB Makefile.cross ̍ŏ̕ȉ
           ̂悤ɕύXĂB

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

           Ō BINDIR ̒`ύX܂B킽 ${LBINS}../dll/bin Zbg
           Ă܂B́AȂ̂߂ ${LBINS}../dll/jump 쐬邱Ƃ
           Ȃł傤BāA

          % make -f Makefile.cross install

           sׂłB

  -------------------------------------------------------------------------------

  8) ǂ̂悤ȃV{ Linux  GCC ɂĎIɒ`܂H

  : V{́A`linux', `__unix__', '__i386__', `__linux__', `__unix',
      `__i386', `__linux' łB
      Xg̓RpCɂ gcc  -v tOgƂŕ\܂B

      P.s RpCʂăvO "linux" ͎Iɒ`܂BPOSIX 
      Ă܁wxB__linux__ ̑ƂăIy[eBOVXe ̂
      ȓʂȃRpCvOĝׂłB__linux__  POSIX ɏ
      Ă܁wxB

      ̂Ƃ́AȂ linux ̓ʂȃR[h̉ނƂł邱ƂӖ
      Ă܂BiႦ΁j

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

      Makefile ɒ`ʂȉȂėǂ̂łB

      Ȃ́At@CɂȂg̒`邾łB

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

  -------------------------------------------------------------------------------

  9) RpC isigvecƂʂȃVOiȂǂ́j BSD ̎dlȂɂ
    ǂ΂łH

  : vO -I/usr/include/bsd ăRpCA-lbsd ă
      N܂BāAmakefile  CFLAGS s -I/usr/include/bsd A
      LDFLAGS s -lbsd ǉ܂BAȂ BSD `̃VOi̓
      KvȂ΁A-D__USE_BSD_SIGNAL ǉKv́w܂xB́A
      -I/usr/include/bsd gƂɁAIɒǉ܂B

  -------------------------------------------------------------------------------

  10) SIGBUS, SIGEMT, SIGIOT, SIGTRAP, SIGSYS Ȃǂ͂ǂɂ܂H

  : Linux  100% POSIX Rp`łA POSIX ̃VOił͂
      BȒPȕ@ƂẮÃVOi SIGUNUSED ōĒ`邱Ƃ
      B /usr/include/bsd/signal.h ̒`ĂB

      ȂÃVOiȂƂAPOSIX Ɂw]xƂoĂ
      ׂłB SIGUNUSED  #define ɁAVvO
      ȉ̂悤ɂׂłB

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

      SIGSYSiSIGBUS lɁj̎gpKvȃ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\ɕނ邱Ƃł܂
      łBiv邱Ƃɂ肱̃VOi͒񋟂ꂽ
      񂪁A񋟂Ƃ͎̎ؖA񋟂ɊւĂ̐Lq
      Ȃ΂Ȃ܂B

  -------------------------------------------------------------------------------

  11) libhard  libsoft Ƃ͉łH

  : ́AlG~[V[`̃CułBiႦ 387
      ̂悤ȁjlZsn[hEFAĂȂ hard Â悤ȃn
      [hȂȂ琔lZ̃G~[Vs soft I܂B

      AݔzzĂ Linux gpĂȂ΁ÃCu͕Kv
      w܂xBlZG~[V̓J[lxŃT|[gĂ
      BiȂ킿AAgȂA`make config' ɂJ[lꂽ
      g܂Bj
       387 ͎d邱Ƃł܂BA/libm.so.4.x.y 
      /lib/libm.so.4 NĂȂASɏƂł邩܂B

  -------------------------------------------------------------------------------

  12) bZ[W "can't load library: /lib/libxxx.so, Incompatible version" ̈
    ͉łH

  : LCuWĂƁAvOsɃNbVN
      悤ɂȂAł肵܂B͂肳邽߂ɁAo[W
      ɂĕނKv܂BႦ΁At@NVR[܂
      ςA܂͖ȂĂ܂ꍇȂǂłB

         CǔĂі - libc.so.4.3.3
                                 T    T T T
                                /    /  |  \
                               /    /   |   \
                              /    /    |    \
                   Cu   /     |     \
                                 /      |      \
            W[o[Wio[  |      pb`x
                                        |
                              }Ci[o[Wio[

      W[o[Wio[̈Ⴂ́AvONCuƓ
        JgCũW[o[WƂꍇɂ̂݃vO
    ̎sۏ؂邱ƂłB
      ́Alibc.so.4.3.3 ŃRpCꂽvÓAlibc.so.5.1.2 Ƃ
    ŐV DLL Cuł͎ss\łƂƂӖĂ܂B
    ܂vO libc.so.4 KvƂĂāAlibc.so.5.1.2  libc.so.4
    ւ̃N𒣂ĂȂƂƂłB

      }Ci[o[Wio[̒`ƂẮAL DLL CuŃ}Ci[`F
      WVǉ֐Aߋ̌݊ۂĂ邱ƂĂ܂B
      }Ci[o[Wio[IWĩRpC菬Cu
      gp悤ƂƁAio[ύXɂ郏[jOł傤A
      ʂ̎sł͑Sč\܂B

      pb`xio[̓ioO̐\킹Ȃ̂ŖĂ܂܂
      B͂̓CuR[ȟA⏬ȃoOtBbNXŎgp
      B

      ɖ߂ƁAȂoCi̎sƂɁACuCX
      g[ĂȂƂӖ܂B󋵂Pɂ́A (3),(19) 
      āAŐṼCuɓ邱ƂłB

  -------------------------------------------------------------------------------

  13) 킽̃CuƂĂ傫̂͂ȂłH܂AǂΏȂ
    ܂H

  : 菬Cu~ȂAׂƂ͂񂠂܂B

      * R[h̍œK - RpC -O2 tOg܂B
      * oCĩXgbv - ld ̕ -s tOg܂B
      * oCi̍쐬 - ld ̕ -N tOg܂B

      gݍ킹Ďg܂BAoCiXgbvȂAy
       ld  "-s" IvVg\[XɂȂłB"strip" R}h
      gĂB"man strip" sďڂĂB

      `ld' J̓ftHgŃvOLCuɃN܂B
      ȂA֘Âꕔ邱ƂłȂiȂ킿 .sa t@CjA
      w܂́x[UɂƂĕst@Cłꍇ́iȂ킿 .a t@C
      ƂājÓIN݂悤Ƃ܂BȂ̃oCiϑ傫R͂
      ꂩ܂BT[`pX /usr/lib  /lib  / ̃Cu .sa
       .a T܂B̂Ƃ́Astub  DLL LCũfBN
      gɓ_݂邱ƂɂȂ邩܂B_Iɍsɂ (20) 
      ĂB

       FSF ̍҂܂ÃvOfobOAMakefile
       -g IvV苎邱ƂX]ł̂mĂ܂B
      ʂƂāAX^eBbNɃNꂽvÔȂɂ͔ȃfobOV
      {cĂ܂BȂ\tgRpCA̓ɖ
      Ȃ΁A-g  CFLAGS ^܂ LDFLAGS 폜邽߂ɁAӐ[
      Makefile `FbNĂB

  -------------------------------------------------------------------------------

  14) -N tOgƉN܂H܂Aǂg΂̂łH

  : zLɂXbv\ɂȂ܂B-N IvVgƁAy[WE
      ςɋlߍ܂ꂽX̃ZOg̈A炪AȂs
      t@Cgpł悤ɂȂ܂BLinux ́AȒPɁwY邱Ɓxɂ
      蓖Ăi肵jy[WXbvpł܂BȂȂA
      t@C璼ڂɍă[hł邩łB
      AXbvp[eBVXbvt@Cɂ镨IȃXbv@\
      Ă܂Bɂ́A̎ԂƃfBXNXy[XKvłB

      Xbv́Aʏ͏ȃvOɂ͊֌W܂B-N găRpC
      ĂƂĂłB傫ȃvOiႦ΁Agcc ܂ emacsjA܂
      ͕̒iKĂ悤ȃvOishell  xterm ̂悤Ȃ́j́A
      -N ȂŃRpCׂłB̌ʁAR[hy[W͂ꂢɊ蓖Ă
      ܂BAsŁivOj点Ȃ΁AJ[l͉zL
      œĂgĂȂR[hy[WiƂōă[hłj폜͂
      ߂܂BAȂs`ł͕s\łB

      āAȂ̃vOdvȂ̃gp悤
      ΁A-N gpȂAJ[l̃ǗW邵Ȃł傤B

      nbLƂ `one-off' vÓÃtOgpăRpC
      ܂BȂ킿AԃɂƂǂ܂Ȃ̂łBႦ΁Ahostname,
      fsck, mkfs, w ȂǂłBdaemon ł́A -N tOĎgpwȂx
      ŉBɏ풓邱Ƃ͈ӖȂłB

  -------------------------------------------------------------------------------

  15) vÕfobLO͂ǂΎ̂łH

  : vORpC邱ƂKvłBiȂ킿AׂẴIuWFN
      gjāA-g tOtăN܂BƁwׂẴvO
      x -g tăRpC܂B
      fobLOc[ł܂̃t@C -g œĂ܂BifobL
      Oc[̓oO炯łj-g tOgdvȂƂ́A
      -fomit-frame-pointer gpwȂxƂłAɂAgdb ܂
      ܂B
      sKɂāALCu͐\̂߂ɕʁA -fomit-frame-pointer t
      ăRpCĂ܂B

      ̑ɁAfobLO -g ܂́A -static tOJɕt
      A񋤗LCuɃN邱Ƃ͌ȂƂłBAȂ
      AZOgᔽƂɁiANZX́jo߂ǂ邱Ƃ
      ܂B

      N
          Can't find libg.a
      ̃bZ[Wo͂ꂽȂ΁A
      tsx-11.mit.edu : /pub/linux/packages/GCC/extra*.tar.z
      t@CɓKv܂B

      ȂAȂ̃}VŒP
          % cd /usr/lib; ln -s libc.a libg.a
      sΏ\ȃfobLO񂪓邩܂B
      t@\ libg.a (~2Mb) gpȂ΁AfobOłȂCuR[
      ł傤B

      A\̃fobÔȂ΁AoCiXgbvĂwȂx
      ƂmFĂB

  -------------------------------------------------------------------------------

  16) ǂ̃fobK Linux Ŏg܂H

  : `AԂfobK `gdb' łBCɓ̃TCgŒ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 fobK gdb ƂĂ̂ŁiȂ킿Aŏ gdb CXg[
      Kv܂jgpł܂B\[X
                  ftp.x.org:/contrib/xxgdb-1.06.tar.Z
      ɂ܂B

      ܂AUPS fobK Rick Sladkey ɂ܂B xxgdb Ɠ
      l X zœ삵܂AĂ܂BPȂ X ̃eLXgx[X̃fob
      Kł͂܂Bǂ񎝂ĂAAfobOޗɎԂ
      ₷Ȃ΁Aޗ`FbNAEgׂł傤BUPS  Linux p̃pb`
              sunsite.unc.edu:/pub/Linux/devel/ups-2.45.2-linux-0.1.diff.gz
      Ō܂B܂A߂ X A[JCu܂
                  ftp.x.org:/contrib/ups-2.45.2.tar.Z
      At\[XɓKvł傤B

  -------------------------------------------------------------------------------

  17) daemon vOfobO@́H

  : ȒPɏƁAfobNO fork ĂȂAdaemon vO
      Ȃ΂Ȃ܂B

      ȂA`gdb' fobKgpƂƂ́Aforkwx daemon 
       attach łƂƂłBgdb ɃfobOvZX id `邱
       ƂŃfobOł܂B
      ɂ́A`attach' R}hgĂBGDB ̊SȃICwv
      ł͖ɗ܂B

      ܂A\[X肵ĂȂĂAoCiXgbvĂȂ΁A
      `strace' vOɓAdaemon ̃vZX id ɊāAo͂
      邱Ƃł܂B
      ATmĂȂ΁ALȕ@łB

  -------------------------------------------------------------------------------

  18) profiling Ƃ͉łH܂AvO profile ɂ͂ǂ̂悤ɂ
    悢̂ł傤H

  : profiling Ƃ́Aǂłǂ̓ŎԂ₳ꂽÁiVXe
      R[̊֐ɂčꂽA܂ASsԂ𒲂ׂ@łB
      R[h̍œKǂŕsKvɎԂQĂ邩ɂ͗ǂ@łB
      SẴIuWFNgƃN profiling ɂ́A-p tOŃRpC
      ΂Ȃ܂B (15)  profiling ɕKvȃCu̓ꏊ
      B

      ۂ graph profile ɓɂ́A`grof' ƂvOKvłB
      ́AoCi[eBeBpbP[WɓĂ܂B
      肩܂ƁAȂ̍s Linux A[JCuTCgŌĂ
      BႦ΁A

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

  -------------------------------------------------------------------------------

  19) AoCiÓIɂ܂͋LCuɃNĂꍇɁA
    ׂ@͂܂H

  : ͂܂B
      `ldd' Ƃ[eBeBgpĂB̃[eBeB́Av
      郉Cȕo͂܂BA`ldd' sƂɉ̏o
      ͂Ȃꍇ́AׂvO͐ÓIɃNĂ܂B

       (1): R}hi linux VXej
          % ldd /bin/init
      o͂ȂƂ͐ÓIɃNꂽƂƂłBÓIɃN΂悢
      ̂łB:-) im[g: libc.so.4.5.10 ȏŃNꂽvOł
      "statically linked" ̃bZ[Wo͂ł傤Bj

       (2): R}hi linux VXej
          % 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' vOIɃNA3 ̋LCuv
      Ă邱ƂĂ܂Bʓ̐͂̃CuilibX11j
      ĂAvORpCꂽƂɎĂCũJgo
      [WłB`gs' AlZCu (libm), ŃRpCꂽƂ
      ́Ao[W 4.0 ŁADLL CułȂ̂łAK^ɂ 4.4 
      DLL Cuł点邱ƂłłBlɁÃJg C C
      u (libc)́A`gs' RpCƂo[WオĂ܂B

       Ȃ `ldd' ̓o[WɂẮAȂɂʂ̌ʂo͂邩
         ܂B

  -------------------------------------------------------------------------------

  20) Linux  LD_LIBRARY_PATH T|[gĂ܂H

  : ͂ƂłBoCĩRpCɎgp libc ̃o[W
      ˑ܂B

      *  LD_LIBRARY_PATH ́A4.3.3 ȏ̃CuŃT|[gĂ܂B

      Ȃ킿AȂ stub (/usr/lib/libc.sa)  __load.o [`́A
      邽߂ɕύXĂ܂Blibc ̃o[W 4.4.4 ŃRpC
      oCił́ALinux ̓IJ́Alibc.sa  stub ɌAoCi
      ׂĂɃN __load.o `̐ÓIIuWFNgłB̂Ƃ́A
      __load.o ̕ύXAЂƂЂƂAׂẴoCiɌAŷɑ
      ȎԂv邱ƂӖĂ܂B

      āẢ񓚂ƂẮA4.3.3 (libc.so.4.3.4 ȏ) ȏ̃Cug
      păRpCȂ΁ACGXłBAʂƂẮAwׂẮx
      oCiRpC΁ACKv͂Ȃł傤B

      * libc ̃o[W 4.4.4 ȏł́AIɍꂽI[_͕KvȃC
      uAʒuÂɎg[fBOAA[fBO܂B
      ̌ʁAoCi͏AI[_AJɂύX libc u
      ܂Bld.so pbP[Wɂ ld.so  ldconfig ̃}jAĂ
      B܂C (4)  libld.so ̍ڂQƂĂB

      Linux  LD_LIBRARY_PATH ͈SŊȌłASun-OS ōs@s
      @ł̓͗\ł܂B
      ŏ Sun-OS  LD_LIBRARY_PATH ̎gp@Ƃ̈Ⴂ́ARpCiNj
      Ԓ̎łASun-OS  LD_LIBRARY_PATH ́A낢ȃCu
      邽߂ɉ߂Aꂽא؂̃oCiɁwL^x܂B䂦ɁA
      ^CoCiɂẮALD_LIBRARY_PATH 𒲂ׂOɁi܂
      LD_LIBRARY_PATH ߂AL^ꂽpX̍ŏ̋LCu
      ƂŁjLCûǂTmĂ܂BāAI[o[w
      bh点܂B
       Linux ́ȀL^Ă܂񂪁ȂƂăNɕKv
      Cũ^Cist@CjT܂B

      Linux ŃoCisƂAALD_LIBRARY_PATH  wȂx΁A
      ^CɃCuN邽߂ɍŏ /usr/lib  /lib  / T
      ܂B́A"҃T[`pX" ƂďƉ܂B

       / ́A{̓T[`pXł͂܂񂪁Aߋ̌݊̂߂ɎcĂA
        [ÛȂɂ "/lib/libfoo.so" ƂOgĂ 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[giuid  0jłȂ
      ΁ALD_LIBRARY_PATH ́A҃T[`pXɂĒT܂B

      AȊOɕʂ̃[Uiuid != 0jłAsoCi suid
      s`̏ꍇAlibc.so.x ƕKvȃCu͋IɊҌpX̂ǂ
      烍[h܂BLD_LIBRARY_PATH ͖܂BiSZbg
      ԁjɂAg̃G~[V畁ʂ̃[Uł͒~܂B
      Ⴆ΁Asetuid() ́Aō libc CuĂ΂܂B

      ŌɁAAm[}[UŎsoCiwʂ́xoCiȂA
      LD_LIBRARY_PATH ͍ŏɕKvƂ郉CuT܂B

      A[U LD_LIBRARY_PATH ŃCuȂ΁ApXƂ
      w҃T[`pXxZbgČ𑱂܂B̂ƂŁAAʂ
      LD_LIBRARY_PATH ZbgAK؂ȃ[U[̃oCis
      B

  -------------------------------------------------------------------------------

  21) ̃vOł /lib/cpp KvłBǂɓꂽ悢̂ł傤
    H

  : cpp  /usr/lib/gcc-lib/i386-linux/2.5.7 ̒ɂ܂B
      (gcc ̃o[Wio[͕ςĂ邩܂)

      ȉ̃R}hsĂB
          % cd /lib; ln -sf /usr/lib/gcc-lib/i486-linux/2.5.7/cpp

      ** 2.5.7 ͂Ȃ̎gĂ GCC ̂̂ɂĂB
      ** 386 ̃RpCgĂȂAi486  i386 ɂĂB
      ̕@ŁA悢@͂łB

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

      ̕@́AV gcc ɂāAÂ gcc 폜Ƃ /lib/cpp 
      Ȃ邩܂B

  -------------------------------------------------------------------------------
  22) <varargs.h> ͂ǂłH

  : varargs.h ́A/usr/lib/gcc-lib/i386-linux/2.5.7/include ̒̑̃VXe
      ɑt@Cɂ܂B
      <varargs.h> ́AK&R ɂ̂łBgcc ̃ftHg ANSI łB
      <stdarg.h> Ɏgׂł傤B

      ** o[Wio 2.5.7 ́AȂ̎gĂ GCC ̃o[Wɒu
         ĉB
      ** A486 p̃RpCgĂȂAi386  i486 ɕύXĂ
          B

  -------------------------------------------------------------------------------

  23) ̃vOŁA<linux/foo.h> CN[ĥłA邱
    ł܂Bǂɂ̂ł傤H

  : ̃CN[ht@ĆAJ[l̃o[WɈˑĂA
      ̂悤ɁAJ[l̃[XƂɂȂĂ܂BŐṼJ[l̃\[X
      ɓKvAWJAN𒣂Kv܂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͂̃Nn߂玝Ă܂BāAV
      J[l̃\[Xc[CXg[ĂÂCN[ht@Cgp
      邱Ƃł܂BӂĂB

  -------------------------------------------------------------------------------

  24) foo() ֐̓CuɓĂ̂ł傤H

  : ֐CuɓĂ邩ǂׂ@́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͂邱Ƃŏꏊ킩郉CuCN[hKv
      邱ƂӖĂ܂B

  -------------------------------------------------------------------------------

  25) vO XXX  Linux ɎĂɂ͂ǂ΂łH

  : ꂩALinux ɃvOwĂxɖ߂ĂB
      ALinux ɎĂ̂ȂAӖ܂B

      {CōlƁAʓIɏύXƂẮALinux p 100% POSIX ɂ
      ҏW\[XKvłB
      ̃vOR[hύXĂ悤ɁAIɂ `make' Ŏs
      `悤ɂׂłB

      Ƃ悭N̈ƂāAʊ֐ Linux ̃wb_t@CɃ}N
      Œ`ĂāAvvZbTR[ĥȂ̗ގvg^Cv`
      ̉͂ۂ邱Ƃ܂Bގ̂ƂẮAatoi()  atol()
      ܂B
      ̑̈ʓIȖƂẮA"sprintf(string, fmt, ...)" ł́AقƂǂ
       unix ̏ꍇ́Az̃|C^Ԃ܂BLinux ł́Az̒̕
      ܂B

      ̖̑́ALinux  GCC ́AANSI RpCłƂɂ蔭
      łBdvȂقƂǂ̕ύX́AvvZbT̂߂łBȉ̃IvV
      ǉĂB

          -traditional

      ́AЂƂ́iɓIȁj@łB

      +----------------------------------------+
      | Brouno Haible ̉lRg |
      +----------------------------------------+

      ́AUnix ̃\tgEFA Linux ɎĂƂɔł낤
      LqĂ݂̂łB

      C ŏꂽ\tgEFAłƉ肵܂B

      Linux (ƁALinux ̃VXeR[ C Cu֐) ́Ał
      APOSIX ݊ɋ߂ÂĂ܂BꂩZXgĂ݂܂B

       1: select()  timeout p^
      ------------------------------------

      :
      ͂ CPU HԂ|[O悤ȃvO

      :
      select() ̓VXeR[łBtimeout p^́AÓTIɃVXeł́A
      [hI[ƂĎg܂B̃}jAɂ́A3 NȏO
      LqĂ܂B

          select() ́A܂ꏊŎԂύXƂ悻IWi
          timeout cԂԂ܂B̂Ƃ́AA⑫ł
          BāAselect R[timeout |C^ύXȂƎv
          Ƃ͋ȂƂłB

      A܂߂ɂ̃AhoCX󂯎ȂA^CAEg̍\̂̏
      ߂ 0 ̃^CAEgł傤B͓^CAEg\̂
      g select() ̏IȃR[ɖ߂Ă邱ƂӖ܂B

      p:
      ^CAEg̒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: VXeR[ɂ銄荞
      ------------------------------------

      :
      Rg[ Z ŃvO~߁ǍナX^[gA܂́Ȃ
      󋵂ŁARg[ C 荞݂̃VOiƂARvZXI
      ܂B"interrupted system call"  "write: unknown error" ̂悤ȃbZ
      [WԂĂ܂B

      :
      s̃VXeR[vO̓VOivZXɂ芄荞݂A
      -1 ԂAerrno = EINTR Zbg܂B̃vOُ͈I悤
      Ă܂܂B

      :
      Ȃ̃vÓisignal(), sigaction(), sigvec() gjCXg[
      ꂽVOinhĂ܂BVOiƃVOinh
      Ăяo܂B̌ۂ́Aق UNIX VXȅꍇA񓯊A܂
     2, 3 ̒xVXeR[ŋN܂B

          VOixfoCXit@CłȂA^[~î悤ȁj read(2),
          write(2), open(2), ioctl(2) ̃VXeR[̎s pause(2) ̃VX
          eR[ wait(2) ̃VXeR[̎sɈNꂽƂA
          OĒ~܂̓]rvZXłɑ݂Ă邽߂ɂ
          ߂Ă܂BVOiLb`֐sAVXeR[
          荞݂ errno  EINTR ZbgvZXĂяoA-1 Ԃ
          B

      Linux iPOSIX ܂݂܂jł́AVOi`FbNAVOinh
      s܂B
            * 񓯊łi^C}̍݁j,
            * wǂ́xVXeR[̃^[ł邩
            * ȉɎVXeR[̎sł
                    select(),
                    pause(),
                    connect(), accept(),
                    ^[~iA\PbgApCvA /proc t@Cւ read(),
                    ^[~iA\PbgApCvACv^ւ write(),
                    FIFO, PTY, ܂̓VAւ open(),
                    ^[~iւ ioctl(),
                    F_SETLKW R}hł fcntl(),
                    wait4(),
                    syslog(),
                    ̑ TCP or NFS 
            w̑̃Iy[eBOVXeł́Aȉ̃VXeR[܂߂
            ΂ȂȂ܂B

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

      Ō 2 ̃P[XƃVOinh̕Al̉ɂVXeR[
      -1 ԂAerrno  EINTR Zbg܂B

      ASA_RESTART tOVOiƂăZbgĂAقƂǂ̏
      AVXeR[̓VOinhsAIɃX^[gisjA
      Ȃ̃vO EINTR ͌܂B

      Ȃ͂ȂꂪftHg̓łȂ̂₷邩܂BR
      EINTR ԂAZbg邱Ƃ苭́ivOɑ΂󂯎ׂ
      VOiɒɔ@^܂jł邩łB
      VXeR[͂͂w_[Nglxł͂Ȃ̂łB

      m[g : ̃o[W BSD Unix ̃ftHg̓VXeR[
      X^[g邱ƂłB荞܂ꂽVXeR[o߂ɂ́A
      SV_INTERRUPT ܂ SA_INTERRRUP tOgpȂ΂Ȃ܂B

      C@ƂĂ 2 ̕@Ił܂B

      C 1:
      Ȃ̃CXg[SẴVOinhɑ΂AVOANVtO
      ƂāASA_RESTRT ǉ܂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 : قƂǂ̃VXeR[ɓKpꍇAread(), write(),
      ioctl(), select(), pause(), connect()  EINTR `FbNȂ΂Ȃ
      B
       read()  ioctl()  2 ̗Ă܂B

      read() gĂIWi

                   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ĂIWi̕

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

      

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

      ɕύX܂B

  -------------------------------------------------------------------------------

  26) gcc/library  foo ŃoO̂łAǂ΂悢̂ł傤H

  : {łH
      ƁAAvOُIA܂͊ҒʂɓȂȂ΁A܂
      ŏɎĂ݂āAsɃR[hi荞ŁAmFĂB

      ÓIo[WƋLo[Wǂł܂H
      iȂ킿ADLL CuƐÓICuǂ炩̖ł傤Hj

      gcc ̑ʂ̃}VgƂ͂ł܂HƁALinux/GCC ݂̂
      ȂAGCC Ŝ̖łHȂȉɎ USENET ̃j[XO[
      vɓeق悢܂B

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

      ͐lZG~[^łHȂAlZG~[^̍
      ł Bill Metzenthen   (apm233m@vaxc.cc.monash.edu.au) Ƀ[
      ق悢܂B

      ǁAlinux-bugs@sunsite.unc.edu A (mitchum.dsouza@mrc-apu.cam.ac.uk)
      AHLU ɂł[ׂł傤B

  -------------------------------------------------------------------------------

  27) LCu@\ÓICu傫Ȃ͉̂̂ł
    H

  : LCu̓fBXNXy[Xsłgł悤ɂ邽߂
      `holes' Ƃ`ŃXy[X\񂵂Ă܂B`makehole' ĂяoA܂
      gpȒP `cp' ̗͂\̈gp܂B
      Ȃ́ACu쐬ɏ邱Ƃł܂B

  -------------------------------------------------------------------------------

  28) /usr/lib ɂ .sa t@CƂ͉łH

  : .sa t@CƂ́ALCu甲ôłAȃCu
      oׂẴO[oϐ܂݁A^CN邽߂
      KvȊ֐|CgĂ܂B (13) QƂĂB

  -------------------------------------------------------------------------------

  29) Linux p̃IuWFNgw C ͂ǂŎɓ܂H

  : IuWFNgw C  gcc  2.4.0 ȏ̃o[WŃ[XĂ
      B́AډeXgłBŐVo[W͈ȉ̂̂łB
          tsx-11.mit.edu:/pub/linux/packages/GCC/gcc-2.5.7-p2.tar.gz

  -------------------------------------------------------------------------------

  30) "Internal compiler error: cc1 got fatal signal 11" ̃bZ[ẄӖ͉
    H

  : GCC ͂ԂvO𑖂点邽߂×~ɃA RAM
      ̗̈HԂ̂ł傤BʁAvIVOi 11 ́ARAM 
      peBG[n[hQӖĂ܂Bn[hfBXN̕sǃub
      N̂ cc1 œԂɊׂƂ܂B́A`bṽI[o[
      q[git`tCł͂܂jɂG[Ƃĕ񍐂Ă܂B
      ܂A@\ IDE Rg[ƃhCu 8MHz AT oXNbNȏő
      悤ƂƔ܂B̓XbvXy[X̕ϑNƂɂ
      蓯G[ƂȂ܂B

      ʂɁAVOi 11 (ZOe[VEoCI[Vj́AvZXX
      y[XsԂłŃANZXɍsA܂̓[hI[̈ɏ
      ݂ɍsƂӖĂ܂B܂ɁÃVOi̓\tg̃oOŔ
      邱ƂAn[hQƂ͌܂Bi܂̓VXěJԂ
      nOBȂȂJ[lœN邩łBjgcc 2.3.3 ł́Al
      ́hVOi 11hČ܂B

      ܂A`ld'  `as' ̍Œ̏QƂĂ܂BAcc1, cpp, ܂
      ld ɖ肪Ƃ΁Agcc  -v tOtăRpCĊmF
      ݂ĂB

  -------------------------------------------------------------------------------

  31) libc.lite Ƃ͉łH

  : libc.lite Ƃ́Atbs[^płقƂǂ̔ڂ(:Ӗs) UNIX 
      ^XN𖞑邽߂ libc Cǔyo[Włɂ́Acurses,
      dbm, termcap Ȃǂ̃R[h܂ł܂BAȂ /lib/libc.so.4 
      yCuNĂȂ΁Ato[Wɒu鎖
      ܂BǂŎɓ邩͎ (3) QƂĂB

  -------------------------------------------------------------------------------

  32) Linux ̃Cu SHADOW Password T|[gĂ܂H
    ܂AIEIt͂ǂ΂悢̂łH

  : T|[gĂ܂B
      Kȏꏊ SHADOW_PWD `ăRpCAshadow CuN
      Kv܂Bshadow Cu͈ȉœł܂B
          sunsite.unc.edu:/pub/Linux/distributions/SLS/a4/shadow.tgz
      ̓Iɂ Makefile  CFLAGS s -DSHADOW_PWD tOALDFLAGS s
      -lshadow tOǉ΂̂łB

      \[XrbgύXȂ΂ȂȂ܂񂵁Ashadow T|[g
       "cript()" ͊֐ł͂ȂA}NƂĒ񋟂܂B
      䂦AׂĂ "extern int crypt()" ł܂Â܂B

      ́Agetpwent(), setpwent() ̑̃[`gwׂẮxKv
      oCiRpC邱ƂȂł́Ashadow password ̃IEIts
      @wȂxƂӖĂ܂B

  -------------------------------------------------------------------------------

  33) math.h [`܂BvORpCĂ̂łA
    log(), sin() Ȃǂ܂BꂩAāI

  : ֐gpvORpCĂꍇAK؂ȃCu
      vOɁwKxNȂ΂Ȃ܂BlZ֐gɂ
      N libm.a CN[hȂ΂ȂȂƂƂłB
       LDFLAGS  -lm Acurses ֐ł -lcurses  dbm ֐ł -ldbm Ȃ
      Kv܂B

      ʂ́AIuWFNǧ -lm tOu܂B
          % gcc -lm -o math_prog math_prog.c
      ́A܂ŐlZ֐͉͂ł܂Bł͂ȂA
          % gcc -o math_prog math_prog.c -lm
      Ɠ͂ĂB

  -------------------------------------------------------------------------------

  34) GCC ̃}jA͂܂HȂAǂŎɓ܂H
    ܂AǂΈł܂H

  : }jA sunsite  GCC fBNgɂ܂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 ̃}jAKvƂĂȂA
      GCC uĂǂ̃[J ftp TCg₻̑ FSF ̓ŝ悢Ƃ
      납炷ׂẴ\[XɓȂ΂Ȃ܂BGCC ̃\[X TeX 
      ̃}jAKv܂B

      AȂCũt@NVR[̃}jATĂ
      Aglibc ̑SẴ\[XKvłB́AGCC ̃\[X ftp TCg
      Ɠꏊɂ܂BĂсA}jA쐬邽߂ TeX KvƂȂ
      B
      ̃}jAŒӂׂ_ 900 y[W̑傫ł邱ƂłB
      n}ĂAdvi t@CƂăICŕۑĂĂB

      wxt@C痈ǂ̃pbP[W Gnu info  xinfo, emacs g
      pČ邱Ƃł܂Bwxt@C͏VXeɊÂnCp[
      eLXg`łB

  -------------------------------------------------------------------------------

  35) "Undefined symbol _bsd_ioctl" ̃bZ[Wo܂Bǂ΂̂ł
    H

  : N /usr/lib/libbsd.a Ƃ bsd ̃CuCN[h邱
      ƂYĂ܂B

      @: Makefile  LDFLAGS s -lbsd tOĂBiLDFLAGS
      sꍇ͎蓮ŉĂj

  -------------------------------------------------------------------------------

  36) o[WAbvƂ́A/usr/lib/gcc-lib/i[34]86-linux/<old-version>
    Â̂菜Ƃ͂ł܂H

  : ƁAAgcc ̃eXgo[WłȂ΁AfBNgÂo[
      W菜Ƃ͑S肠܂B"gcc -V <old-version>" Ƃ邱
      ŌÂo[W GCC ŃRpC邱Ƃł܂B

  -------------------------------------------------------------------------------

  37) wāxlibipc.a ͂ǂłHdosemu 0.49 ̂߂ɕKvȂ̂łB

  : Inter Process Communication (IPC) ֐͕W libc >= libc.so.4.4.1 
      ܂BAȂĂ libc  libc.so.4.4.1 ȏゾꍇ́A
      -lipc ͕Kv܂BMakefile 炻̍sĂBA
      libc.so.4.4.1 ꍇ́ACuo[WAbvĂB

  -------------------------------------------------------------------------------

  38) XXX RpCł܂B_daemon `ɂȂ܂BꂩāII

  : daemon()  libbsd.a ɓĂ܂B-lbsd  Makefile  LDFLAGS s
      ĂB

  -------------------------------------------------------------------------------

  39) wāxar  CuɂĂłBV{̓Cuɂ̂ł
    ANɎs܂B

  : ΂ `ranlib' e[uȂƂ `ar'̃oOłB
      ȉ̃R}hł߂Γ悤ɂȂ܂B

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

  -------------------------------------------------------------------------------

  40) āI S҂Ȃ̂łA"libc.so.4: incompat. minor ver no." Ƃ[
    jObZ[WłčĂ܂B

  : LCũo[WAbvKvłB 12  3 ̊TvĂ
      B

  -------------------------------------------------------------------------------

  41) c ̃vÕRpC̑OɃ`FbN `lint' ͂ǂłH

  : `lint' ̂悤ȃvO`FbN悤Ȃ̂͂܂B̑
      ɃvO`FbNɂ gcc ̉ߓx̃IvVg܂B}jA
      ɏĂ邢낢ȃIvVĂB

      łʓIȂ͈̂ȉ̃IvVłB

          % gcc -Wall foo.c

      ̃IvV͋Nł낤\Ȍ̃[jOo͂܂B

  -------------------------------------------------------------------------------

  42) ̃vO sgtty.h KvȂ̂łAǂɂ̂ł傤H

  : sgtty.h  /usr/include/bsd fBNgɓ܂BRpC
      Makefile  CFLAGS sɈȉ̍sǉĂB

                  -I/usr/include/bsd

  -------------------------------------------------------------------------------

  43) SIGSEGV ɂRAt@C̍쐬֎~A肷ɂ͂ǂ
    悢̂ł傤H

  : ͖{ GCC ̎ł͂ȂAshell ̎Ȃ̂łAȂɂȂł
      SɃRAt@CȂɂ

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

      sĂB

      VOi 11 (SEGV) 󂯎̂݁ARAt@C悤ɂɂ

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

      sĂB

  -------------------------------------------------------------------------------

  44) "can't load dynamic linker `/lib/ld.so'" ̃bZ[ẄӖ͉łH

  : ́AIJ^[_CXg[ĂȂƂӖĂ
      B 4  libld.so ̓@QƂĂB

  -------------------------------------------------------------------------------

  45) -O2  -O6 ł̌̈Ⴂ͉łH

  : ݂͂܂BAȂ i386/i486 ̃zXg / ^[QbgƂ
      GCC ̃\[XR[hĂȂA-Ox  x>2 ̏ꍇ͓̂ł邱Ƃ
      킩ł傤BہAMakefile  x>2 gp邱Ƃ͈ƂłBȂ
      AGCC  -O3 ƂœKIvVCeĩ`bvj^[Q
      bg̗p邩Ȃ߁A̍œKɂďo͂R[hj󂳂
      邩܂B

  -------------------------------------------------------------------------------
  46) os̃oCigC̖ؔn̂悤ȃEBXɊĂ邩ǂ
    `FbN@́H

  : ŏɁAAȂ̃}VEBXɊĂ邩SzȂ΁A
      wȂxƂłiȂƂ root ł́jBāA\[XăRp
      CĂB̕@ƂẮA"string <filename> | less" Ɠ͂邱
      Ƃŉ炩̏񂪎ɓ邩܂BAqɏoȂ΁A
      sȓT邽߂ "strace" gƂł܂B
  -------------------------------------------------------------------------------
  47) C Cũ\[X͂ǂɂ܂H܂rh@́H

  : ȉ̃TCg̃W[QƂĂB
                  tsx-11.mit.edu:/pub/linux/pagkages/GCC/libc-4.5.8.tar.gz

      ALCu~ȂAdll c[pbP[WKvɂȂł
      B (5) ̓ꏊQƂĂB

  -------------------------------------------------------------------------------

  48) FD_* ̒`͂ǂɂ܂H

  : <sys/time.h> Ɋ܂܂ĂāA}Nǉł傤B

  -------------------------------------------------------------------------------

  49) -g IvVtŃNA___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

  : libc.sa  crt0.o  libc.sa  libc.a ŋ߂ linux  libc ɃAbvf
      [gKv܂BAÂ libg.a ֌WcĂ܂܂B

      A{ɃfobOCuɂX^eBbNoCii-g ̈Ӗj
      KvȂ΁Alibg.a 肵ăCXg[ׂłB
      ɂĂ͎ (15) ĂB

  -------------------------------------------------------------------------------

  50) 킽̃CuAvP[Vۉc[͂ǂŎɓ܂
    H

  : ȉ̃t@CɓĂB
          sunsite.unc.edu:/pub/Linux/utils/nls/cat-pack.tar.gz
      āAwɏ]ĂB

      [U낢ȌɂJ^O͈ȉ̂ƂŌ܂B
          sunsite.unc.edu:/pub/Linux/utils/nls/catalogs
      ׂfBNgɓ܂B

      P: ۉc[Ɗ֐̓o[W 4.4.4iႦ΁Alibc.so.4.5.x ȏj
      gp\łB

      Q: linux ɂwۉx̏󋵂͒xĂAlinux pl14 
      Latin-1/ISO-8859-1 ̃LN^[ZbgƃT|[gꂽ悤ȏԂ
      B

  -------------------------------------------------------------------------------

  51) `mkimage' Ƃ DLL c[ libgcc ̂ȂɌ܂BĂ
    B

  : libc.so.4.5.x ȏł́Alibgcc ͂łɋLł͂܂B
      āAmkimage  `-lgcc' ̕ȉ̂悤ɒuȂ΂Ȃ܂
      B

          `gcc -print-libgcc-file-name`

      Z

          `gcc --print`

      łBobNNH[g͕Kv܂B

  -------------------------------------------------------------------------------

  52) "__NEEDS_SHRLIB_libc_4 multiply defined" ̃bZ[WoȂ悤ɂɂ
    ǂ΂̂ł傤H

  : libc.sa.4.5.x ȏł libgcc ͋Lł͂ȂȂĂ܂BāA
      /usr/lib/libgcc* t@Cׂč폜wȂ΁xȂ܂B

          % rm -f /usr/lib/libgcc*

  -------------------------------------------------------------------------------

  53) QMAGIC Ƃ̂́AʓIɂ͂ǂ̂łH

  : QMAGIC ̓X^_[h a.out iZMAGIC Ƃĵ悤Ȏs`̃tH[
      }bgłBA}bsOȂŏ̃y[Wɒu܂B̂Ƃ
      A0-4096 ͈̔͂Ń}bsOȂgbvƂĊȒPɁw܂x
      @Ŏł܂Bɑ΂AȂ̃oCiւ̉e͂قƂǂ
      B(~1K)

      /etc/magic t@Cɐo^΁AȂ `file' R}h QMAGIC o
      CiƓɂ邱Ƃł܂B킽́AقƂǂ̃`lɓK
      Gg[ztĂ܂B

  -------------------------------------------------------------------------------

  54) ǂ̂悤ɂ΁AQMAGIC ̎st@C⃉Cu쐬ł܂H

  : QMAGIC ̎st@Cɂ́AŐV `ld' ̃oCi\[X̃pb`
      KvłB`binutils-as.tar.gz' Ƃt@CztĂ܂B (6)
      QƂĂB

      QMAGIC st@C̍:

        Makefile  LDFLAGS sɈȉ̕ǉ܂B

          LDFLAGS = -Wl,-qmagic
        ܂
          LDFLAGS = -Xlinker -qmagic

      QMAGIC Cu̍:

        ߂ȂB`mkimage' ̎g܂킩܂B҂Ă
        B

  55) "warning using incompatable library version xxx" ̃bZ[WoȂ悤  邱Ƃ͂ł܂H

  : ͂ł܂B
      A ld.so ̃o[W 1.4 ȏĂȂAϐ LD_NOWARN 
      ǉ邱ƂŃbZ[WoȂ邱Ƃł܂B: vIȃ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Ȃ̖OAӖEӖɂ炸vĂĂA
       ǂACQȂłB̒PȂ~Xł̂ŁBɓdq[
       BC܂̂ŁB

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

   FAQ  Linux p GCC ̖mȉ񓚂̕ɂɂ邽߂ɁAdq[ɂ鎿
   (A񓚂Ȃ΁A) ZAǉĎ̂`ĂB

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

  --
  comp.os.linux.announce ւ̂ӌ linux-announce@tc.cornell.edu ܂ŁB

