Linux GCC FAQ

Mitchum DSouza

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

 - {
iuhbj

GAA00714@niftyserve.or.jp

February 1, 1994

 

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

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

A:

: Ő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

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

A:

: ȉ̃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
 

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

A:

: 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Ȃ̂߂ɂȂg
pł
      ŐVo[WRpC₷悤ɍĂ܂BGCC \[X
ƂƂ
      zuXNvgȂ̂߂ɗpӂĂ܂B

      AȂRpCȂAŐṼCN[hiw
b_j
      t@CKvɂȂł傤Bi͂̕jĂ鎞_̍ŐV

      CN[hit@Cj́Aȉł܂B

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

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

A:

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

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

A:

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

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

      P.S. ȉ̃CumȂ̂ɂ邽߂ɁACu
e
      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[g
Q
            Ă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 NC
Ag
 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
=======================================================================
=======
 

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

A:

: 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
 

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

A:

: 炭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
 

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

A:

: 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 ̃\[XN
X
      RpCNXJ邱Ƃ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Ɖ肵܂B
j

        % 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 TufB
Ng
          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
 

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

A:

: 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[eBO
VXe 
      ̂悤ȓʂȃ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
 

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

A:

: 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
 

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

A:

: 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 ɁAV
vO
      ͈ȉ̂悤ɂׂł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
 

Q: 11) libhard  libsoft Ƃ͉łH

A:

: ́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
 

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

A:

: LCuWĂƁAvOsɃNbV
N
    悤ɂȂAł肵܂B͂肳邽߂ɁA
o[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Ƃꍇɂ̂݃v
O
    ̎sۏ؂邱ƂłB
    ́Alibc.so.4.3.3 ŃRpCꂽvÓA
libc.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Ń}C
i[`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Ŏg
p
    B

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

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

A:

: 菬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@C
jA
    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̃vOfobOA
Makefile 
     -g IvV苎邱ƂX]ł̂mĂ
܂B
    ʂƂāAX^eBbNɃNꂽvÔȂɂ͔ȃf
obOV
    {cĂ܂BȂ\tgRpCA̓

    Ȃ΁A-g  CFLAGS ^܂ LDFLAGS 폜邽߂ɁA
Ӑ[
    Makefile `FbNĂB
 

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

A:

: 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ȃX
bv@\
      Ă܂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点Ȃ
΁A
      J[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ăRp
C
      Ă܂BȂ킿AԃɂƂǂ܂Ȃ̂łBႦ
A
      hostname, fsck, mkfs, w ȂǂłBdaemon ł́A -N tO

      gpwȂxŉBɏ풓邱Ƃ͈ӖȂ
B
 

Q: 15) vÕfobLO͂ǂΎ̂łH

A:

: vORpC邱ƂKvłBiȂ킿AׂẴI
uWFN
    gjāA-g tOtăN܂BƁwׂẴv
O
    x -g tăRpC܂B
    fobLOc[ł܂̃t@C -g œĂ܂Bi
fobL
    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łȂCu
R[
    ł傤B

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

Q: 16) ǂ̃fobK Linux Ŏg܂H

A:

: `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 CX
g[
    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
 

Q: 17) daemon vOfobO@́H

A:

: ȒPɏƁAfobNO fork ĂȂAdaemon vO

    Ȃ΂Ȃ܂B

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

    ܂A\[X肵ĂȂĂAoCiXgbvĂȂ
΁A
    `strace' vOɓAdaemon ̃vZX id ɊāAo

    邱Ƃł܂B
    ATmĂȂ΁ALȕ@łB
 

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

A:

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

    B

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

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

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

A:

: ͂܂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 ̋LCu
v
    Ă邱ƂĂ܂Bʓ̐͂̃CuilibX11
j
    ĂAvORpCꂽƂɎĂCũJ
go
    [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
 

Q: 20) Linux  LD_LIBRARY_PATH T|[gĂ܂H

A:

: ͂Ƃł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 ŃRp
C
    oCił́ALinux ̓IJ́Alibc.sa  stub ɌA
oCi
    ׂĂɃN __load.o `̐ÓIIuWFNgłB̂
Ƃ́A
    __load.o ̕ύXAЂƂЂƂAׂẴoCiɌAy
ɑ
    ȎԂv邱ƂӖĂ܂B

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

    * libc ̃o[W 4.4.4 ȏł́AIɍꂽI[_͕K
vȃ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@Ƃ̈Ⴂ́ARpCi
Nj
    Ԓ̎ł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 ͖܂BiS
Zbg
    ԁ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Ȃ΁A
pX
    Ƃāw҃T[`pXxZbgČ𑱂܂B̂ƂŁA
A
    ʂ LD_LIBRARY_PATH ZbgAK؂ȃ[U[̃o
Ci
    s܂B
 

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

A:

: 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
 

Q: 22) <varargs.h> ͂ǂłH

A:

: 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
 

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

A:

: ̃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āA
V
    J[l̃\[Xc[CXg[ĂÂCN[ht@C
gp
    邱Ƃł܂BӂĂB
 

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

A:

: ֐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[hK
v
    邱ƂӖĂ܂B
 

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

A:

: ꂩ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ƂARvZX
I
    ܂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() gjC
Xg[
    ꂽVOinhĂ܂BVOiƃVOi
nh
    Ăя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`֐sAVXe
R[
        荞݂ errno  EINTR ZbgvZXĂяoA-1 
Ԃ
        B

    Linux iPOSIX ܂݂܂jł́AVOi`FbNAVOin
h
    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^[gi
sjA
    Ȃ̃vO EINTR ͌܂B

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

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

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

    C 1:
    Ȃ̃CXg[SẴVOinhɑ΂AVOANV
tO
    Ƃā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
 

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

A:

: {ł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
 

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

A:

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

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

A:

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

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

A:

: 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
 

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

A:

: 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́Av
ZXX
    y[XsԂłŃANZXɍsA܂̓[hI[
ɏ
    ݂ɍsƂӖĂ܂B܂ɁÃVOi̓\tg̃o
OŔ
    邱Ƃ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Ċm
F
    ݂ĂB
 

Q: 31) libc.lite Ƃ͉łH

A:

: 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
 

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

A:

: T|[gĂ܂B
    Kȏꏊ SHADOW_PWD `ăRpCAshadow Cu
N
    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ׂẮx
Kv
    oCiRpC邱ƂȂł́Ashadow password ̃IEIt
s
    @wȂxƂӖĂ܂B
 

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

A:

: ֐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
 

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

A:

: }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
 

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

A:

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

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

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

A:

:  ƁAAgcc ̃eXgo[WłȂ΁AfBNg
Â
       o[W菜Ƃ͑S肠܂B

         "gcc -V <old-version>" 

       Ƃ邱ƂŌÂo[W GCC ŃRpC邱Ƃł܂
B
 

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

A:

: 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
 

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

A:

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

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

A:

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

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

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

A:

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

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

A:

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

    łʓIȂ͈̂ȉ̃IvVłB

        % gcc -Wall foo.c

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

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

A:

: sgtty.h  /usr/include/bsd fBNgɓ܂BRpC

    Makefile  CFLAGS sɈȉ̍sǉĂB

                -I/usr/include/bsd
 

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

A:

: ͖{ 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
 

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

A:

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

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

A:

:  ݂͂܂BAȂ i386/i486 ̃zXg / ^[Qbg
Ƃ 
       GCC ̃\[XR[hĂȂA-Ox  x>2 ̏ꍇ͓̂

       Ƃ킩ł傤BہAMakefile  x>2 gp邱Ƃ͈

       łBȂȂAGCC  -O3 ƂœKIvVCe
i
       `bvj^[Qbg̗p邩Ȃ߁A̍œKɂ
o
       R[hj󂳂邩܂B
 

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

A:

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

Q: 47) C Cũ\[X͂ǂɂ܂H܂rh@́H

A:

: ȉ̃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
 

Q: 48) FD_* ̒`͂ǂɂ܂H

A:

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

Q: 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

A:

: 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
 

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

A:

: ȉ̃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
 

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`

    łBobNNH[g͕Kv܂B
 

Q: 52) "__NEEDS_SHRLIB_libc_4 multiply defined" ̃bZ[WoȂ
ɂɂ͂ǂ΂̂ł傤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`
̃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
 

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

A:

: 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
 

Q: 55) "warning using incompatable library version xxx" ̃bZ[W
oȂ悤ɂ邱Ƃ͂ł܂H

A:

: ͂ł܂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
 

