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ÍDZÅèÉüêçêÜ·©H Q: 1) ªgÁÄ¢é GCC Ìo[WðméÉÍǤ·ê΢¢Å·©H Q: 2) GCC,as,ld,ar, »Ì¼ÌÅVÅÌztÍÇ±É èÜ·©H Q: 3) libc.so,libw.so ̤LCuÌÅVÅÍDZũ¯é±ÆªÅ «Ü·©H Q: 4) Linux żÉÍÇÌæ¤È¤LCuªg¦Ü·©H Q: 5) Linux p̤L DLL CuðìéÉÍǤ·êÎæ¢ÌÅ·©H Q: 6) ®àøÈoCiðÀsµ½ÌÉ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 tOðg¤Æ½ªN±èÜ·©HܽAǤg¦Î¢¢ÌÅ·© H Q: 15) vOÌfobLOîñÍǤ·êÎæêéÌÅ·©H Q: 16) ÇÌfobKª Linux Åg¦Ü·©H Q: 17) daemon vOðfobO·éû@Í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Å·BDZ©çèÉüê½çæ¢ Ìŵ天H Q: 22) <varargs.h> ÍDZŷ©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 ÍDZÅèÉüêçêÜ·©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 [`ª©Â©èܹñBvOðRpCµÄ¢é ÌÅ·ªA log(), sin() ÈǪ©Â©èܹñB¾ê©A¯ÄI Q: 34) GCC Ì}j AÍ èÜ·©HൠéÈçADZÅèÉüêçêÜ ·©HܽAǤ·êÎóüÅ«Ü·©H Q: 35) "Undefined symbol _bsd_ioctl" ÌbZ[Wªoܵ½BǤ·êÎ ¢¢ÌÅ·©H Q: 36) o[WAbv·éÆ«ÍA/usr/lib/gcc-lib/i[34]86-linux/ <old-version> ©çâàÌðæè±ÆÍÅ«Ü·©H Q: 37) w¯Äxlibipc.a ÍDZŷ©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' ÍDZŷ© 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¾ÌoCiªgCÌØnÌæ¤ÈEBXÉ´õµÄ¢é© Ǥ©`FbN·éû@ÍH Q: 47) C CuÌ\[XÍÇ±É èÜ·©Hܽrh·éû@ÍH Q: 48) FD_* Ìè`ÍÇ±É èÜ·©H Q: 49) -g IvVtÅ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) í½µÌCuâAvP[VðÛ»·éc[ÍDZÅè ÉüèÜ·©H Q: 51) `mkimage' Æ¢¤ DLL c[ª libgcc Ìȩɩ©èܹñB ¯Ä¾³¢B Q: 52) "__NEEDS_SHRLIB_libc_4 multiply defined" ÌbZ[WðoÈ¢æ ¤É·éÉÍǤ·ê΢¢Ìŵ天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ÍDZÅèÉüêçêÜ·©H A: ñ: ÅVÅÍ comp.os.linux.announce ÉèúIÉ|Xg³êĨèAåv È 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[WðméÉÍǤ·ê΢¢Å·©H A: ñ: ȺÌR}hðÀsµÄ¾³¢B gcc -v ȽÌgÁÄ¢é GCC Ìo[WðmFÅ«Ü·Bi±Ì¶Íð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É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[WðRpCµâ·¢æ¤ÉìÁĢܷBGCC \[X ÆÆàÉ zu·éXNvgª Ƚ̽ßÉpÓ³êĢܷB àµA Ƚª»¨ðRpCµ½¢ÈçAÅVÌCN[hiw b_j t@CªKvÉÈéŵå¤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ÅÍDZũ¯é±ÆªÅ «Ü·©H A: ñ: ãÌ (2) ð©Ä¾³¢Bimage*/tar.z t@CªKvÅ·B486 ½ ßÌC [WÍA/pub/linux/packages/GCC/486 ũ¯çêÜ·B Q: 4) Linux żÉÍÇÌæ¤È¤LCuªg¦Ü·©H A: ñ: Ok!±±ÉAªRpCµ½Xgª èÜ·B½ÌÇÁ^ÏXÍ åÚÉÝľ³¢B ȺÉq×ét@CÍAeCuªÅßüÁÄ¢éiܽÍüÁ Ä¢éÆ ñ³ê½jt@CÅ·B P.S. ȺÌCuðæèmÀÈàÌÉ·é½ßÉACuð e·é lXAܽCu©gª tools-x.y.tar.z pbP[WÉüÁÄ¢é doc/table_description t@CðQƵܷB ±êçªÇ±ÅèÉüé©Í¿â (5) ðQƵľ³¢B ±êªALinux pÌ DLL Cuª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 CuÍt[\tgÅÍ èܹñBºLÌ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[Ì}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 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 OêIÉ 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 ðìèȨ³ ȯêÎ ÈçȢŵå¤Bµ©µAgroff ðwK¸xCXg[µÈ¯êÎ Èèܹ ñBdoc TufBNgÅAR}h `make README.ps' ðÀs·é ¾¯Å\ ªÅ·B ** m[g: o[WªÏíÁÄ¢é©àµêܹñB Q: 6) ®àøÈoCiðÀsµ½ÌÉC"PLT__oct__FUii" bZ[Wðó¯æ éÌÍȺŷ©H A: ñ: ¨»çA ȽªÁÄ¢é libc.so Ìo[WªÃ¢AÂ^Ü ½ÍA ëÁ½o[WÌ `ld' ððgÁÄvOðRpCµ½©ç Åµå ¤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@CâJ[lÌCN[ht@Câ tsx-11.mit.edu É é /pub/linux/packages/GCC/src Ì\[X©çN X RpCâNXJðìé±ÆªKvȱÆÉCÃŵå¤B linux }VÌR[hðìé½ßÌ Sparc (Sun) pÌNXRpC Ìì¬á ª èÜ·BÈPÈû@Å·B·ÅÉgÁÄ¢é linux }VðgÁÄ ¢é HLU ÉæÁÄRpC³ê½linux Cuðgp·éÈ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ÔfBNgàìéKvª é©àµêܹñ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·¢pX¼ðÅ¿ÜÈÄæÈè Ü·B .login â .cshrc t@CÉZbgµÄ¾³¢B¯lÉ DLL ÈÇÌ NXR pC̽ßÉ l-ar, l-ranlib ðg¤Kvª éŵå¤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»ê¼êÉ¢ÄVµ¢J[lð[XµÈ¯êÎ Èèܹ ñB Ì linux }V©çAsun Ö]ÌbðµÜµå¤B % rcp -r linux_machine:/usr/include ${LBINS}../ êûACN[ht@CÆJ[lÌ\[XðèÉüêéKvª èÜ·B ¿â (2) ð©Ä¾³¢B»êðWJ·éKvà èÜ·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ÆJðWJµARpCµÈ ¯êÎÈ èܹñ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 »µÄADZ©Å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 ðÒWµAKÈ MISCFLAGS ÌCÉ -I ðÁ¦ ľ³¢B »µÄAÀsµÄ¾³¢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 ðÒWµAȺðÇñÅ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) ÅãÉȺÌñÂÌ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 \[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) ÈãÌìƪI¹ãAKØÈêÉRs[µÜ·B % cp cc1 cc1plus cpp ${LBINS}../2.4.5 Ou«ÆµÄRpCð bin fBNgÉRs[µAÈPÉDZ© i½Æ¦ Î ~/binjÉNµÜ·B % cp xgcc ${LBINS}gcc % ln -s ${LBINS}gcc ${HOME}/bin/gcc-linux 7.6) È½Ì linux }V©çCuðæè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ÈÉ©RpCµÄÝľ³¢BpbP[W É© êĢ齳ñÌ梱ƪ éÌÅAȺ̱ÆðâÁÄÝܵ å¤B i È½Ì ${HOME}/bin ÉZbg·épXðª éƼèµÜ·B j % make CC="gcc-linux -O6 -s" RANLIB=l-ranlib AR="l-ar" 7.8) àµA¤L 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 tOðg¤±ÆÅ\¦³ êÜ·B P.s RpCðʵÄvOÅ "linux" Í©®IÉè`³êÜ· BPOSIX ɵĢÜw¹ñxB__linux__ ÌãíèƵÄIy[eBO VXe Ìæ¤ÈÁÊÈRpCvOªg¤×«àÌÅ·B__linux__ Í POSIX ɵĢÜw·xB ±Ì±ÆÍ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 ð¯ÄRpCµA-lbsd ð ¯Ä NµÜ·Bµ½ªÁÄAmakefile Ì CFLAGS sÉ -I/usr/include/bsd ðA LDFLAGS sÉ -lbsd ðÇÁµÜ·BàµA Ƚª BSD `®ÌVOi Ì®« ªKvÈçÎA-D__USE_BSD_SIGNAL ðÇÁ·éKvÍw èܹñxB »êÍA -I/usr/include/bsd ðgÁ½Æ«ÉA©®IÉÇÁ³êÜ·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ÌgpªKvÈ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³¹é±ÆÉæè±êçÌVOiÍñ³ê½© àµêÜ ¹ñªA»êçðñ·éÆ«ÍÌæðؾµAñÉÖµÄ̧À ðLqµ ȯêÎÈèܹñB Q: 11) libhard Æ libsoft Æͽŷ©H A: ñ: »êçÍAlG~ [V[`ÌCuÅ·Bàµiá ¦Î 387 Ìæ¤ÈjlZðs¤n[hEFAðÁÄ¢éÈç hard ðA» Ìæ¤È n[hªÈ¢ÈçlZÌG~ [Vðs¤ soft ðIðµÜ ·B àµA»ÝzzµÄ¢é Linux ðgpµÄ¢éÈçÎA±êçÌCu ÍKv w èܹñxBlZG~ [VÍJ[lxÅT|[g µÄ¢Ü ·Bi·Èí¿AàµAg¢½¢ÈçA`make config' ÉæèJ[lª ìçê½ ©çg¦Ü·Bj ¢¢©¦éÆ 387 Ídð·é±ÆªÅ«Ü·BàµA/libm.so.4.x.y ©ç /lib/libm.so.4 ðNµÄ¢éÈçAÀSÉÁ·±ÆªÅ«é©àµê ܹñB Q: 12) bZ[W "can't load library: /lib/libxxx.so, Incompatible version" Ìӡͽŷ©H A: ñ: ¤LCuªWµÄ¢ÆAvOÀsÉ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[Ìá¢ÍAvOðNµ½Cu Æ®ì ·é 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[Ìè`ƵÄÍA¤L DLL CuÅ}C i[`F WâVÇÁÖª Á½ª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ð·Æ«ÉA³µ¢Cu ª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 tOðg¢Ü·B * ¬oCiÌXgbv» - ld ̪Š-s tOðg¢Ü·B * ¬oCiÌì¬ - ld ̪Š-N tOðg¢Ü·B ±êçðgÝí¹Äg¢Ü·BàµAoCiðXgbv»µ½¢È çAèy É ld Ì "-s" IvVðgÁ½\[XɵȢž³¢B"strip" R}h ðgÁľ³¢B"man strip" ðÀsµÄÚµ¢îñð©Ä¾³¢B `ld' JÍftHgÅvOð¤LCuÉ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©ªÌvOªfobO³êA Makefile ©ç -g IvVªæèçêé±ÆðäXª]ñÅ¢éÌðmÁÄ¢ Ü·B ÊƵÄAX^eBbNÉN³ê½vOÌÈ©ÉÍåÈf obOV {ªcÁĢܷBൠȽª\tgðRpCµA»Ì®«É «µÄ ¢éÈçÎA-g ð CFLAGS ©Â^Ü½Í LDFLAGS ©çí·é½ßÉA Ó[ Makefile ð`FbNµÄ¾³¢B Q: 14) -N tOðg¤Æ½ªN±èÜ·©HܽAǤg¦Î¢¢ÌÅ·© H A: ñ: ¼zL¯ÉæéXbvªÂ\ÉÈèÜ·B-N IvVðg¤ÆAy [W«E ¢ÁÏ¢ÉlßÜê½ÂXÌZOgÌæð¿A»êçªA±µ È¢Às t@CªgpÅ«éæ¤ÉÈèÜ·BLinux ÍAÈPÉwYêé±Æ xÉæÁ ÄèÄçêéi·Á«èµ½jy[WXbvðpÅ«Ü·BÈ ºÈçA ¢Âàt@C©ç¼ÚÉÄ[hÅ«é©çÅ·B ¼ûAXbvp[eBVâXbvt@CÉæé¨IÈX bv@\ àÁĢܷB»êÉÍA½ÌÔÆfBXNXy[XªKvÅ· B XbvÍAÊíͬ³ÈvOÉÍÖW èܹñB-N ðgÁÄ RpC ³êÄ¢½ÆµÄàÅ·Bå«ÈvOiá¦ÎAgcc Ü½Í emacsjA ܽ͡ÌiKðÁÄ¢éæ¤ÈvOishell â xterm Ìæ ¤È àÌjÍA-N ȵÅRpC·×«Å·B»ÌÊAR[hy[WÍ «ê¢É èÄçêÜ·BàµAs«ÅivOðjç¹½Èç ÎA J[lͼzL¯Å®¢Ä¢égíêĢȢR[hy[Wi ÆÅ Ä[h Å«éjðíµÍ¶ßÜ·BA±µÈ¢Às`®ÅÍsÂ\Å·B µ½ªÁÄAൠȽÌvOªdvȽ³ñÌðgp ·éæ¤ ÈçÎA-N ðgpµÈ¢©AJ[lÌÇðW°éµ©È¢Å µå¤B nbLƵ½ `one-off' vOÍA±ÌtOðgpµÄRp C³ê ĢܷB·Èí¿A·ÔãÉÆÇÜçÈ¢àÌÅ·Bá¦Î A hostname, fsck, mkfs, w ÈÇÅ·Bdaemon ÅÍA±Ì -N tOð µÄ gpµwÈ¢xź³¢BãÉí·é±ÆÍÓ¡ªÈ¢©çÅ ·B Q: 15) vOÌfobLOîñÍǤ·êÎæêéÌÅ·©H A: ñ: vOðRpC·é±ÆªKvÅ·Bi·Èí¿A·×ÄÌI uWFN gj»µÄA-g tOðt¯ÄNµÜ·B¾¢·¦éÆw·×ÄÌv O xÉ -g ðt¯ÄRpCµÜ·B fobLOc[Åܾ¢Â©Ìt@Cª -g Å®¢Ä¢Ü·Bi fobL Oc[ÍoO¾ç¯Å·j-g tOðg¤æèdvȱÆÍA -fomit-frame-pointer ðgpµwÈ¢x±ÆÅ èA±êÉæèAgdb ª ²Ü©³ êÜ·B sKɵÄA¤LCuÍ«\̽ßÉÊA -fomit-frame-pointer ðt¯ ÄRpC³êĢܷB »ÌãíèÉAfobLOÉ -g ܽÍA -static tOðJÉ t¯½ èAñ¤LCuÉN·é±ÆͽȱÆÅ·BàµA»¤µ È©Á½ çAZOgὪ¶µ½Æ«ÉiANZXÌjoßð½Çé ±ÆªÅ «Ü¹ñB NÉ Can't find libg.a ÌbZ[Wªoͳê½ÈçÎ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ðµ½¢ÌÈçÎAoCiðXgbv»µÄ¢ wÈ¢x ±ÆðmFµÄ¾³¢B Q: 16) ÇÌfobKª Linux Åg¦Ü·©H A: ñ: ¦`à¿ëñAêÔ¢¢fobKÍ `gdb' Å·B¨CÉüèÌ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Ç¢Á¥ð½³ñÁĨèAàµAfobOÞ¿ ÉÔð ïâ·ÈçÎ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 vOðfobO·éû@ÍH A: ñ: ÈPÉÆAfobN·éOÉ fork µÄ¢È¢Adaemon vO ðèÉ üêȯêÎÈèܹñB µ©µÈªçA`gdb' fobKðgp·éÆ¢¤±ÆÍAforkwãxÌ daemon É attach Å«éÆ¢¤±ÆÅ·Bgdb ÉfobOµ½¢vZXÌ id ð `¦é± ÆÅfobOÅ«Ü·B ±êÉÍA`attach' R}hðgÁľ³¢BGDB Ì®SÈIC wvÍ ±±ÅÍðɧ¿Ü·B ܽA\[XðüèµÄÈÄàAoCiªXgbv³êÄ¢éÈç ÎA `strace' vOðèÉüêAdaemon ÌvZX id ÉÄAoÍ ð¸· é±ÆªÅ«Ü·B àµATµ©½ðmÁÄ¢½ÈçÎALøÈû@Å·B Q: 18) profiling Æͽŷ©HܽAvOð profile ·éÉÍÇÌ æ¤É·êÎæ¢Ìŵ天H A: ñ: profiling ÆÍADZÅÇÌ®ìÅÔªïâ³ê½©A½³ñÌi VXe R[ªêèÌÖÉæÁÄìç꽩AܽASÀsÔð²×éû@ Å·B R[hÌÅK»âDZÅsKvÉÔªQïµÄ¢é©ð©éÉÍÇ¢û @Å·B SÄÌIuWFNgÆNð profiling ·éÉÍA-p tOÅRp CµÈ ¯êÎÈèܹñB¿â (15) Ì profiling ÉKvÈCuÌüèê ð©Ä ¾³¢B ÀÛÉ graph profile ðèÉüêéÉÍA`grof' Æ¢¤vOªK 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' Æ¢¤[eBeBðgpµÄ¾³¢B±Ì[eBeBÍ Av³ êéCuÌîñðo͵ܷBàµA`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[Wªoͳêéŵå¤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' vOª®IÉN³êA3 Â̤LCu ðvµ Ä¢é±Æð¦µÄ¢Ü·BÊàÌͽ¾êÂÌCuilibX11 j𦵠ĨèAvOªRpC³ê½Æ«ÉÁÄ¢½CuÌJ go [WÅ·B`gs' ªAlZCu (libm), ÅRpC³ê ½Æ« ÍAo[W 4.0 ÅADLL CuÅÈ©Á½ÌÅ·ªAK^Éà 4.4 Ì DLL CuÅàç¹é±ÆªÅ«»¤Å·B¯lÉ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 ÌÏXªAÐÆÂÐÆÂA·×ÄÌoCiÉ»êAy·éÌ ÉåÏ ÈÔðv·é±ÆðÓ¡µÄ¢Ü·B »µÄA¿âÌñƵÄÍA4.3.3 (libc.so.4.3.4 Èã) ÈãÌCu ðg pµÄRpCµ½ÈçÎACGXÅ·Bµ©µAÊƵÄÍAw· ×ÄÌx oCiðRpC·êÎACð¯éKvÍȢŵå¤B * libc Ìo[Wª 4.4.4 ÈãÅÍA®IÉìçê½®I[_ÍK vÈC uðõAÊuïãÉ©ª©gð[fBOAA[fBO µÜ·B ±ÌÊAoCiͬ³A®I[_AJÉæéÏXÍ libc © çu£³ êÜ·Bld.so pbP[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 Ì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ð ©Â¯é ±ÆÅj¤LCuÌDZðT·©ðmÁĢܷBµ½ªÁÄAI [o[w bhð¸ç¹Ü·B êû Linux ÍA±ÌîñðL^µÄ¢Ü¹ñªA»ÌãíèƵÄN ÉKvÈ CuÌ^CiÀst@CjðTµÜ·B Linux ÅoCiðÀs·éÆ«AàµALD_LIBRARY_PATH ªwȯêx ÎA ^CÉCuðN·é½ßÉÅ /usr/lib É /lib »µÄ / ðTµ Ü·B±êÍA"úÒT[`pX" ƵÄÆï³êÜ·B ¦ / ÍA{ÍT[`pXÅÍ èܹñª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[giuid ª 0jÅ éÈç ÎALD_LIBRARY_PATH ÍAúÒT[`pXɵ½ªÁÄTµÜ·B àµA»êÈOÉÊÌ[Uiuid != 0jÅ èAÀs·éoCiª suid Às`®ÌêAlibc.so.x ÆKvÈCuͧIÉúÒõpX ÌDZ ©©ç[h³êÜ·BLD_LIBRARY_PATH ͳ³êÜ·BiÀS Zbgó Ôj±êÉæèA©gÌG~ [V©çÊÌ[UÅÍâ~µÜ ·B á¦ÎAsetuid() ÍA©ªÅìÁ½ libc CuªÄÎêÜ·B ÅãÉAàµAm[}[UÅÀs·éoCiªwÊÌxoCi ÈçA LD_LIBRARY_PATH ÍÅÉKvÆ·éCuðTµÜ·B àµA[UÌ LD_LIBRARY_PATH ÅCuª©Â©çȯêÎAõ pX ƵÄwúÒT[`pXxðZbgµÄõð±¯Ü·B±Ì±ÆÅAë Á½A ³ÊÈ LD_LIBRARY_PATH ðZbg·éâèððµAKØÈ[U[Ìo Ci ðÀsµÜ·B Q: 21) ÌvOÅÍ /lib/cpp ªKvÅ·BDZ©çèÉüê½çæ¢ Ìŵ天H A: ñ: cpp Í /usr/lib/gcc-lib/i386-linux/2.5.7 ÌÉ èÜ·B (gcc Ìo[Wio[ÍÏíÁÄ¢é©àµêܹñ) ȺÌ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 ÌRpCðgÁÄ¢éÈç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> ÍDZŷ©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ÌRpCðgÁÄ¢éÈç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ð èÉüêéKvª èAWJãANð£é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Í»êçÌNðnß©çÁĢܹñ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îñððÍ·é±ÆÅêªí©éCuðCN[h·éK vª é±ÆðÓ¡µÄ¢Ü·B Q: 25) vO XXX ð Linux ÉÁÄéÉÍǤ·ê΢¢Å·©H A: ñ: ¾ê©ªALinux ÉvOðwÁÄ«½xÉßÁľ³¢B àµALinux ÉÁÄ«½à̪½àÈ©Á½çAÓ¡ª èܹñB {CÅl¦éÆAêÊIɬÏXƵÄÍALinux pÉ 100% POSIX ɵ ½ªÁÄ ÒWµ½\[XªKvÅ·B ³ÌvOR[hªÏX³êÄࢢæ¤ÉA«IÉÍ `make' ¾ ¯ÅÀs `®ðìêéæ¤É·×«Å·B àÁÆàæN±éâèÌêÂƵÄAêÊÖª Linux Ìwb_t@C É}N Åè`³êÄ¢ÄAvvZbTªR[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 ©çÌ¿l éRg | +----------------------------------------+ ±êÍAUnix Ì\tgEFAð Linux ÉÁÄéƫɶ·éÅ ë¤âè ðLqµÄݽàÌÅ·B C Å©ê½\tgEFAÅ éƼèµÜ·B Linux (¾¢·¦éÆALinux ÌVXeR[Æ C CuÖ) Í AÅ«é ©¬èAPOSIX Ý·ÉßïĢܷB±ê©çZ¢XgðìÁÄÝÜ ·B âè 1: select() Ì timeout p^ ------------------------------------ ó: üÍÅ CPU ðH¢ÂÔ·|[Oð·éæ¤ÈvO âè: select() ÍVXeR[Å·Btimeout p^ÍAÃTIÉVXe ÅÍA [hI[ƵÄgíêÜ·B¢Â©Ì}j AÉÍA3 NÈã O©ç Lq³êĢܷB select() ÍAÜÁ½êÅÔªÏX³êéƨ¨æ»IWi Ì timeout ©çcÁ½ÔðԵܷB±Ì±ÆÍA«A⫳êé Åµå ¤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^[gµ½AܽÍ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() ðg¤jC Xg[ ³ê½VOinhðÁĢܷBVOiª¶·éÆVOi nh ªÄÑo³êÜ·B±Ì»ÛÍAÙ©Ì UNIX VXeÌêAñ¯úA Ü½Í @@ 2, 3 Ìx¢VXeR[ÅN±èÜ·B VOiªx¢foCXit@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ª·ÅɶݵĢé½ß· ®ÉÍ ßÁīܹñBVOiðLb`·éÖªÀs³êAVXe R[ èݪ errno É EINTR ðZbg·évZXðÄÑoµA-1 ð ﵆ ·B Linux iPOSIX àÜÝÜ·jÅÍAVOið`FbNµAVOin 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 tOªµ½VOiƵÄZbg³êÄàAÙÆ ñÇÌê AVXeR[ÍVOinhÀsãA©®IÉX^[gi± sjµA ȽÌ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 tOðgpµÈ¯êÎÈèܹñ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 ¦ÁÆAàµAvOªÙíI¹AܽÍúÒÊèÉ®©È¢ÈçÎ Aܸ ÅɵÄÝÄAsÉR[hðièñÅAmFµÄ¾³¢B ÃIo[WƤLo[WÇ¿çÅඵܷ©H i·Èí¿ADLL CuÆÃICuÇ¿ç©Ìâèŵ天 Hj gcc ÌéÊÌ}Vðg¤±ÆÍÅ«Ü·©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' ðÄÑo·A Ü½Í gp·éÈPÈ `cp' ͱÌ\ñÌæðgpµÜ·B ȽÍACuðì¬ãɬ³·é±ÆªÅ«Ü·B Q: 28) /usr/lib àÉ é .sa t@CÆͽŷ©H A: ñ: .sa t@CÆÍA¤LCu©ç²«o½àÌÅ èA³È Cu ©çæèoµ½·×ÄÌO[oÏðÜÝA^CðN·é ½ßÉ KvÈÖð|CgµÄ¢Ü·B¿â (13) ðQƵľ³¢B Q: 29) Linux pÌIuWFNgwüÌ C ÍDZÅèÉüêçêÜ·©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ÊAv½IVOiÌ 11 ÍARAM Ì peBG[ân[háQðÓ¡µÄ¢Ü·Bàn[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ÉsÁ½AܽÍ[hI[Ì æÉ« ÝÉsÁ½±ÆðÓ¡µÄ¢Ü·B½ÜÉA±ÌVOiÍ\tgÌo OŶ ·é±Æà èAn[háQÆÍÀèܹñBiܽÍVXeÌJèÔ µ nOBȺÈçJ[lů¶ªN«é©çÅ·Bjgcc 2.3.3 ÅÍ A½l© ª½³ñÌhVOi 11hðÄ»µÜµ½B ܽA`ld' â `as' ÌÅÌáQƵÄඵܷBàµAcc1, cpp, Ü½Í ld Éâèª éÆ·êÎAgcc Å -v tOðt¯ÄRpCµÄm FµÄ Ýľ³¢B Q: 31) libc.lite Æͽŷ©H A: ñ: libc.lite ÆÍAtbs[^pÅÙÆñÇÌÚµ¢(ó:Ó¡s¾) UNIX Ì ^XNð«·é½ßÌ libc CuÌy¢o[WÅ·±êÉÍ Acurses, dbm, termcap ÈÇÌR[hðÜñŢܹñBàµA È½Ì /lib/ libc.so.4 ª y¢CuðNµÄ¢éÈçÎAto[WÉu«·¦é ð¨©ß µÜ·BDZÅèÉüêçêé©Í¿â (3) ðQƵľ³¢B Q: 32) Linux ÌCuÍ SHADOW Password ðT|[gµÄÜ·©Hܽ AIEItÍǤ·êÎæ¢ÌÅ·©H A: ñ: T|[gµÄ¢Ü·B KÈêÉ SHADOW_PWD ðè`µÄRpCµAshadow Cuð N ·éKvª èÜ·Bshadow CuÍȺÅüèÅ«Ü·B sunsite.unc.edu:/pub/Linux/distributions/SLS/a4/shadow.tgz ïÌIÉÍ Makefile Ì CFLAGS sÉ -DSHADOW_PWD tOðALDFLAGS sÉ -lshadow tOðÇÁ·ê΢¢ÌÅ·B \[XrbgðÏXµÈ¯êÎÈçÈ¢©àµêܹñµAshadow ðT| [gµ ½ "cript()" ÍÖÅÍÈA}NƵÄñ³êÜ·B »êä¦A·×ÄÌ "extern int crypt()" ÅàÂÜéàµêܹñ B ±êÍAgetpwent(), setpwent() »Ì¼Ì[`ðgÁ½w·×ÄÌx KvÈ oCiðRpC·é±ÆȵÅÍAshadow password ÌIEIt ðs¤ û@ªwÈ¢x±ÆðÓ¡µÄ¢Ü·B Q: 33) math.h [`ª©Â©èܹñBvOðRpCµÄ¢é ÌÅ·ªA log(), sin() ÈǪ©Â©èܹñB¾ê©A¯ÄI A: ñ: ³µ¢Öðgpµ½vOðRpCµÄ¢éêAKØÈ Cu ðvOÉwK¸xNµÈ¯êÎÈèܹñBlZÖðg ¤ÉÍ NÉ libm.a ðCN[hµÈ¯êÎÈçȢƢ¤±ÆÅ·B ¾¢·¦ éÆ LDFLAGS É -lm ðAcurses ÖÅÍ -lcurses ð dbm ÖÅÍ -ldbm ÈÇ ðÁ¦éKvª èÜ·B ÊÍAIuWFNgÌãÉ -lm tOðu«Ü·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 Ì}j AÍ èÜ·©HൠéÈçADZÅèÉüêçêÜ ·©HܽAǤ·êÎóüÅ«Ü·©H A: ñ: }j AÍ 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 Ì}j AðKvƵĢéÈ çA GCC ªu¢Ä éDZ©Ì[J ftp TCgâ»Ì¼Ì FSF ÌsÌ æ¢Æ± ë©ç·×ÄÌ\[XðèÉüêȯêÎÈèܹñBGCC Ì\[X©ç TeX Å Ì}j AðìéKvª èÜ·B àµA ȽªCuÌt@NVR[Ì}j AðTµÄ ¢éÈ çAglibc ÌSÄÌ\[XªKvÅ·B±êÍAGCC Ì\[Xª é ftp TCg Ư¶êÉ èÜ·BÄÑA}j Að쬷é½ßÉ TeX ªKvÆ ÈèÜ ·B ±Ì}j AÅӷ׫_Í 900 y[WÌ嫳Šé±ÆÅ·B n}ðæÁĨ«Advi t@CƵÄICÅÛ¶µÄ¨¢Ä¾ ³¢B wîñxt@C©çéÇ¿çÌpbP[Wà Gnu info â xinfo, emacs ðg pµÄ©é±ÆªÅ«Ü·Bwîñxt@CÍîñVXeÉîâ½ nCp[ eLXg`®Å·B Q: 35) "Undefined symbol _bsd_ioctl" ÌbZ[Wªoܵ½BǤ·êÎ ¢¢ÌÅ·©H A: ñ: NÉ /usr/lib/libbsd.a Æ¢¤ bsd ÌCuðCN[ 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: ñ: ¦ÁÆAàµAgcc ÌeXgo[WÅȯêÎAfBNg©ç â o[Wðæè±ÆÍSâè èܹñB "gcc -V <old-version>" Æ·é±ÆÅâo[WÌ GCC ÅRpC·é±ÆªÅ«Ü· B Q: 37) w¯Äxlibipc.a ÍDZŷ©Hdosemu 0.49 ̽ßÉKvÈÌÅ ·ªB A: ñ: Inter Process Communication (IPC) ÖÍWÌ libc >= libc.so.4.4.1 É èÜ·BàµA ȽªÁÄ¢é libc ª libc.so.4.4.1 Èã¾Á½ êÍA -lipc ÍKv èܹñBMakefile ©ç»ÌsðÁµÄ¾³¢BàµA libc.so.4.4.1 ¢¾Á½êÍACuðo[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[WAbvªKvÅ·B¿â 12 Æ 3 ÌTvð ©Ä¾ ³¢B Q: 41) c ÌvOÌRpCÌOÉ`FbN·é `lint' ÍDZŷ© H A: ñ: `lint' Ìæ¤ÈvOð`FbN·éæ¤ÈàÌÍ èܹñB» Ìãíè ÉvOð`FbN·éÉÍ gcc ÌßxÌIvVðg¢Ü·B} j A É¢Ä é¢ë¢ëÈIvVð©Ä¾³¢B ÅàøÊIÈàÌÍȺÌIvVÅ·B % gcc -Wall foo.c ±ÌIvVÍN±éÅ ë¤Â\ÈÀèÌ[jOðo͵ܷ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: ñ: ±êÍA®IJ^[_ªCXg[³êĢȢ±ÆðÓ¡µ Ä¢Ü ·B¿â 4 Ì libld.so Ìüèû@ðQƵľ³¢B Q: 45) -O2 Æ -O6 ÅÌø¦Ìá¢Í½Å·©H A: ñ: »ÝÍ èܹñBàµA Ƚª i386/i486 ÌzXg / ^[Qbg ÆµÄ GCC Ì\[XR[hð©Ä¢éÈçA-Ox Å x>2 Ìêͯ¶àÌÅ é ±Æªí©éŵå¤BÀÛAMakefile Å x>2 ðgp·é±ÆÍ«¢ ±Æ Å·BȺÈçAGCC ª« -O3 Æ¢Á½ÅK»IvVðCe iÌ `bvjð^[QbgÌp·é©àµêÈ¢½ßA»ÌÅK»ÉæÁÄ oÍ ³êéR[hªjó³êé©àµêܹñB Q: 46) os¾ÌoCiªgCÌØnÌæ¤ÈEBXÉ´õµÄ¢é© Ǥ©`FbN·éû@ÍH A: ñ: ÅÉAàµA ȽÌ}VªEBXÉ´õµÄ¢é©SzÈçÎ A®©³ wÈ¢x±ÆÅ·iÈÆà root ÅÍjB»µÄA\[Xð©Â¯Ä Rp CµÄ¾³¢B¼Ìû@ƵÄÍA"string <filename> | less" Æ üÍ·é±ÆŽç©ÌîñªèÉüé©àµêܹñBàµA®©·q Éoé ÈçÎA½©s¸È®«ð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 àµA¤LCuª~µ¢ÈçAdll c[pbP[WªKvÉÈé Åµå ¤B¿â (5) ÌüèêðQƵľ³¢B Q: 48) FD_* Ìè`ÍÇ±É èÜ·©H A: ñ: <sys/time.h> ÉÜÜêÄ¢ÄA}NàÇÁ³êéŵå¤B Q: 49) -g IvVtÅ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 É Abvf [g·éKvª èÜ·Bµ©µAâ libg.a ÖWªcÁĵܢܷ B àµA{ÉfobOCuÉæéX^eBbNoCii-g ÌÓ¡ ·éj ªKvÈçÎAlibg.a ðüèµÄCXg[·×«Å·B ±êÉ¢ÄÍ¿â (15) ð©Ä¾³¢B Q: 50) í½µÌCuâAvP[VðÛ»·éc[ÍDZÅè ÉüèÜ·©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[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`® ÌtH[ }bgÅ·Bµ©µA}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@Cªzt³êĢܷ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[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 Ǥ©ACªðQ³È¢Å¾³¢BÌPÈé~XÅ·ÌÅBÉdq [ð ¾³¢BC³µÜ·ÌÅB ======================================================================= ======== ±Ì FAQ ð Linux p GCC ̾mÈñÌóÉÉ·é½ßÉAdq[Éæ é¿âð (àµAñà éÈçÎA»êà) Z³AÇÁµĄ̈è`¢ðµÄ¾ ³¢B Mitchum DSouza <m.dsouza@uk.ac.cam.mrc-apu> -- comp.os.linux.announce ÖÌ²Ó©Í linux-announce@tc.cornell.edu ÜÅ B