The Linux ELF HOWTO Daniel Barlow <daniel.barlow@linux.org> 1996/07/14 ±¶ÜÝÂÐë <isle@st.rim.or.jp> (11/4) ±Ì¶Í È½Ì Linux VXeÅ ELF oCi`®ÌvOðR pCµÄ®©·½ßÌû@ðÜÆß½àÌÅ·B±Ì¶Íå«A(1)ELF Æͽ©AȺÚsµÈ¯êÎÈçÈ¢©A(2)Ǥ·êÎ ELF `®ªg¦é æ¤ÉÈéÌ©A(3)ELF É·êνªÅ«éÌ©AÆ¢¤ 3 Â̪ɪ© êĢܷBª¤É¢»µñÅ¢étðµÄ¢éÔA±Ì¶ÍúÁ½ 穵ÉÈÁĢܵ½ªAÅß Linux 2.0 ÌîñðÇÁµÄSÌðI[o [z[µÜµ½B Ó: ±Ì¶Í©ÈèÈOÉ©ê½àÌÈÌÅA¢ÜÇ«Ì Linux « ÉÍ ÄÍÜçÈ¢Óª èÜ·B (JF Project) 1. ELF Æͽ©H ÈPÈÐî ELF(Executable and Linking Format)ͳX USL(Unix System Laboratories) ÅJ³ê½oCi`®ÅA»ÝÍ Solaris â System V Release 4 ªÌ pµÄ¢Ü·B Linux ª©ÁÄgÁÄ¢½ a.out `®Éä×ÄAELF `®Í _î«ÉxÞÌÅAGCC Æ C CuÌJÒ½¿Í Linux ÌWIÈo Ci`®ð ELF ɵæ¤ÆèµÜµ½B u_î«ÉxÞvÆ¢¤ÌÍAWIÈAvP[VvO}É 2  Ì_ð^¦Ü·B o ELF `®ðg¦Î¤LCuª¸ÁÆÈPÉì¬Å«Ü·BÊíA -fPICIvVðt¯ÄRpCµ½IuWFNgt@CðA gcc -shared -Wl,-soname,libfoo.so.y -o libfoo.so.y.x *.o Æ¢¤R}hCÅN·é¾¯Å·B ±êª¡GÉ©¦éæ¤ÈçÎA½ª a.out `®Å¯¶æ¤È¤LCu ðìéû@ðä¶mÈ¢Ìŵå¤Ba.out `®Å¤LCuðìé½ ßÉÍACuð 2 xRpCµÄACuª«g¤Å ë¤ SÄÌf[^̽ßÌóÔð 究ß\ñµA\ñ³ê½AhXóÔÍS ÄÌJÒÔÅo^µÄ¨©ËÎÈèܹñ(ÚµÍ <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/src/tools-2.17.tar.gz> É é 20y[Wð´¦é¶ð²¾³¢)B o ®I[fBO(®ìÌvOªW [ð[hÅ«é@ \)ð¸ÁÆPÉÀ»Å«éB±Ì@\Í Perl 5 â Python, Java ÈÇ ÅgíêĢܷ(³Ü´ÜÈíÞÌC^[v^ÌN®ÉgíêÜ ·)B®I[fBO@\Ìà¤êÂÌg¢¹Í super-fast MUD Å·B ±ÌêAvOðâ~µÄÄN®·é±ÆÈAVµ¢vO ðRpCµÄ®¢Ä¢évOÉgݱޱƪÂ\ÉÈèÜ ·B ±Ìæ¤È_ÉεÄAELF ðg¤Æ½xÈéAÆ¢¤½_à èÜ ·B 1% ©ç 5% ç¢xÈéÆ¢¤ÌªÊàÅ·ªAÀÛÌeXgª¦· Êð©éÆA»Ì·Í¯ÉNÁÄ¢é³Ü´ÜÈmCYÉB³êĵܤ öxÌàÌÌæ¤Å·BTeX â Postscript Ìr [/v^ðÁÄ¢ êÎA SunSite ÈÇ©ç speed.comp-1.0.tar.gz Æ¢¤ ELF Æ a.out ̬ xðärµ½_¶ðüèµÄÇÞÌࢢŵå¤B ELF `®ªxÈéÌÍ ELF ÌCuR[hª|WVCfyf gÅȯêÎÈçÈ¢±ÆÉRµÜ·(RpCÌ -fPIC IvV ªÓ¡·é±ÆÅ·)B|WVCfyfgÅ é½ßAêÂÌW X^ðItZbgÛpÉgíȯêÈÎÈçÈÈèÜ·B»Ì½ßAÏ ðÛ¶·éÌÉg¦éWX^ªê¸ÁĵܢܷBÁÉ 80x86 CPU Å ÍêÊIÉg¦éWX^ª³Xs«µÄ¢Ü·B¬xÉ·ªoéÌͤL CuÌR[hÉÀçêÄ¢é±ÆÉӵľ³¢BAvP[V âJ[lÅÍ a.out Æ ELF ÌÔŬx·Í èܹñB 1.1. ELF ͽÅÍÈ¢©H ELF »·êνªÅ«é©É¢ÄA½ÌëðªLÜÁĢܷB SVR4 â Solaris ÌvO𮩷½ßÌàÌÅÍ èܹñ ELF Í SVR4 VXeƯ¶`®ÌoCiÌ`eí'Å·ªA¾©çÆ ¾ÁÄA ELF É·êÎ SVR4 pÌvOªËR Linux Åàg¦é í¯ÅÍ èܹñB±ÌÖWÍfBXNtH[}bgÆÄ¢éÅ µå¤ -- Linux ÌvOð MSDOS â Minix ÌtH[}bgÌ fBXNÉÛ¶µ½èA»ÌtàÂ\Å·ªA¾©çÆ¢ÁÄ»ê¼ê ÌVXeªÝ¢ÌvOðÀsÅ«éí¯ÅÍ èܹñB (»ÌvO©gÉ˶µÜ·ª)¼Ì x86 Unix pÌvOð Linux Å®©·±ÆàÂ\©àmêܹñªA±Ì HOWTO ÅÍA»Ì ½ßÌà¾ÍvµÜ¹ñBܸ(tsx-11.mit.edu ÈÇÉ é)iBCS J[ lW [É¢IJ×é±Æ©çnßܵå¤B vOª¬³Èéí¯ÅàA¬Èéí¯Åà èܹñB ¸ÁÆÈPɤLCuªìêéæ¤ÉÈÁ½ÌÅA¡ÌvO ÔŤʵĢéR[hðCu»·êÎAÊƵÄæè¬ ³ÈvOð쬷±ÆàÂ\©àmêܹñªAêÊIɾÁ ÄA¯¶RpCIvVðwèµÄoCiª a.out æèଠ³ÈÁ½ÈçA½Ü½Ü^ªÇ©Á½©ARpCÌo[Wª ᤽ßŵå¤Bàµu¬vÈÁ½çA¿åÁÆÑÁèÅ·B¤ LCuðpµÄvOª¬³ÈÁ½½ßAXbvª ¸Á½èAæè½ÌðpÅ«éæ¤ÉÈÁ½ÈçÎA¬È é±Æà è¦Ü·ªB SÄÌoCiðu«Ö¦éKvÍ èܹñ ±Ì¶ÌèÉ]¦ÎAELF Æ a.out ÌoûðRpCµÄ®© ·VXeð\zÅ«Ü·BVµ¢vOÍftHgÅÍ ELF `®ÉRpC³êÜ·ªA±êÍR}hCXCb`ÅÏXÅ «Ü·BELFÆ a.out ð¯É®©µ½êA¼ûÌ C Cuð ÇݱÜȯêÎÈçÈÈéÈÇA½Ìgpø¦Í«Èè Ü·BàÁÆàA±Ì·Íð 6Mb Ïñ¾}VÅÍÙÆñÇC éȢöx¾»¤Å·ÌÅ(8Mb Ì}VÅÍàÁÆCëܹñÅ µ½)A ÜèCÉ·é±Æೢŵå¤B½µëAEmacs âÃI N³ê½ Mosaic/Netscape Æ¢Á½ðåH¢·évO ðúÌæ¤É gÁÄ¢éŵåH :-) g[LÆÍÖW èܹñ ÈÆà±Ì¶¬É¨¢ÄÍB 1.2. Ⱥ ELF ÖÚs·×«© ELF ðg¦éæ¤ÉVXeðAbvO[h·éÌÉÍAåÉ 2 ÂÌR ª èÜ·FܸæêÉAãqµ½æ¤ÉvOª¸ÁÆ_îÉÅ«é± ÆBæñÉAæêÆàÖAµÜ·ªA¾ê઻¤µæ¤ÆµÄ¢é( é¢ ÍùÉ»¤µ½)©çB«Ì C Cuâ GCC Í ELF pÌݪ[X ³êÜ·µA»êÈOÌvOÌJÒ½¿à ELF ÌûÖiÞ͸Š·B ELF ÌÀè«ÉsÀð´¶Ä¢élXà¢Ü·(ùõÈbÅÍ èܹñªA ṞÆÅ·)BLinux Ì¢EÅ ELF Í 1994 NÌÄ©ç¶ÝµÄ¢Üµ ½B»Ìã 1995 NÌ 5 © 6 ²ëêÊÉöJ³êܵ½B»ÝÅÍAv ½IÈâèͶݵȢŵå¤Bå«Èo[WAbvð·éɵε ÎN«éæ¤ÉA«¿ñÆ®¢Ä¢éVXeðóµ©ËȢƴ¶Ä¢él à¢é©àmêܹñBÅàA±Ìo[WAbvÍàÍâÅæ[ÌZpÅ Í èܹñBJpÌVXeâ¼ÌlªRpCµ½oCi𮩵 ½¢êÅÍAELF ÍK{ÌàÌÉÈè èÜ·BJ[lð v2.0 Éo [WAbv·éÛÉ ELF ÖXCb`·é±Æðl¦Ä¾³¢B 1.3. ELF ÖÌÚsÌdû ±Ì HOWTO ªÅÉ©ê½ÉÍ ELF ÖÚs·éû@ÍA±±Éq×½û @굩 èܹñŵ½B¡úÅÍAi¿ÅÈPÉVµ¢o[Wð CXg[Å«éæ¤ÈfBXgr [Và¶ÝµÜ·B ȽÌ} Vð¨DÝÌÝèÉ` [jO·é±ÆÉ©©éÔðl¦éÆA鼃 q×éCuâRpCð²¿á²¿áɵĵܤæèÍKvÈf[ ^ðSÄobNAbvµÄÅVÌ Red Hat â Debian ðCXg[µÄµ ÜÁ½ûª¢¢©àmêܹñB ²µÄ¨«Ü·ªAȺÉq×éCXg[û@Í»ê©gƵÄÍÈP ÈdÅ·(Vµ¢\tgEFAð_E[h·éÔð¯ÎêÔà êÎ\ªÅµå¤)ªAVXeªÄN®Å«ÈÈéæ¤È¸sÌÂ\«à ¿±¿É èÜ·B¤LCuðo[WAbvµ½È©Á½èA ldconfig â ldd Æ¢Á½R}hðä¶mÈ©Á½èA\[XR[h©çK vÈvOð쬷é̪Ê|¾Á½è·éÈçÎAuæèÈPÈû@v ðIÔûª¢¢Åµå¤B»êàÈêAÆÉ©±¤¢¤Él¦ÄÝÄ ¾³¢ -- u®SÈ ELF VXev̽ßÉÍAN©ª SÄÌoCið »ÌãÅRpCµ¼³È¯êÎÈçÈ¢ÌÅ·B »êÅàâèÜ·©H 2. CXg[ 2.1. obNOEh ±±É¦·ÚsèÌÚIÍAa.out Æ ELF ÌoûðRpCµÄ®©· ±ÆÌÅ«éVXeð\z·é±ÆÅ·B»Ì½ßÉÍoûÌvOª KØȤLCuð©Â¯çêȯêÎÈèܹñB±Ì½ßÉÍA¼Ì ¢Â©ÌVXeªâÁÄ¢éæ¤ÉAPÉ `/lib Æ /usr/lib »µÄ RpCÉwè³ê½fBNgðSÄT·' Æ¢¤û@æèà½È èÆà«¢û@ªKvÅ·B «¢û@ÌSÉÊu·é̪VXeÌãÉêÂA é¢ÍñÂA¶Ý·é ®I[_Å·Ba.out ÌvOpÉÍ /lib/ld.soA ELF ÌvO pÉÍ /lib/ld-linux.so.1 ª»ê¼ê®I[_ÉÈÁĢܷBRpC âJÍoÍ·évOÉCuÖÌâÎpXðß±Þ±ÆÍ µÜ¹ñB»ÌãèÉACu¼ÆKØÈ®I[_ÖÌâÎpXðß ±ÝÜ·B»µÄAÀsÉA(®I[_ª)KØÈCuÉѯé í¯Å·B±±ÉdvÈ駪 èÜ· -- ·Èí¿A évOªgÁ Ä¢éCuªÊÌfBNgÉ®©³êÄàAvOðÄRp C·éKvÍÈAld.so ( é¢Íld-linux.so.1) ÉVµ¢fBNg ðTµÉsæ¤Éw¦·é¾¯ÅÏÝÜ·B±êªÈºÉq×éfBNg ðüêÖ¦éìÌqÅ·B ãL©ç±©êé_ƵÄAld.so ðíµ½èÚ®³¹½è·êÎA®I NðgÁÄ¢évOÍSÄ@\µÈÈéAÆ¢¤±Æªí©èÜ ·B±êÍÇÈ¢±ÆÅ éAÆêÊÉl¦çêĢܷB Å·©çAî{IÈvæƵÄÍAELF pÌJ«(RpCACN [ht@CACu)ðA¡Í a.out pÌà̪ é /usr/{bin,lib,include}Éu«Aa.out ÖAÌt@CÍ /usr/i486-linuxaout/{bin, lib, include} ÖÚ·±ÆɵܷB /etc/ld.so.conf ÍCuª©Â©éÅ ë¤êSÄÌXgÉÈÁÄ ¨èAldconfig Í ELF Æ a.out ð©í¯é\ÍðÁĢܷB CuÌêÉͽÌáOª èÜ·B o âvOÌ¢Â©Í ld.so ðgí¸ÉìçêĢܷB±êçÌ vOÍCuªÊÌêÉÚ®·êή©ÈÈèÜ·BÅ· ©çAൻÌæ¤ÈvOðgÁÄ¢éÈçÎA libc.so* â libm.so Í/lib É»ÌÜÜcµÄ¨©ËÎÈèܹñBELF pÌCu Íåo[WÔªÙÈÁÄ¢éÌÅAa.out Ư¶fBNgÉ u¢Äà㫵ĵܤ±ÆÍ èܹñBâ X ÖAÌCu (version 6 ÈO)à»ÌÜÜÌêÉcµÄ¨Ìª¢¢Åµå¤Bê ûAVµ¢o[W(libX*so.6 ÍÊÌêÉu©ËÎÈèܹñBâ Cu𮩷ÆAxview ÖAÌvOª®©ÈÈèAVµ¢ CuðÊÌêÉuæ¤ÉµÈ¢Æ ELF pÌ X CuðC Xg[µ½ÛÉâàÌÉ㫵ĵܢܷB ãLÈOÌCuðKvÆ·é ld.so ðgÁĢȢvO𨠿Èç(ÇÌvOªY·é©ªÁÄ¢êÎAOàÁÄ»êçÌv Oð ldd Ų×ÄAKvÈCuð`FbNµÄ¨«Üµå ¤)A2 ÂÌû@ª èÜ·BêÂÍAELF Cuð¼ÌfBNg ÉWJµÄAKvÈCuÉ㫳êé©Ç¤©ðmF·é±ÆÅ ·Bàµã«³êéæ¤ÈçÎAELF ÅÌCuÍ /lib ÆÍᤠêAá¦Î /usr/i486-linux-lib Öuæ¤ÉµÜ·B»µÄ ldconfig µÄ»ÌfBNgªQƳêéæ¤ÉµÜ·Bà¤êÂÌû @ÍâèÌvOÌVµ¢o[WðüèµÄRpCµ¼µÄ µÜ¤±ÆÅ·B±êÍ\[XR[hªüèÂ\ÈçÎA»¤«¢ACf AÅÍ èܹñB o /usr Æ / ªÊÌp[eBVÉÈÁÄ¢éêA/lib ©ç®©·C uÍA/usr Ì ép[eBVÅÍÈA[gp[eBVÌ éfBXNãÉuKvª èÜ·BȺÌáÅÍ /lib-aout Éuæ ¤ÉµÄ¢Ü·B 2.2. nßéOÉ --- ӷ׫|Cg o ELF tH[}bgÌoCi𮩷±ÆÌÅ«é 1.1.52 È~ÌJ[l ðgÁÄ¢é±ÆðmFµÄ¾³¢B1.2.13 ÅàåävÅ·BÙÆñ ÇÌ 1.3.x ¯lA2.0.0(±Ì¶ð¢Ä¢é¢é_ÅÌÅVÅ)Åà ®«Ü·ªA2.0 ª[X³ê½¡ÆÈÁÄÍAâuÀ±ÅvÌJ[ l(1.3.x) ðg¤KvÍȢŵå¤B o Slackware Ì~}(rescue)fCXNÌæ¤È boot/root fBXNðpÓµ Ĩ«Üµå¤B½ªKvÉÈé±ÆÍ èܹñªAKvÉÈÁ½É è³É³¢ÆUXÈÚɢܷB¯lÉAmv â ln Ìt@Cìp ÌR}h(ÀÛÌƱëAshell Ìà R}hÅKvÈìÆÍÙÚÂ\ ¾Æv¢Ü·ª)ðÃINÅìÁĨ±Æàu¡Ãæèà\hvIÈ õƵÄð§Â©àmêܹñB o àµAELF ÌJðÇ¢©¯Ä¢½ÈçA/lib/elf É ELF pÌCu (ÊíÍ libc.so.4 ÈÇ)ª é©àmêܹñB±êçÌCuð g¤AvP[VÍÄRpC·éKvª èÜ·B»ÌãÅ±Ì fBNgÍíµÜµå¤B/lib/elf fBNgÍsvÅ·B o ÅßÌ Linux ÅÍ `FSSTND(t@CVXeX^_[h)' É]ÁÄA WIÈt@CVXeÍzu³êéæ¤ÉÈÁīܵ½ªA»¤Å È¢VXeàܾܾ é±Æŵå¤BàµÈºÌà¾Å `/sbin/½ ½ç' ðg¤æ¤ÉÈÁÄ¢éÌÉA©ªÌVXeÉÍ /sbin fBN gª³¢êA»êçÌvOÍ /bin © /etc É é͸ŷB Vµ¢vOðCXg[·éêAÁɱÌâèÉÍ ¾³¢BR}hðõ·épXXgÅ /etc ª /sbin æèàOÉÈÁ Ä¢êÎAmçÈ¢¤¿É(/etc/É é)âo[WÌR}hðN® µÄµÜ¢AÈG[ðN·êª èÜ·B o ELF ÖÚs·éÛÉÍNàRs [^ðgÁĢȢÔðIÔ©V OE[U[[hÅs¢Üµå¤BÔá¢ðN³È¢æ¤ÉAtb s[©çu[gµÄìÆ·éÌࢢACfAŵå¤BÅàAÂlÆ µÄͽÌÌÊ¢vfàcµÄ¨«½¢ÆvÁĢܷ :-) 2.3. KvÈàÌÍAAA KvÈpbP[WÍA <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/> â <ftp://sunsite.unc.edu/pub/Linux/GCC/> ©çüèÂ\Å·B¼TCgÆà ½ÌêÉ~[³êĢܷÌÅAÂ\È©¬èßÉ é~[TC g[óFú{ÈçÎ <ftp://ftp.iij.ad.jp/pub/linux/sunsite/GCC/> â <ftp://ftp.spin.ad.jp/pub/linux/sunsite.unc.edu/GCC/> ÈÇ ] ©çTµ ľ³¢B»Ìûª ȽÉÆÁÄàAÝñÈÉÆÁÄàAǬüèÅ «é±ÆÉÈèÜ·B Ⱥɦ·pbP[W(XgÉ ªÁÄ¢éo[W©æèVµ¢àÌ)ª KvÅ·B±êçð_E[hµÄA»ê¼êÉt®µÄ¢é¶ðÇñÅ Ýľ³¢FKvȶͽ¢Ä¢ release.packagename Æ¢¤¼OÉ ÈÁĢܷBȺɦµÄ¢éo[WæèàVµ¢o[Wðüèµ ½êAK¸[Xm[gÉÚðʵľ³¢B»êçVµ¢o[W ÅÍCXg[Ìû@ªÏÁÄ¢é©àmêܹñB vOÍíÉ\[X©çRpC·éÆ¢¤lÅàAȺɦ·vO ÍoCiÅðüèµÄ¨g¢ÉÈé±Æð¨©ßµÜ·B±êçÌ vOÌÙÆñÇÍ a.out ÅÌVXeÅ ELF `®ð¶¬·éæ¤ÉÍ Ýè³êĨç¸Aa.out Ì«ÅRpCµæ¤ÆµÄà³ÊÅ·B 2.3.1. âÎÉKvÈàÌ o ld.so-1.7.14.tar.gz --- Vµ¢®IJB\[XÆoCiª üÁÄ ¢Ü·B±êÈ~Ìo[WÅÍ a.out oCiðg¤êÅàJ[l É ELF T|[g@\ðgݱñŨKvª èÜ·Bൠ1.8.1 â »êæèàVµ¢o[Wð¨¿ÌêÍCXg[·éOÉ J[ lÉ ELF T|[g@\ªgݱÜêÄ¢é©ðmFµÄ¾³¢B o libc-5.3.12.bin.tar.gz --- ELF `®Ì¤LCuÅ C ÆwC uA»Ì¼ÖA·éÃICuâ»êçðgÁÄvOðR pC·éÌÉKvÈCN[ht@CªüÁĢܷBKvŵ ½ç\[XR[hàüèÅ«Ü·ªARpC·éÉÍÔª©©èÜ ·µAELF VXeðÁĢȢÆRpC·é±ÆÍsÂ\Åµå ¤B o gcc-2.7.2.bin.tar.gz --- ELF ÎÌ C RpCBVµ¢fBNg ECAEgðð·é a.out ÎÌ C RpCàüÁĢܷB gcc ð©ªÅRpCµ½¢ê(âéƵÄà ELF «ÉÚsµÄ© çÌûªÈP¾ÆCÃŵå¤)AGNU ÌIWiÌ\[XR[hÉ gcc-2.7.2-linux.diff.gz pb`ð Ľûª¢¢Åµå¤B o /binutils-2.6.0.12.bin.tar.gz --- Linux pÉpb`ð Ľ GNU oC i[eBeBÅ·B±ÌpbP[WÉÍ gas â ldAstrings ÈÇ ÌvOªÜÜêĨèAC RpCðg¤ÉÍK{ÉÈÁÄ¢Ü ·BfÌÜÜÌ GNU binutilities (á¦Î prep.ai.mit.edu É éæ¤ È)ÅÍãèÉÈçÈ¢±Æ²ÉäÓ¾³¢BǤµÄ੪ÅRp Cµ½¢êÍ GNU ÌàÌÅÍÈALinux pÉpb`ðĽ binutils-2.6.0.12.tar.gz ðgÁľ³¢B o ncurses-1.9.9e.tar.gz --- SVR4 Ý·Ì curses CuÅA±ê©ç Ì Linux puW curses CuvÅ éÆl¦çêĢܷB\[ XR[hÍ <ftp://prep.ai.mit.edu/gnu/> Ìæ¤È GNU ÌTCgA é¢Í <ftp://ftp.netcom.com/pub/zm/zmbenhal> ©çüèÅ«A tsx-11 ÉÍoCipbP[WàpÓ³êĢܷB±ÌpbP[WðC Xg[·éÉÍùÉ®SÉ ELF »³ê½J«ÉÚsµÄ¢éÍ ¸ÈÌÅA}Vp[ª éêÍ\[XR[hðüèµ½ûª¢¢Å µå¤B o gdbm-1.7.3.tar.gz --- Unix ÌWÆÈÁÄ¢é dbm â ndbm [` ÆÝ·ÌAg£nbV @\ðÁ½f[^x[X[`Å·B\[X R[hÍ <ftp://prep.ai.mit.edu/gnu/> ©çüèÅ«Ü·B¤LCu ÅðìéÉÍ <ftp://ftp.uk.linux.org/pub/Linux/libc/non- core/gdbm.patch> ðÄľ³¢B±Ìpb`ͻ̼¢Â©ÌoO ðC³µÄ¢Ü· (Makefile É éê¶Ì typo âÔáÁ½íÞÌt@ CbLOðg¤XüÈÇ)B 2.3.2. »Ì¼ ãLÈOÉàAK{ÅÍ èܹñªüèµÄ¨¢½ûª¢¢Cuâ t@Cª¢Â© èÜ·BȺɦ·àÌÍ ELF Åg¤½ßÉo[W AbvµÈ¯êÎÈçÈ¢Þ¢ÌvOÅ·B±Ì¶Ìã¼ÅÍA» ÌÜÜÅàg¦éàÌÌAELF `®ÅRpC·éÉÍC³âo[W AbvªKvÈvOðÐîµÜ·BlbgÆÌÚ±ªx¢ê(á¦Î tbs[Ì ðø¦Ä 5 ªÔà¢Ä¢éç¢ÔÌ©©éæ¤È)AȺ Ìt@CÍòεÄAÝèðI¦éOɱ̶Ìã¼É é»ê¼êÌ vOÉ¢ÄÌLqƹÄ`FbNµÄ¾³¢B o a.out Ý·CupbP[WAlibc.so-4.7.6B ±ÌpbP[WªuIvVvÉÈÁÄ¢éÌÍAè³É éù¶Ìo Ci𮩷±ÆÌÅ«é a.out Cuª êÎA»êÍ»ÌÜÜ g¦é©çÅ·B±ÌCuͽç©ÌRÅ¡ãà a.out `®Ìv OðJ¹ËÎÈçÈ¢ÉKvÉÈèÜ·B o BSD curses libcurses.so.1 ðKvÆ·éoCiª êÎA±êªÃ¢ BSD curses CuÅ·B±ÌCuÌ\[XR[hÍ¡ÌƱë©Â©ÁÄ ¢È¢ÌÅ·ªA±ÌCuŵ©®©È¢vOͲHÈÍ ¸Å·B»ÌíÌvOª êÎAncurses ðg¤æ¤ÉRpC µ¼µ½ûª¢¢Åµå¤B»¤Å«È¢êÍ libcurses.so ª tsx-11 Æ»Ì~[TCgÉ é libc-5.0.9.bin.tar.gzÉÜÜêĢܷB o Berkeley db Vµ¢ 4.4 BSD p libdb f[^x[X[`Å·B\[XR[hÍ <ftp://ftp.cs.berekeley.edu/ucb/4bsd/db.1.85.tar.gz/> ÅALinux Ì ¤LCupÌpb`Í <ftp://ftp.uk.linux.org/pub/Linux/libc/non-core/db.patch> É èÜ ·B o C++ pÌvO gcc pbP[WÍ g++ ƤÉzz³êĢܷªALpÈ C++ \tg EFAðRpC·éÉÍ libg++-2.7.1.4.bin.tar.gz ªKvÅ·B ©gÍ C++ ðgÁĢܹñªA·Æ±ëÉæéÆA±ÌCuð \[XR[h©çRpC·éÌÍ\åϾ»¤Å·BÅ·©çAo CiÅð¨©ßµÜ·B o GNU Ý·Ì termcap ncurses ÖÌÚsÍ ELF ÖÌÚsƯÉNÁ½í¯ÅÍ èܹñB¼ ÌlªìÁ½vOâg¢±¯½¢AvP[VÌÉÍ±Ì CuðgÁÄ¢éà̪ é©àmêܹñBgdb ª»Ì¢¢áÅ ·B¤LCuðfobOµ½¢¯êÇAgdb ª©ª©gÖNµ Ä¢éCuðOɵĬ·éæ¤ÈêAÃIÉNµ½oC iðg¤×«Åµå¤B»ÌêA{Ì termcap Í ncurses ÉÜÜ êÄ¢é termcap Ý·Ì[`Éä×ĸÁƬ³¢±ÆÉCÃÅ µå¤B termcap-2.0.8.tar.gz Í tsx-11 ©çüèÅ«Ü·B±êÍ GNU Termcap ÆÍÙÈèÜ·ªA®SÉÝ·Å·(á¢ÍG[`FbN̪¾¯Å ·)B±êÍ\[XR[hÌpbP[WÉÈÁĢܷB o MAKEDEV éóÔÅN®·éÆAMAKEDEV Íù¶ÌfoCXt@Cðíµ½ã ÅÄx쬷é±Æª èÜ·B/dev/zero ðíµÄµÜ¦ÎA¢Â ©Ìo[WÌ ld-linux.so.1 ª®©ÈÈèÜ·BVµ¢o[W Ì MAKEDEV Í <ftp://sunsite.unc.edu/pub/Linux/system/Admin/MAKEDEV-C-1.5.tar.gz> © <ftp://sunsite.unc.edu/pub/Linux/system/Admin/MAKEDEV-2.2.tar.gz>. É èÜ·B o modules-2.0.0 W [ðgÁÄ¢éêAbinutils ðo[WAbv·êÎ 1.3.69 ÈOÌW [E[eBeBÍgpÅ«ÈÈèÜ·BVµ ¢W [E[eBeBÍ <http://www.pi.se/blox/> É èÜ ·B o ¢ë¢ëȤLCuðÜÞ X EBhEVXeB Vµ¢vOÍ ELF `®ÉÈèAELF `®ÌvOÍ a.out CuÅÍgpūܹñÌÅAX ÉÖ·évOðJ·éê AVµ¢ X EBhEVXeê®ðCXg[·éKvª èÜ ·BXFree86 3.1.2 Í a.out Æ ELF ÌoûÌ`®Åñ³êÄ¢Ü ·BXFree86 Ìzz³Í ftp.xfree86.orgÅ·ªAàÉà½Ì~[ TCgª èÜ·(á¦Î ftp.iij.ad.jp)ÌÅAlbg[NIÉߢT Cg©çüèµÄ¾³¢B±êçÌTCg©çcommonÆelffBNg Ⱥðüèµ½çA/usr/X11R6/lib/X11/config/linux.cf t@CÌÌ ÈºÌ2sÌNOÌƱëð #define LinuxElfDefault NO #define UseElfFormat NO YESɵľ³¢B»¤µÈ¢Æ xpm ðRpC·éÛÉ jumpas ÅÌÌ ¼cèÌïÈG[ª¶¶Ü·B»ÝÌ XFree86 ÌoCiÍ ELF »³ê ½ termcap Culibtermcap.so.2 ªCXg[³êÄ¢éKvª é±ÆÉӵľ³¢B Motif ðgÁÄ¢éêÍAELF »³ê½ Motif Cuðñ·é\è ª é©x_[É⢠í¹Ä¾³¢BÍ Motif ÍgÁĢȢÌÅ ½ÌðÉà§ÄܹñB o ELF »Æ¯É Linux 2.0 ÖAbvO[h·éêAJ[lÌ\[X R[hƤÉzz³êÄ¢é Documentation/Changes t@CðYê¸É `FbNµÄAKvÈà̪DZÅüèū驲׾³¢B 2.4. t@CVXeÌIJ® ¦`ÁÆAªÈºÅuí·évƾÁ½êAuobNAbvðæÁÄ© çí·évÆÇÝ©¦Ä¾³¢ :-) ܸA[ÄzµÄAA GbZX --- oCiECXg[ 1. a.out oCiðÚ®·é½ßÌfBNgðì¬ mkdir -p /usr/i486-linuxaout/bin mkdir -p /usr/i486-linuxaout/include mkdir -p /usr/i486-linuxaout/lib mkdir /lib-aout 2. ®IJÌpbP[W ld.so-1.7.14 ð¢ÂàÌ\[XR[hðu¢Ä ¢éêÅWJµAæèo³ê½ ld.so-1.7.14/instldso.sh XNvg ðÇñž³¢B{ÉWIÈVXeð¨g¢ÈçAsh instldso.sh ðÀsµÄCXg[·é±ÆªÅ«Ü·ªA½©ñW IÈàÌðgݱñÅ¢éêAè®ÅCXg[·é±ÆÉÈèÜ ·Bu½©ñWIÈàÌvÆÍA o zsh (¢Â©Ìo[WÌ zsh Í $VERSION Æ¢¤Ïðè`µÄ ¨èAinstldso.sh ª¬·éæ¤Å·) o /lib/elf ©ç /lib ÖÌV{bNN(±êÍKvÈí¯ÅÍ èܹñªAXL [fBXNªKvÉÈéæ¤ÈêÉͽÌÔ ßÉÈé©àmêܹñ) 3. /etc/ld.so.conf ðC³µÄA /usr/i486-linuxaout/lib ðÁ¦(KvÈ çÎ /lib-aout àÁ¦)A/sbin/ldconfig -v ðÄÀsµÄAVµ¢fB NgðTµÉ¢©`FbNµÜ·B 4. /usr/*/lib É éSÄÌ a.out `®ÌuCuvð /usr/i486-linuxaout/lib ÉڵܷBÚ·àÌÍ lib*.so* â lib*.sa*Alib*.a ÈÇÌuCuvÅ ÁÄA»Ì¼Ìt@CðÚ ·KvÍ èܹñB /usr/lib/gcc-lib ÈÇàܾ®©µÄÍ¢¯Ü¹ ñB 5. É /lib ð`FbNµÜ·Blibc.so* â libm.so*Alibdl.so* Í»Ì ÜÜɵĨ«Ü·BX ÌCu(libX*.so.3*ÖÌV{bN Nà»ÌÜÜɵĨ«Üµå¤ --- XView ÌvOª»êçÌ CuðgÁÄ¢é©àmêܹñBld.so* Ald-linux.so* ÈÇ ld ÅnÜÁÄ¢ét@Cà»ÌÜÜɵĨ«Ü·BcèÌCuÉ Â¢ÄÍ(ൠêÎ)F [gp[eBVÉ /usr ª êÎA»±É ét@CÍ /usr/i486-linuxaout/lib ÉڵܷB/usr ªÊp[ eBVÉ}Eg³êÄ¢êÎA /lib-aout ÉڵܷB±êÅ ldconfig -v µÄÝľ³¢B 6. binutils ðCXg[·éõƵÄAൠ/usr/lib/ldscripts fB Ngª êÎíµÜ·(binutils ª±ÌfBNgðV½Éìè Ü·) 7. /usr/bin É é(ld86 Æ as86 ÈOÌ)SÄÌ ld Æ as ÌRs[ðí µÜ·B 8. /usr/include ȺÌfBNgðíµÜ·BWIÈVXeÅÍA ±±É ét@C̢©ÍVXeÌujvÆÈé@\ðSÁĨ èAlibc ƤÉzz³êĢܷB»êÈOÉàA Ƚ©gªCXg [µ½èAgÁÄ¢éfBXgr [VÌì¬ÒªCXg[ µ½t@Cà é͸ŷB±êçð®·é½ßÉA0 ©çìè¼· ±Æð¨©ßµÜ·Bܸù¶Ì/usr/includeð /usr/include.oldÉÏX µAlibc-5.2.18.bin.tar.gzð[gfBNgÅWJµÜ·B 9. binutils pbP[WðCXg[µÜ·B±Ì½ßÉÍ tar - xvzf binutils-2.6.0.12.bin.tar.gz -C / ª¨©ßÌû@Å·B 10. gcc pbP[WÍ[gfBNgÅWJ·éKvª èÜ·Bgcc pbP[W͢©Ìt@Cð /usr/bin ÉAcè̽Ìt@C ð /usr/lib/gcc-lib/i486-linux/2.7.2 Æ /usr/lib/gcc- lib/i486-linuxaout/2.7.2 ÉCXg[µÜ·B gcc ðCXg[ ·éÉÍAܸ $ tar ztf gcc-2.7.2.bin.tar.gz ƵÄA½ªüÁÄ¢é©ð`FbNµÄ¾³¢BcµÄ¨«½¢t@C Éã«·éæ¤Å êÎ(á¦Î Gnu ADA ðCXg[µÄ¢êÎ /usr/bin/gcc ðcµÄ¨«½¢Åµå¤)Aܸ»êçÌt@CðÀSÈ ÉڵܷB»ÌãÅA # tar -zxf gcc-2.7.2.bin.tar.gz -C / ƵܷB±Ì_ÅAgcc -v µÄ gcc Ìo[Wðm©ß½èAeXg pÌvOðRpCµÄA«¿ñÆ®¢Ä¢é©`FbNµÄ¾³ ¢B $ gcc -v Reading specs from /usr/lib/gcc-lib/i486-linux/2.7.2/specs gcc version 2.7.2 $ gcc -v -b i486-linuxaout Reading specs from /usr/lib/gcc-lib/i486-linuxaout/2.7.2/specs gcc version 2.7.2 $ ld -V ld version 2.6 (with BFD 2.6.0.2) Supported emulations: elf_i386 i386linux i386coff É`IÈ ``Hello, world'' vOðµÄ¾³¢B»ÌvO ð gcc â gcc -b i486-linuxaout ÅARpCµA a.out Æ ELFÌR pCª³µÝè³êÄ¢é©mFµÄÝܵå¤B Ièܵ½©ÁÄHवæ£ÁÄBܾ¢Â©ÌCuªcÁÄ¢ Ü·BܽAV{bNNð²¿á²¿á£çȢƢ¯Ü¹ñBæ £ÁÄAA V{bNN 11. ¢Â©ÌvO(ÁÉ¢Â©Ì X ÖAvO)Í /lib/cpp ð g¢Ü·B/lib/cpp Í Linux ÅÍ /usr/lib/gcc-lib/i486-linuxversion/cppÉ èÜ·B±±ÜÅÌiKÅ /lib ÌºÉ éV{bNNÍSÄíµÄ¢é͸ÈÌÅA Nð£è¼·Kvª èÜ·B # cd /lib # ln -s /usr/lib/gcc-lib/i486-linux/2.7.2/cpp . 12. /usr/include Ⱥð /usr/include.old ȺÉÚ·ÆAJ[lÌ\[X R[hÖÌV{bNNª¸ÈíêéÌÅA # cd /usr/include # ln -s ../src/linux/include/linux . # ln -s ../src/linux/include/asm . ƵÄNð£è¼µÄ¾³¢B (±±ÅÍJ[lÌ\[XR[hÍ /usr/src/linux É éƼèµÄ¢Ü ·B»¤ÅÈ¢êAKØÈêðwèµÄ¾³¢) 13. FSSTND ÌAÍA±±Åà utmp Æ wtmp t@Cð /var/adm ©ç /var/run Æ /var/log É»ê¼êÚ·±Æɵܵ½BKvÉ¶Ä /var/log â /var/adm ðìèAutmp â wtmp Ì»ÝÊuÖNð£é æ¤ÉµÄ¾³¢BÍÈºÌ ls -l ɦ·æ¤Èzuɵܵ½B $ ls -ld /var/adm /var/log /var/run /var/log/*tmp /var/run/*tmp lrwxrwxrwx 1 root root 3 May 24 05:53 /var/adm -> log/ drwxr-xr-x 9 root root 1024 Aug 13 23:17 /var/log/ lrwxrwxrwx 1 root root 11 Aug 13 23:17 /var/log/utmp -> ../run/utmp -rw-r--r-- 1 root root 451472 Aug 13 23:00 /var/log/wtmp drwxr-xr-x 2 root root 1024 Aug 13 23:17 /var/run/ -rw-r--r-- 1 root root 448 Aug 13 23:00 /var/run/utmp FSSTND ÌSÌÉ¢ÄÍ sunsite É é LDP ÌA[JCu <ftp://sunsite.unc.edu/pub/Linux/docs/fsstnd/>ÈÇÉ é¶ð²¾ ³¢B ¨ßÅƤI ±±ÜÅÅ(½ÈèÆà)®SÉ@\·é ELF ÌJ«ª®¬µ½Í¸Å ·BêàºÁÄAµÎçéÉìÑð©Ýµßܵå¤B dvÈ\[XR[hÌpbP[W 14. ncurses ÌCXg[Í©ÈèÔÌ©©édÅ·BàÁÆàA»Ì åªÌÔÍRpCµÈªçlbgj [XðÇÞ±ÆÉï·±Æ ªÅ«Ü·ªBtar t@CðWJµ½ç INSTALL t@CðA©ªª uLinux ½½çVXevÌfBXgr [VÌì¬/ÜÆßðÅ éAÆvÁÄÇñÅÝܵå¤B·Èí¿ARpCÌÛÉÍA½ªA ȺÌæ¤ÈR}hCÅÝè·éKvª éAÆ¢¤±ÆÅ·B $ ./configure --with-normal --with-shared --disable-termcap --enable-overwrite --prefix=/usr ftHgÉÈÁÄ¢é^[~iÌíÞÉàӵܵå¤B1.3 Æ 2.0 ÌJ[lÅÍAN®ÌftHgÌ^[~iÍ linux ÉÈÁÄ¢Ü ·BêÉæÁÄÍ /etc/inittab ðC³µÄ console â getty ɵȯê ÎÈçÈ¢©àmêܹñB [gp[eBVÌ én[hfBXNÉ /usr/lib/terminfo ª³¢ê Ancurses Ì `fallback' @\Ųܩ·Kvª éŵå¤B±Ì@\Í ãqÌ INSTALL t@CÉà¾µÄ èAPÅ·ªAÞüÈdÉÈèÜ ·(Cuð 2 x쬷éKvª èÜ·)Bfallback ÆµÄ linux â vt100 ðg¦Î¢¢êAK¢È±ÆÉù¶Ì fallback.cÉu«Ö¦Â\È fallback.c ª ftp.uk.linux.org <ftp://ftp.uk.linux.org/pub/Linux/libc/non-core/fallback.c> ÉpÓ³ê ĢܷB ncurses ðCXg[µ½ãA/usr/lib ȺŽÊ|Èdð·éKv ª èÜ·B±êÍsè`ÈìÆÈÌÅAèÅâé̪ÅàÈPÅ·Bo[ WÔª½sêvÉÈÁÄ¢é±ÆÉӵľ³¢B±êÍX¢Å ·ªANÉQª éí¯ÅÍ èܹñB a. /usr/lib/libncurses.so.1.9.9e ð /lib ÉÚµAVO[U[ [hÅà curses vOª®¯éæ¤ÉµÜ·B[gp[eB V É /usr/lib ª éêAÁɱÌìÆÍsvÅ·ªAâÁÄ ¨¢ÄàQÍ èܹñB b. /lib fBNgÅ libncurses.so.1.9.9e ©ç /libncurses.so.3.0 ÖNð£èÜ·B c. »Ì¼A/lib/libncurses.so.3.0 ©ç /usr/lib/libncurses.so â /usr/lib/libcurses.so A /usr/lib/libtermcap.so ÖÌNàKv ©àmêܹñB l¦é̪hEÈlü¯ÉÈPɾ¤ÆAȺÌæ¤ÈìÆÉÈèÜ·B # cd /lib # mv /usr/lib/libncurses.so.1.9.9e . # ln -s libncurses.so.1.9.9e libncurses.so.3.0 # cd /usr/lib # ln -s /lib/libncurses.so.3.0 libncurses.so # ln -s /lib/libncurses.so.3.0 libcurses.so # ln -s /lib/libncurses.so.3.0 libtermcap.so 15. gdbm ÌCXg[B\[XR[hpÌfBNgÅ\[XR[hðW JµAgdbm.patch ð ÄAREADME Æ INSTALL t@CÉÚðʵܷB \zÌèÍȺÌæ¤ÈàÌÉÈé͸ŷB $ tar zxf gdbm-1.7.3.tar.gz $ patch -p0 < gdbm.patch $ cd gdbm-1.7.3 $ ./configure --prefix=/usr $ make $ make progs $ su # make install # make install-compat # cd /usr/lib # ln -s libgdbm.so.1 libgdbm.so # ln -s libgdbm.so.1 libgdbm.so.2 # ldconfig ÅãÌ 2 ÂÍâo[WÆÌÝ·«ðÛ½ßÅ·BÅßÌfBXg r [VÅÍ libgdbm.so.2 Æ¢¤o[WÉÈÁĢܷªA±êÍ libdgbm.so.1 ÆS¯¶R[hÅAo[WÔ¾¯ªðjIÈR©ç Ôá¦Ät¯çêÄ¢éàÌÅ·B IvVÌ\[XR[hpbP[W êÊÉA»ê¼êÌpbP[WÉt®Ìw¦Éµ½ªÁÄCXg[·êÎ åävÈÌÅA±±ÅJèÔ·±Æ͵ܹñB½¾µAáOª 2  èA 16. GNU Ì termcap ªKvÈê(µ§É¾¤ÆK{ÅÍ èܹñªAÀ ÛÉÍ XFree86 ÌoCiªKvÆ·éÌÅAÙÚK{ŵå¤)A\[ XR[h©ç\z·éKvª èÜ·ªAKvÈìÆÍȺɦ·öxÅ ·B $ tar zxf termcap-2.0.8.tar.gz $ cd termcap-2.0.8 $ make $ su # cp libtermcap.so.2.0.8 /usr/lib # ldconfig µÄ make install ÍÀsµÈ¢æ¤ÉBmake install ·éÆ ncurses Ì vOðê㫵ĵܢܷB±ÌCuðg¤æ¤ÉRp C³ê½ù¶ÌoCiðg¤ÌÅÍÈAV½É±ÌCuðgÁÄ vOðRpC·éêAwb_[t@CÆX^eBbNECu ðDZ©ÊÌêÉp -I Æ -L tOðgÁÄRpCÉ» Ìê𾦷éæ¤ÉµÄ¾³¢B±ÌªÍ¼ÌªÉä×ÄLqªB ¾Ævíêé©àmêܹñªA»êÉÍRª èÜ·B·Èí¿AæÙ ÇÌRªÈ¢©¬èA termcap ðg¢±¯é±Æͨ©ßÅ«È¢©çÅ ·B 17. libdb ÍȺÌæ¤É쬵ܷB $ tar zxf db.1.85.tar.gz $ patch -p0 <db.patch $ cd db.1.85/PORT/linux $ make $ su # mkdir /usr/include/db # ldconfig # cp libdb.so.1.85.3 /usr/lib ; ( cd /usr/lib && ln -s libdb.so.1 libdb.so ) # cp ../../include/*.h /usr/include/db Ó_ƵÄÍ o PORT/linux/OTHER-PATCHES ð ÄÄÍ¢¯Ü¹ñB db.patch ÉÜÜ êĢܷB o gdbm ÌCN[ht@CÆÕË·éÌÅACN[ht@C Í /usr/include ÈO̪ÉCXg[µAlibdb ªKvÈvO ðRpC·éêAC RpCÌR}hCÉ -I/usr/include/db ÆwèµÄ¾³¢B 2.5. Ǥ¢¤ÉÈéÌ©(fBNg\¬ÌAEgC) Ⱥɦ·àÌÍ¡ÜÅÉCXg[µÄ«½t@CÌ©Èè¨¨Ü©È TÏÅ·BguV [eBOâí·×«àÌðßéÛɲp¾ ³¢B 2.5.1. /lib o ®IJ ld.so (a.out p)Æ ld-linux.so.1 (ELF p)B ¼ÒÆàV {bNN©àmêܹñªAwµÄ¢ét@Cª«¿ñƶݷ é±ÆðmFµÄ¾³¢B o î{IȤLCu libc.so.4Æ libm.so.4(a.out)B±êçÍV{ bNNÉÈÁĢܷªA³µ¢t@CðwµÄ¢é©mFµÄ ¾³¢B o î{IȤLCu libc.so.5 Æ libm.so.5A libdl.so.1Alibncurses.so.1A libtermcap.so.2 (ELF p)B±êçàÜ ½V{bNNÉÈÁÄ¢éÌÅA³µ¢t@CðwµÄ¢é© mFµÄ¾³¢B 2.5.2. /usr/lib o ©Áı±É Á½CuÈOÌt@CÆfBNg o libbfd.so*, libdb.so*, libgdbm.so* Æ¢Á½ ELF `®Ì¤LCu o ³Ü´ÜÈV{bNNB/lib â /usr/lib É éCuÖÌ V{bNNª±±ÉKvÅ·BN̼OÍ{Ìt@C¼ ©ço[WÔðæÁ½àÌÅ·Bá¦ÎAlibc É¢ľ¤ÆA lrwxrwxrwx 1 root root 14 May 2 20:09 /lib/libc.so.5 -> libc.so.5.3.12 -rwxr-xr-x 1 bin bin 583795 Apr 25 06:15 /lib/libc.so.5.3.12 lrwxrwxrwx 1 root root 12 Oct 27 1995 /usr/lib/libc.so -> /lib/libc.so.5 ÆÈèÜ·B±êçÌNÍANÉ ldªpµÜ·B o libbsd.aAlibgmon.aAlibmcheck.a Æ /lib â /usr/lib É é ELF ` ®Ì¤LCueXÉpÓ³êÄ¢élib*.a CuB±êçÍ ELF `®ÌÃICuÅ·BåªÌlÉÆÁÄÍA¤LCu Ư¶ÃICuª ÁÄà»êÙÇLï¡ÍȢŵå¤BÁÉ ELF `®ðg¤êÉÍB ELF ÅÍA¤LCuðg¢Èªç gcc -g IvVðwè·é±ÆàÂ\ÈÌÅAÃICuðgݱÞ× «RÍÙÆñÇ èܹñBÅàACu©gðfobOµ½È éú̽ßÉA»êçÌÃICuÍcµÄ¨¢½ûª¢¢Åµå ¤B o crt0.o Æ gcrt0.oB±êçÍ a.out `®ÌuvON®pÌvt@ CÅ·BÁÉð¯é±ÆðµÈ¯êÎASÄÌ a.out `®ÌvO ɱêç̤¿ÌêÂÌt@CªÜ¸N³êé±ÆÉÈèÜ·B o crt1.oAcrtbegin.oAcrtbeginS.oA crtend.oAcrtendS.oAcrti.oA crtn.oAgcrt1.oB±êçÍ ELF pÌN®pt@CÅ·B±êçÍãL *crt0.o ƯlÌ@\ð ELF `®ÌvOÉεÄs¢Ü·B 2.5.3. /usr/lib/ldscripts o ±ÌfBNgÍA»Ì¼ª¦·ÊèA ld pÌeíhCoXNv gðuƱëÅ·B±ÌfBNgÉÍȺÌæ¤Èt@Cª è Ü·B $ ls /usr/lib/ldscripts/ elf_i386.x elf_i386.xs i386coff.xn i386linux.xbn elf_i386.xbn elf_i386.xu i386coff.xr i386linux.xn elf_i386.xn i386coff.x i386coff.xu i386linux.xr elf_i386.xr i386coff.xbn i386linux.x i386linux.xu 2.5.4. /usr/i486-linux/bin o ar, as, gasp, ld, nm, ranlib, strip ±êçÍ /usr/bin É éÀÛÌoCiìpvOÖÌV{ bNNÅ·B 2.5.5. /usr/i486-linuxaout/bin o a.out pÌAZu as ÆA»Ì}NEvvZbT gasp ª è Ü·B o ar, ld, nm, ranlib, strip --- ±êçÍ /usr/bin É éÀÛÌoCi ìpvOÖÌV{bNNÅ·B 2.5.6. /usr/i486-linux/lib o ldscripts Í /usr/lib/ldscripts ÖÌV{bNNÅ·B 2.5.7. /usr/i486-linuxaout/lib o a.out p̤LCu{ÌÌ lib*.so* ª èÜ·B a.out `®Ìv O𮩷ÉÍK{Å·B o lib*.sa Í a.out `®Ì¤Lt@CÌX^u(stub)Å·B¤LCu ðg¤ vOð a.out `®ÉRpC·é½ßÉKvÅ ·Ba.out `®ÉRpC·é±Æª³¯êÎíµÄµÜÁÄà\¢ ܹñB o lib*.a Í a.out pÌÃICuÅ·Ba.out `®ÅÃIÉN³ ê½oCiðìé½ßÉKvÅ·(á¦Î -g IvVt«ÅRpC ·é)B±Ìt@Cà a.out `®ÌvOð쬷éKvªÈ ¯êÎíµÄ\¢Ü¹ñB o ldscripts Í /usr/lib/ldscripts ÖÌV{bNNÅ·B 2.5.8. /usr/lib/gcc-lib/i486-linux/2.7.2 o ±ÌfBNgÉÍ ELF `®ÌvOðRpC·é½ßÌ gcc 2.7.2 ªûßçêĢܷB 2.5.9. /usr/lib/gcc-lib/i486-linuxaout/2.7.2 o ±ÌfBNgÉÍ a.out `®ÌoCiðoÍ·é½ßÌ gcc 2.7.2 ꮪûßçêĢܷB±Ì gcc ÍVµ¢(±±Å¦µ½æ¤È)fB Ng\¬ðð·é@\ðÁĢܷBൠa.out ÉRpC·é KvªÈ¢êA±ÌfBNgðí·êÎñ 4MB ßñÅ«Ü·B pb`ÏÝÅÈ¢ 1.2 V[YÌJ[lðRpC·éêÉÍA± ÌRpCªKvȱÆð¨YêÈB 2.6. æ éG[ \\\ íÄÈ¢ÅI (ȺÌàeÌåªÍeØÈ[Å¢½¾¢½àÌÅ·) ½©ÔáÁ½àÌ𮩵ÄA½à®©ÈÈÁĵÜÁ½I »ÌêÅà shell Í®¢Ä¢é͸ÈÌÅA½Hv·êÎ shell ÌgݱÝ@\¾¯Å©ÈèÌdð±È·±ÆªÂ\Å·Becho * Í ls ÌãíèÉg¦Aecho >>filename Ít@CÉ««·ÌÉg ¦Ü·Bldconfig àÃIÉN³êÄ¢é±Æð¨YêÈBᦠÎAlibc.so.4 ðÔáÁÄ lib-aout fBNgÉڵĵÜÁ½ê Aecho "/lib-aout" >>/etc/ld.so.conf ; ldconfig -v·êÎA µÜ·B /lib/ld.so 𮩵ĵÜÁ½êA ÃIÉN³ê½ ln ª êÎAsln /sillyplace/ld.so /lib/ld.so·é±ÆÅA½ª ·éŵå¤B bad address ELF `®ÌvO𮩻¤Æ·éÆA¢Âàbad address G[ ÉÈéêA½ªAJ[lÌ 1.3.x Ì x <3 Ìo[Wð¨g¢ ÈÌŵ太A»Ìo[WðgÁÄÍ¢¯Ü¹ñB»êçͽ ªAÅ«Ìo[WÌêÂÅ·B2.0 Öo[WAbv·é© 1.2.13 Éo[WðµÜµå¤B½æ¤È«ÅJ[lp jbNª¶·éÆñµÄ¢él½¿à¢Ü·ªAÍÚµ²×Ä ¢Ü¹ñBȺÈçAJÅÌo[Wðg¢½¢ÆàvíÈ¢µA g¤Kvª éÆശȢÌÅAÅVÅÌÇÁ©¯ÍµÄ¢È¢©ç Å·B gcc: installation problem, cannot exec something: No such file or directory a.out `®ÅRpCµæ¤ÆµÄ(something ̪ͽ¢Ä¢Ì ê cpp © cc1 Ì͸ŷ)A±ÌG[ª¶¶éêAÀÛÉ cpp â cc1 Éâèª é©A $ gcc -b -i486-linuxaout Ìæ¤Éü͵½Ìŵå¤BÀÛÉÍ $ gcc -b i486-linuxaout Æü͵ȯêÎÈèܹñB`i486'̪Í_bV ÅͶÜçÈ¢± ÆÉӵľ³¢B make: *** No targets specified and no makefile found. Stop. ±ÌG[ªoéêAmake Épb`ð ÄÄÄRpCµÄ¢È ¢©Aâo[WÌ make ªVXeÌDZ©ÉcÁÄ¢éÌÅ µå¤B no such file or directory: /usr/bin/gcc ÀÛÉ»Ìt@Cª¶Ý·éÌɱ¤¢¤G[ªoé(gcc ÈOÌ vOÅ౤Èé©àmêܹñ)B±ÌêAELF Ì®I[ _[ /lib/ld-linux.so.1 ðCXg[µÄ¢È¢©A½ç©ÌR Å[_[ªÇßÈ¢óÔÉÈÁÄ¢éÌŵå¤BæÉq×½CX g[XebvÌ 2 ðÇñÅ /lib/ld-linux.so.1 ð³µCXg [µÄ¾³¢B not a ZMAGIC file, skipping ±ÌG[Í ldconfig ªoµÄ¢Ü·Bâo[WÌ ld.so Ì pbP[Wð¨g¢Ìæ¤ÈÌÅAVµ¢àÌðüèµÄ¾³¢Bà ¤êxACXg[ÌXebv 2 ðÇñž³¢B _setutent: Can't open utmp file ±ÌbZ[WÍ xterm ðN®µ½É 3 s¸Âoͳêé±Æªæ èÜ·BCXg[èÌÅãÌ ½èÉ é FSSTND Ì·¶Ì à¾ðÇñž³¢B 3. vOÌ\z 3.1. êÊIÈvO vOð ELF `®ÅRpC·éêA¢ÂàÌæ¤É gcc ðg¢Ü ·Ba.out `®ÅRpC·éêAgcc -b i486-linuxaout Ƶľ³ ¢B $ cat >hello.c main() { printf("hello, world\n"); } ^D $ gcc -o hello hello.c $ file hello hello: ELF 32-bit LSB executable i386 (386 and up) Version 1 $ ./hello hello, world ³ÄA»ë»ëua.out `®ÌRpCªoÍ·éoCiÌftHg¼ ª a.out ÈçAELF RpCÌoÍ·éoCiÌftHg¼Í½Æ¢ ¤ÌHvÆ¢¤¿âɦé׫ŵå¤BÍAuâÁÏè a.outvÈñ Å·BcOŵ½©H :-) 3.2. CuÌìèû libfoo.so ð¤LCuƵÄ\zµ½¢êAî{IÈèÍȺÌæ ¤ÉÈèÜ·B $ gcc -fPIC -c *.c $ gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 *.o $ ln -s libfoo.so.1.0 libfoo.so.1 $ ln -s libfoo.so.1 libfoo.so $ export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH ±êÉæèAlibfoo.so.1.0 ÆÄÎêé¤LCuÆ ld pÌV{b NN(libfoo.so)A®IJpÌV{bNN(libfoo.so.1)ªì ¬³êÜ·BCuÌeXgÌÛÍAÅãɦµ½æ¤ÉA»ÝÌfB Ngð LD_LIBRARY_PATH ÉÁ¦ÄµÄÝܵå¤B Cuª³µ®±ÆªmFÅ«êÎAKØÈêAá¦Î /usr/local/lib ÉÚµANð£è¼µÜµå¤B libfoo.so ÌNÍ libfoo.so.1 Ö£çêÄ¢éÌÅAo[WÔÌ}Ci[`FWª Á ÄàNð£è¼·KvÍ èܹñBlibfoo.so.1.0 ©ç libfoo.so.1 ÖÌNÍA½¢Ä¢ÌVXeÅÍ ldconfig ªN®ÉXVµÜ·B $ su # cp libfoo.so.1.0 /usr/local/lib # /sbin/ldconfig # ( cd /usr/local/lib ; ln -s libfoo.so.1 libfoo.so ) 3.3. a.out `®Ì\z ELF «ÌÅàâ a.out `®ÌoCið쬵ȯêÎÈçÈ¢ê ª é©àmêܹñBuÊÌvvOÌêAKvȱÆÍ gcc ð N®·éÉ -b i486-linuxaouttOðgÁÄ a.out pÌRpCðN ®µA(àµ) ld ðN®·éêÍ -m i386linux tOðg¢Ü·Ba.out `®Ì DLL ¤LCuð¢¾ÉKvÆ·élÍAA£zÉBÌmé ÀèÅÍAê¾Å¾¦Îu®«Ü¹ñvBÊÌû@ðä¶mÈçÎ[Šɳ¦Ä¾³¢B 4. ELF ppb`ÆELF »ÏÝÌvO ±±ÜÅÅA¨DÝÈçÎI¹·é±ÆªÂ\Å·BELF `®ÌvOð RpCµÄ®©·½ßÉKvÈ«ÍSÄCXg[ūܵ½B uüÓ¯vIÈÏ_âgpÊðŬ»·é½ßÉÍA¨g¢ÌvO ðSÄ ELF `®ÅRpCµ¼µ½Èé©àmêܹñBELF `®Å ÌÄRpCÍÙÆñÇÌGh[U[pÌAvP[VÅÍ²È PÅ·Bµ©µÈªçA®ì«É¢Ľç©ÌOñÌ évOࢠ© èA»êçÍȺÌæ¤ÈRÅG[ÉÈé©àmêܹñB o AZuÌA_XRAÌg¢ûÌá¢Fa.out ÌÀs`®ÅÍO xÉÍ _(A_XRA) ªªÉt¢Ä¢Ü·ªAELF ÌÀs`®ÅÍ» ¤ÈÁĢܹñB±êÍAè«ÌAZuR[hðgݱÜÈ¢À èâèÉÍÈèܹñB_foo Ì`ÌxðSÄ foo É|óµÄâé ©A(ÚA«ðß½¯êÎ) EXTERNAL(foo) Ìæ¤È}NðpÓµ ÄA(__ELF__ ªè`³êÄ¢êλÌÜÜÏðÔµAè`³êĢȯ êÎ _ ðt¯éæ¤É·é̪¢¢Åµå¤B o libc 5 Æ libc 4 Ìá¢Bá¦Î locale T|[gÖÌC^[tFCX ÍÏX³êĢܷB o gÁÄ¢éoCi`®ðAvP[Vâ\zßöªQƵĢéê Bá¦Î emacs Í»ÌêáÅAC[WðÀs`®ÆµÄfBX NÉ«¾·ÌÅAÀs`®ÌtH[}bgðvOªðµÄ¢é Kvª èÜ·B o ¤LCuâ¤LCuðÜÞAvP[V(X11 ªªèâ· ¢á)B±êçÌêAELF `®Å¤LCuðìéæ¤Èû@ÉC³ ·éKvª èÜ·B ÆÉ©A鼃 2 ÂÌXgð¦µÜ·BÅÌXgÍùÉ ELF `®Ì o[Wªì¬³êÄ¢éàÌ(·Èí¿AELF `®ÅRpC·éÉÍ Vµ¢o[Wðüè·ê΢¢àÌ)ÅA2 ÂßÌXgÍæOÒ©çÌ pb`ªKvÈvOÅ·B 4.1. AbvO[h·ê΢¢àÌF o Dosemu »ÝÅÍ dosemu à ELF `®Å®«Ü·B½¾µAMakefile ɽÌC ³ªKvÈæ¤Å·BÅVÅÌ dosemu Í <ftp://tsx-11.mit.edu/pub/linux/ALPHA/dosemu/> ©çüèÅ«Ü·B o e2fsutils e2fs t@CVXepÌeí[eBeB e2fsutils ÍAo[W 0.5c È~ÌàÌÍÏXÈ ELF `®ÅRpCÅ«Ü·B o Emacs Emacs ÉÍ 2 ÂÌöÝIÈâèª èÜ·B(i) Emacs ÍAܸŬKÍ ÌVXe𮩵ÄAKvÈ lisp t@CðSÄÇݱñ¾ãÅA C[WðÀs`®Ìt@CƵļÚfBXNÖ«¾·AÆ¢ ¤©ÈèÏÁ½èÅ쬳êÜ·B(FSF) Emacs 19.29 Æ XEmacs 19.12(©ÁÄÍ Lucid Emacs ÆÄÎêĢܵ½)Í ELF `®©Ç¤©ð ©®IÉ©ª¯ÄA³µ¢èÅ\z³êÜ·B(ii) ¢Â©Ìo[W Ì emacs ð ncurses ðg¤æ¤ÉRpC·éêAemacs Ì\[ XpbP[WÌ src/s/linux.h ÌæªtßÉ #define TERMINFO Ìêsð Á¦È¢ÆA³µ\z³êÈ¢±Æª èÜ·B±êÍ 19.31 ÅÍKv ȢŷªAXEmacs 19.13 ÉÍKvÅ·BÌo[WA19.14 ÅÍÔ á¢ÈC³³êé±Æŵå¤B o gdb 4.16 ù¶Ì gdb ÅàâèÈ»ÌÜÜg¦Ü·ªA4.16 ÅÌp³ê½¤L Cu@\͸ÁÆÖÉÈÁĢܷBÅ·©çAàµCuÖ AÌÈG[ÉYܳêÄ¢éêAgdb ðo[WAbv·éÌà ¢¢Åµå¤B o Kernel {Ì J[lÌo[W 2.0 È~Í ELF `®ÅâèÈ®«Ü·BJ[l \zÌÝè(make config)ÌÉÈºÌ 2 ÂÌÚÉ `yes' Æ¦Ä ¾³¢(±êÍ 1.3 Å௶ŷ)B1.2 ðܾgÁÄ¢éêAÌ Xgɦ·pb`ðüèµÄ¾³¢B Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?] Compile kernel as ELF - if your GCC is ELF-GCC (CONFIG_KERNEL_ELF) [Y/n/?] o perl 5 Perl 5.001m È~Ìo[WÍ ELF VXeÅA®I[h@\à®àø ÉAÏXÈRpCÅ«Ü·BÅVÅÌ Perl Í CPAN(Comprehensive Perl Archive Network)TCg©çüèÅ«Ü·BCPAN Í funet Åà~ [³êĢܷ <ftp://ftp.funet.fi/pub/mirros/perl/CPAN>AªgßÈ TCg©çüè·éæ¤ÉµÄ¾³¢B o ps Æ top Procps 0.98 ÈãÌo[WÍ ELF `®ðT|[gµÄ¢Ü·(æèà ¢o[WÅ஫ܷªAWCHAN ̼OðJ[l©çÇÝÆé±Æ ªÅ«Ü¹ñ)B2.0 V[YÌJ[lÉÍ procps 0.99a È~Ìo[ WªKvȱÆð¨YêÈB o util-linux 2.2 ÉüÁÄ¢é cal vOÍ®«Ü¹ñBtsx-11 É é version 2.5 <ftp://tsx-11.mit.edu/pub/linux/packages/utils>È~ Ìo[WðgÁľ³¢B o Mosaic ©gÍ Mosaic ðRpCÅ«éÂ«É èܹñªANCSA ©ç [X³êÄ¢é 2.7b1 È~Ì Mosaic ÌoCiÍ ELF `®ÉÈÁÄ¢ Ü·BƱëªAX ÌÝèªÏÈÉÈÁÄ¢ÄAÊíÌVXeÅÍ libXpm.so.4.5 ª©t©çÈ¢AÆ¢¤G[ÉÈèÜ·BÅãÌo[ WÔ(.5)ª]vÈÌÅAPÈC³û@ÍAemacs ÈÇÌoCi t@CðìÅ«éGfB^żÚC³µÄµÜ¤±Æŵå¤B libXpm.so.4.5^@ Æ¢¤¶ñðTµÄ(±±Å ^@ Í NUL LN^ --- ASCII Ì 0 ---Å·)A.5 ðíµAt@C¼Ì·³ªÏçÈ¢æ ¤ÉAÓ[ NUL LN^ÌãÉ 2 ÂÌXy[XðÇÁµÜµå ¤B 4.2. pb`ªöJ³êÄ¢éàÌ o file file ÍÁÉâèÈ®«Ü·ªAüÇÌ]nª èÜ ·Fftp.uk.linux.org <ftp://ftp.uk.linux.org/pub/Linux/libc/non- core/file.patch> É épb`ð ÄêÎAoCiª strip ³êÄ¢ é©Ç¤©âGfBAª¬Ýµ½ ELF oCi©ð©ª¯é±Æà \ÉÈèÜ·B o make-3.74 GNU Ì ftp TCgÉ é\[XR[hðüèµÄ libc-5.3.12 Ì[ Xm[gÉ épb`ð Äé©Atsx-11 ©ç make-3.74.gz ÌoCi ðüèµÄ¾³¢BGNU Ì make ÉÍVµ¢ ELF ÅÌ libc o[W ÅÌÝIæ·éoOª èÜ· -- ±ÌoOÍAÀÛÉÍâ GNU Ì libc É Á½oOÉ˶µ½ÀÉÈÁĢ鹢ÅA»Ì libc ÌoO Í¢ÅßÜÅÌ Linux Ì libc Éà èܵ½B»Ì½ßAâ a.out ÅÌ make vOðgÁÄ¢éêÍ®ìµÜ·ªAVµ¢ ELF pÉ Ípb`ªKvÅ·B GNU Make ÌJÒ½¿à±ÌoOÉÍCt¢Ä¢ÄA«Ìo[WÅ ÍC³³êé͸ŷB o 1.2.x J[l 1.2.x V[YÌJ[lÉ¢ÄÍ 3 ÂÌIvVª èÜ·B 1. Makefile ðµC³µÄAa.out RpCðg¤æ¤ÉµÜ·B cd /usr/src/linux µAȺÌpb`ðØèoµÄ patch - p1 Å ÄÄ ¾³¢BȺÌpb`ð©Èªç Makefile ðè®ÅC³µÄà©Ü ¢Ü¹ñBȺÌpb`t@CÍÈPÉðÅ«éÅµå¤ (- Ån ÜésðíµÄ + ÅnÜÁÄ¢ésðÇÁµÜ·) diff -u linux-1.2.13/Makefile.orig linux/Makefile --- linux-1.2.13/Makefile.orig Wed Aug 16 20:53:26 1995 +++ linux/Makefile Fri Dec 8 16:19:49 1995 @@ -12,9 +12,9 @@ TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) -AS =as -LD =ld -HOSTCC =gcc -I$(TOPDIR)/include -CC =gcc -D__KERNEL__ -I$(TOPDIR)/include +AS =/usr/i486-linuxaout/bin/as +LD =ld -m i386linux +HOSTCC =gcc -b i486-linuxaout -I$(TOPDIR)/include +CC =gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include MAKE =make CPP =$(CC) -E AR =ar é¢ÍA 2. H.J.Lu ìÌpb`ð ÄÄAJ[lð ELF `®ÅRpCÅ«é æ¤É·é(±ÌêAELF `®ÌRA_vàÂ\ÉÈèÜ·)±Ì pb`Í <ftp://ftp.cdrom.com/pub/linux/slackware_source/kernel- source/v1.2/linuxelf-1.2.13.diff.gz> ©çüèÅ«Ü·B 1.2 V[YÌJ[lðÜñ¾ELF `®ÌfBXgr [V (RedHat 2.1 â Slackware 3)ÉͱÌpb`ªÜÜêÄ¢é©A ½pb`ªùÉ ½ÁÄ¢é͸ŷB µ©µAÅPÌACfAÍA½ªA 3. 2.0 Öo[WAbvµÜµå¤BÆÉ© 1.2 ̱ëÍ ELF É ¢Äz¶³êĢܹñŵ½B 1.2.13 Ìo[Wð gcc 2.7.2 ÈãÌo[WÅRpC·éê AÊÌâèබܷBasm/io.h ÉÍ gcc 2.7.2 ÅÌÝIæ·éoO ª èAC³·é½ßÌpb`Í <ftp://ftp.uk.linux.org/pub/Linux/libc/misc/io.h> É èÜ·B 5. æèÚµ¢îñ o GCC-HOWTO <GCC-HOWTO.html>ÉÍALinux ÅvOðJ·éÛÉL vÈîñª½ÜÜêĢܷ(ÈÆàÍ»¤l¦Ä¢Ü·BªÛ çµÄ¢Ü·©ç)BGCC-HOWTO ÍA±Ì¶Æ¯¶êÉ é͸ÈÌ ÅAãLÌNÍÎwèÉÈÁĢܷB o linux-gcc [OXg(±êÍ linux.* Ìj [XðóMµÄ¢é êAlinux.dev.gcc j [XO[vÉàÈÁĢܷ)ÍA©ª©çÍ eµÈÄཪN«Ä¢é©ðmé±ÆÌÅ«éÅPÌêÅµå ¤B±êÍ Usenet ÆÍá¤ÌÅAÀÛÉJÉÖíéâèÌÝðe· éæ¤ÉµÄ¾³¢B[OXgÉQÁ·éÉÍA help Æ¢¤ êðÜÞ[ð majordomo@vger.rutgers.edu ÉÁľ³¢B[ OXgÌA[JCuÍ <http://www.linux.ncm.com/linux-gcc/> É èÜ·B o linux-gcc Ì[OXgŽªsÈíêÄ¢é©ÌîñÍAªX VðÓçÈ¢ÀèAlinux-gcc web page <http://ftp.uk.linux.org/~barlow/linux/gcc-list.html> É èÜ·B ±Ìy[WÉÍA±Ì HOWTO ÌÅVÅÖÌNà èA{¶ÌÅQÆ µÄ¢épb`àWßĢܷBÄâpÌwpTCgÖÌNª× ¢l½¿(pÌwplbgÈOÌƱëÅͽ¢Ä¢»¤Åµå¤¯ Ç)pÉA±Ìy[WÍ <http://www.blackdown.org/elf/elf.html> É~ [³êĢܷB o ELF `®É¢Ä̶ª tsx-11 <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ELF.doc.tar.gz> É è Ü·B±Ì¶Í½ªt@C`®ððµ½¢lâfobOµ½¢lA oCiÌIuWFNgð¼Úì·éæ¤ÈvOÌìÒÉàÁÆ àð§ÂàÌŵå¤B o H.J Lu ª¢½ ELF: From The Programmer's Perspective <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/elf.latex.tar.gz> Í ELF `®ÅvO·éÛÉLpÈîñª¸ÁÆڵླêÄ¢Ü ·BൠLaTeX ðūȯêÎA¯¶o[WÌ PostScript Ū èÜ·B o ncurses CuÉ¢ÄÌîñÆ terminfo f[^x[XÍEric Raymond's ncurses resource page <http://www.ccil.org/~esr/ncurses.html> É èÜ·B o ld.so pbP[WÉÜÜêÄ¢é dlopen(3) Ì man page ÉÍÖA·é@ \É¢ÄÌྪ©êĢܷB 6. »Ì¼ 6.1. tB[hobNÌ¨è¢ Feedback ͽ}µÜ·B[Í daniel.barlow@linux.org Ö¨è¢µÜ ·Bé§Ì[ðéKvª éêAÌ web pages <http://ftp.uk.linux.org/~barlow/> É é PGP ÌöJ®(ID 5F263625)ð gÁľ³¢B ±Ì¶Éª é׫âèÅAª©Â©çÈ¢êàÉ[µÄ¾ ³¢B±Ì¶ÌÅGêçêé׫ÅÍÈ¢âèÅAªðmÁÄ¢é© àmêÈ¢âèÉ¢ÄÍAܸ comp.os.linux.* j [XO[vÉe µÄÝľ³¢B½¢Ä¢[Ìâ¢í¹Éà¦Ä¢Ü·ªA[ ð³·±Æàæ éÌÅB ̼OªS~[OXgÉÚÁÄ¢éÌð©½lÍíµÄ¾³é æ¤É¨è¢µÜ·B 6.2. |óÅ ±Ì¶Ì|óÅðìè½¢êAÏÉIÉâÁÄ¢½¾¢Ä\¢Ü¹ñªA ê¾AµÄ¾³¢Bªb¹é¾êÉ|óµÄàç¦éÂ\«Í(ßµ¢ ±ÆÉ)SªÌêŵ太A»êͳĨ«AÌoé±ÆÍæë±ñ Ũè`¢µÜ·B ªmÁÄ¢é|óÅÍF o C^AêÅ <http://www.psico.unipd.it/ildp/docs/HOWTO/ELF- HOWTO.html> ðFavro Renata ª|óµÜµ½B (»Ì¼ÌC^AêÅ HOWTO à <http://www.psico.unipd.it/ildp/docs/HOWTO/INDEX.html> É èÜ·B o ±¶ÜÝÂÐëªú{êÅð쬵ܵ½B <http://jf.gee.kyoto-u.ac.jp/JF/index.html>©çüèÅ«Ü·B 6.3. @IÈbè All trademarks used in this document are acknowledged as being owned by their respective owners. Yow! The right of Daniel Barlow to be identified as the author of this work has been asserted in accordance with sections 77 and 78 of the Copyright Designs and Patents Act 1988. This document is copyright (C) 1996 Daniel Barlow <daniel.barlow@linux.org> It may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below. In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs. If you have questions, please contact Greg Hankins, the Linux HOWTO coordinator, at gregh@sunsite.unc.edu. ±Ì¶É»íê½g[h}[NÍSÄ»ÌLÒÉA®µÄ¢Ü·B ±Ì¶Ì´ÒÅ é Daniel Barlow Ì Í 1988 Nɧè³ê½ ``COpyright Desings and Patents" @Ì 77 ðÆ 78 ðÉKè³êÄ¢Ü ·B ±Ì¶Í Daniel Barlow<daniel.barlow@linux.org> ªì ðLµÄ¢Ü ·B±Ìì \¦ª¦³êéÀèAÇÌæ¤È¨IAdqI}Ìðp¢ ÄA±Ì¶ÌSÌÅà꾯ÅàARs[µÄÄzz·é±ÆªÂ\Å ·B¤Ipàø³êA§³êÜ·ªA»Ìæ¤ÈêÉÍÒÜÅê¾ ¨mç¹¾³¢B |óâ±Ì¶©çh¶µ½¶A çäé Linux HOWTO ¶ÆÌgÝ í ¹½¶WÈÇàA±Ìì \¦ÉæÁÄÛì³êé±ÆÉÈèÜ·B·È í¿ALinux Ì HOWTO ©çh¶µ½ìiÉεÄA»ÌzzðW°éæ¤È §ÀðÛ·±ÆÍūܹñBêèÌðÌàÆÅáOðݯé±ÆàÂ\È ÌÅAÚ×É¢ÄÍȺɦ· Linux HOWTO ÌR[fBl[^ÉqËÄ ¾³¢B ÈPɾ¦ÎA½¿ÍÂ\È©¬èÌû@ű̶ÈÇÌîñðLmç ¹æ¤Æl¦Ä¢Ü·Bµ©µÈªçA½¿Í HOWTO ¶Éì ðÝè µAHOWTO ÌÄzzvæÉ¢ÄÍmç¹Äà碽¢ÆvÁĢܷB ¿âª êÎA»ÝÌ Linux HOWTO ÌR[fBl[^AGrep Hankins gregh@sunsite.unc.edu ÖAµÄ¾³¢B