; TeX output 2005.05.26:1206_2 ~?ՁZݺIqqecss2074Glibcf2HOwmWTO cG 1 ecrm1000EricU Green,qL ectt1000ejg3@cornell.eduv1.6,22June1998&&6 ecss1000QuestoHOWTO,glibGc2,0riguardal'installazioneel'usodellaversione2dellalibreriaGNU&C(libGc&6)suisistemiLinux.nT*raduzioneoacuradiAndreaGirotto(andreaatandreagirotto.it)erevisioneacuradiMarcelloSeri(marcello.seriU atemail.it).(&Lt$ffffecbx1440Indice]f ecbx10001In>troQduzione.}t2ؼ1.1%NoteU suglibGc2..荍...........................................w21.2%NoteU suquestodoGcumento.Z׍.荍....................................w31.3%MoGdicheU recentiaquestodoGcumento.U.荍..............................w32ScegliereilpropriometoQdodiinstallazione./33Ottenerelalibreria.\44Installarecomelibreriaditest.$Ԅ54.1%CompilareU edinstallare.=獍.荍......................................w5%4.1.1EPrerequisiti.'.荍.........................................w5%4.1.2EEstrarreU isorgenti.Em.荍.....................................w5%4.1.3ECongurazione.6.荍.......................................w6%4.1.4ECompilareU edinstallare.[.荍..................................w64.2%AggiornareU illoaderdinamico.C.荍...................................w64.3%CongurareU gcc..荍..........................................w64.4%AggiornareU icollegamentipGerheaderle.2_.荍............................w74.5%V*ericareU lapropriainstallazione.MǍ.荍.................................w75InstallazionecomelibreriaCprimariaW85.1%CompilareU lalibreriadaisorgenti..荍.................................w8%5.1.1EPrerequisiti.'.荍.........................................w8%5.1.2EEstrarreU isorgenti.Em.荍.....................................w8%5.1.3ECongurazione.6.荍.......................................w8%5.1.4ECompilazione..荍........................................w95.2%PrepararsiU pGerl'installazione..荍...................................w95.3%InstallareU dalpacchettobinario.[.荍..................................x?105.4%InstallareU daisorgenti..荍.......................................x?115.5%AggiornareU ilespGecsdigcc.0.荍...................................x?11*_2 ~?G1.8In>troQduzione.{~2ՁV5.6%ControllareU lapropriainstallazione..荍................................x?116CompilareconlalibrerianonprimarialibQc.B12ؼ6.1%AvvisoU pGerl'usodilibcnonprimarie.S.荍...............................x?126.2%CompilareU programmaconunaglibGcditestk.荍...........................x?126.3%CompilareU programmiconlibGc5quandoglibclalibreriaprimaria.㍍.荍.............x?137CompilareprogrammiC++.*.137.1%InstallareU libg++pGerglibcconguratapertest.Aύ.荍.........................x?147.2%InstallareU libg++pGerglibcconguratacomeprimaria.;.荍.....................x?147.3%CompilareU programmiC++conlibGcnonprimaria.׋.荍.......................x?148Problemi.148.1%IU nomidiHostnonvengonorisoltiƫ.荍................................x?149Segnalarebug.q1410EsempiodilespQecs.O1511Miscellanea.}1611.1%AltreU informazioni..荍.........................................x?16%11.1.1EPagineU web..荍.........................................x?16%11.1.2ENewgroups.e.荍.........................................x?16%11.1.3EMailingU lists.Q.荍........................................x?1711.2%Riconoscimenti.荍...........................................x?1711.3%Segnalazioni.u.荍............................................x?1811.4%Copyright.&.荍..............................................x?18(1Inctropduzione.荍!N ecbx12001.1Notesuglib_c2.MGlibGc2l'ultimaversionedellalibreriaGNUC.AttualmentepuessereutilizzatasenzamoGdichesusistemi GNU͛HurdͺeLinuxi386,m68k,eͺsistemialpha.MNellaversione2.1sarannosuppGortateanchelemacchineLinux#PowerPC,MIPS,Sparc,$Sparc64edArm.yInfuturoilsuppGortoverrestesoadaltrearchitettureesistemiU opGerativi.ؼSuP4Linux,glibGc2usatacomelibcconversioneprincipale6,successivqadiLinuxlibGc5.bConquestosiintendeYcomunicareaglisviluppatoridisostituirelibGc5.*A@partiredallaversione2.0.6,glibGcconsiderataqualit.diproGduzione.ëLaversione2.1(attesainunprossimofuturo)sarprontapGerundiusousoconl'aggiuntaU dimoltiadattamentiecaratteristiche.CiU sonotreaggiunteopzionalidispGonibiliperglibc2:'e_2 ~?G2.8ScegliereilpropriometoQdodiinstallazione. z3ՁVCryptIlU pacchettoUFC-crypt.qȓseparatoacausadirestrizionipGerl'esportazione.Lin>uxThreadsImplementazioneU dell'interfacciaPosix1003.1cpthreadLoQcaledataContieneidatinecessaripGercostruireiledatilocalidausareperlecaratteristichedi internazionalizzazioneU diglibGc.ؼSiNraccomandanocaldamenteipacchetticrypteLinuxThreads...\_nonusandolic'ilrischiodiesserein-compatibiliconlelibreriedialtrisistemi.(Sesidesideranonusarli,,'necessarioaggiungerel'opzionedisable-sanity-checksU durantelacongurazione.)#Í1.2Notesuquestodo_cumento.MQuesto,"HOWTO+descrivecomeinstallareglibGc2suunsistemaLinuxesistente.ȑ+pGensatoperutentidisistemiIntelcheusinolibGc5; inognicaso,utentidialtrisistemielibreriediverse(comeglibGc1),dovrebbGeroessere.]ingradodiutilizzarequesteinformazionisostituendoinomidilecorrettieinomidellearchitetturedoveU necessario.ؼLaD5copiapirecente(ininglese)diquestoHOWTOD1puesseretrovqatacomepartediHЃ ecti1000LinuxDo}/cumentationPr}/ojectU http://www.tldp.orgoppureoda http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html. PerlarispGettivqaversioneitalianaU siveda:qItalianLinuxDo}/cumentationProjectU http://it.tldp.org.#Í1.3Mo_dicherecentiaquestodo_cumento.MDierenzeU traleversioni1.6ed1.5:ؼ !", cmsy10CorretteU leistruzionidiinstallazionedelpackqagebinariodiglibGcDierenzeU traleversioni1.5ed1.4:IndiceU aggiuntodaEdBailey*.CambiatoU l'indirizzoemaildell'autore.(2ScegliereG\ilpropriometopdodiinstallazione.:ȑ cmmi10>=2.7.2(meglio2.7.2.1)binutilsU 2.8.1(pGeralphanecessariounosnapshot)bashU 2.0autoGconfU 2.12(sesicambiacongure.in)texinfoU 3.11ؼSu/uni586@133con64MB diRAM,sononecessariecirca3orepGercompilarelelibreriecompleteconle aggiunte.qSuU uni686@200carico,necessariacircamezz'ora. 4.1.2#!\Estrarreisorgen>ti.ȖU necessarioestrarreisorgentidagliarchivicoschesipGossanocompilare.qIlmodomiglioreperfarlo:卑PqL ectt0900tarNxzfglibc-2.0.6.tar.gz =PcdNglibc-2.0.6PtarNxzf../glibc-linuxthreads-2.0.6.tar.gzPtarNxzf../glibc-crypt-2.0.6.tar.gzPtarNxzf../glibc-localedata-2.0.6.tar.gzؼQuesti`comandiestrarrannoledirectorylinuxthreads,bcrypteloGcaledatainglibc-2.0.6dove`congurepotr trovqareU lerispGettiveaggiunte.__2 ~?G4.8Installarecomelibreriaditest."6ՁV4.1.3#!\Congurazione.MNella`-directoryglibGc-2.0.6,bsenecreaun'altrachiamatacompile,elasirendecorrente.T*uttoillavorosar fattov*inquestadirectory*,~lcosachesemplicherlapulizia.ԝ(GlisviluppatorinonsonoancorastatiingradodiU realizzareun'makeclean'pGerfetto.)KPmkdirNcompile =PcdNcompileoSiesegue../configure.ePerusareipacchettiaggiuntivi,necessariospGecicarliconenable-add-ons,ad_esempioenable-add-ons=linuxthreads,crypt,loGcaledata.ȑ_\anche_necessarioscegliereunadirectorydiinstallazione.q/usr/i486-linuxglibGc2U unabuonascelta.IlcomandopGercongurequindisar:P../configureN--enable-add-ons=linuxthreads,crypt,localedata--prefix=/usr/i486-linuxglibc2 Y4.1.4#!\Compilareedinstallare.MPerU compilareevericare,siesegue:Pmake =PmakeNcheckoSeU ilcomando'makecheck'hasuccesso,installarelalibreria:PmakeNinstall"4.2Aggiornareilloaderdinamico.ȶ 9b1.CreareU uncollegamentodalnuovold.soa/lib/ld-linux.so.2:ե3PlnN-s/usr/i486-linuxglibc2/lib/ld-linux.so.2/lib/ld-linux.so.2|QuestaDlasolalibrerialacuiloGcazionepressataunavoltacheunprogrammasiastatocollegatoel'usoEdiunriferimentoin/libfaciliterl'aggiornamentoaglibGccomelibreriaC*primaria,unavoltacheU laversionestabilesiastatarilasciata. 9b2.MoGdicaremк/etc/ld.so.conf.ȑmnecessarioaggiungereunpercorsoalladirectorylibdovemlenuovemli-brerierisiedono,chesar/lib,come/usr/i486-linuxglibc2/libpGerlasceltaprecedente.DopGoU avercorretto/etc/ld.so.conf,siesegueե3PldconfigN-v"4.3Conguraregcc.ML'ultimopassodell'installazioneaggiornare/usr/lib/gcc-libinmoGdochegccsappiacomeusarelenuovelibrerie..PerLprimacosanecessarioduplicarelacongurazioneesistente..Pervericarelacongurazionecorrente,U siusal'opzione-v:KP%Ngcc-v =PReadingNspecsfrom/usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specsPgccNversion2.7.2.2oInquestocaso,~i486-unknown-linuxilsistemae2.7.2.2laversione..ȑnecessariocopiare /usr/lib/gcc-lib/U nellanuovqaU directoryditestpGerilsistema:j_2 ~?G4.8Installarecomelibreriaditest."7ՁVPcdN/usr/lib/gcc-lib/ =PcpN-ri486-unknown-linuxi486-linuxglibc2ؼSiU rendecorrentelanuovqadirectorytestdisistemaeladirectorydiversione卑PcdN/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2esicorreggeillespecspresente.=XInquestole,sicambia/lib/ld-linux.so.1a/lib/ld-linux.so.2. Inoltrevˀnecessarioancheeliminaretutteleespressioni%f...:-lgmongnelle,6dalmomentocheglibGcnonusalalibreriagmonpGerilproling.Unesempiodilespecspuesseretrovqatonellasezione10(EsempioleU spGecs).#Í4.4Aggiornareicollegamentip_erheaderle.MȖU necessariocrearecollegamentinellanuovqadirectorydilinkallealtredirectoryinclude:PcdN/usr/i486-linuxglibc2/include =PlnN-s/usr/src/linux/include/linuxPlnN-s/usr/src/linux/include/asmPlnN-s/usr/X11R6/include/X11ؼAlcunelibreriecomencursesnecessitanodiavereiproprilepGostiinquestadirectory*.Sidovrcopiareo collegareileinquestioneda/usr/include.J(ProbabilmentesarnecessarioricompilarnealcuneconglibGc2pGerU farlefunzionare.qInquesticasi,bastacompilareedinstallareilpacchettoin/usr/i486-linuxglibc2.)#Í4.5Vericarelapropriainstallazione.MPerU vericarel'installazione,sicreiilseguenteprogrammainunleglibGc.c:P#includeN =Pmain()P{0printf("helloNworld!\n");P}ؼe$sicompiliconl'opzione"-b-nostdinc-I/include-I/usr/lib/gcc- lib///include":P%Ngcc-bi486-linuxglibc2-nostdinc-I/usr/i486-linuxglibc2/include-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/includeNglibc.c-oglibcؼSiU usilddpGervericarecheilprogrammastatocollegatoconglibGc2enonlavecchialibGc:P%NlddglibcPlibc.so.6N=>/usr/i486-linuxglibc2/lib/libc-2.0.6.so(0x4000d000)P/lib/ld-linux.so.2N=>/lib/ld-linux.so.2(0x40000000)ؼSeycompila,icollegamentisonovericatiel'outputdelprogrammaquandoeseguito蓺"helloworld!" l'installazioneU haavutosuccesso.u_2 ~?G5.8InstallazionecomelibreriaCprimaria38ՁV5InstallazioneG\comelibreriaCprimaria:Questacsezionedescrivel'installazionediglibGc2comelibreriaprimaria.IQualsiasinuovoprogrammacom- pilatosarcollegatoconquestalibreria,\amenochenonsiusinoparticolariopzionipGerqualchealtraversione.ؼSebsidispGonediunadistribuzioneRedhatoDebian,Odopoaverbprelevqatoilerpmodebappropriati,consultareU leistruzionipGerl'installazione.qInquestocasosipusaltarelasezionechesegue.#Í5.1Compilarelalibreriadaisorgenti.MQuestaUsezionespiegacomecompilareglibGc2eleaggiunteapartiredaisorgenti.tȓnecessariocompilarelalibreria3asesidesideracambiareopzionidiottimizzazioneocongurazioneousareunpacchettodicuinonsidispGonganoU ibinari. 5.1.1#!\Prerequisiti.#CircaU 150MBdispaziolibGerosudiscoGNUU make3.75gccU >=2.7.2(meglio2.7.2.1)binutilsU 2.8.1(pGeralphanecessarioa?q)bashU 2.0autoGconfU 2.12(sesimodicacongure.in)texinfoU 3.11ؼSu<uni586@133con64MB;diRAM,sononecessariecirca3orepGercompilarecompletamentelibreriee aggiunte.qSuU uni686@200carico,necessariacircamezzora.5.1.2#!\Estrarreisorgen>ti.MȖU necessarioestrarreisorgentidagliarchiviinmoGdodapoterlicompilare.qIlmodomiglioreperfarlo:卑PtarNxzfglibc-2.0.6.tar.gz =PcdNglibc-2.0.6PtarNxzf../glibc-linuxthreads-2.0.6.tar.gzPtarNxzf../glibc-crypt-2.0.6.tar.gzPtarNxzf../glibc-localedata-2.0.6.tar.gzؼQuestaysequenzadicomandidispGoneledirectorylinuxthreads,"crypt,eylocaledatainglibc-2.0.6dovey莤 pGossibileU congurarequesteaggiunte.5.1.3#!\Congurazione.MSiYrcreiunadirectorydinomecompileinglibc-2.0.6,Zelasirendadirectorycorrente.~wT*uttoillavorosarfattov*inquestadirectory*,~lcosachesemplicherlapulizia.ԝ(GlisviluppatorinonsonoancorastatiingradodiU realizzareun'makeclean'pGerfetto.) 0_2 ~?G5.8InstallazionecomelibreriaCprimaria39ՁVmkdirNcompile =cdNcompileؼSiesegua../configure.=#Perusareipacchettiaggiuntivi,snecessariospGecicarliconenable-add-ons,come inlenable-add-ons=linuxthreads,crypt,loGcaledata.eProbabilmentesidesidereranchespGecicareipercorsidove debbanoessereinstallati._PeradeguarsialledistribuzionistandarddiLinux,+sispGecichiprex=/usr.(Quandoiunpressodi/usrspGecicatosuunsistemalinux,conguresacomesistemareipercorsirimanentipGerF~disporrelibc.soelealtrelibrerieimportantiin/lib.)KLalineacompletadicongurazionedovrebbGeessere:卑P../configureN--enable-add-ons=linuxthreads,crypt,localedata--prefix=/usr 5.1.4#!\Compilazione.MPerU compilareevericare,siesegua:PmakePmakeNcheck#Í5.2Prepararsip_erl'installazione.MOra+necessariospGostarealcunileperprepararsiperlanuovqa+libreria,\asecondachesistiainstallandodai sorgentigcodaibinari.IOgninuovoprogrammacompilatosarcollegatoallaglibGc,kmaprogrammivecchichenonsonocollegatistaticamentedipGenderannoancoradallibc5, ,perquestononpossibilesemplicementesovrascrivereU lavecchiaU versione.ؼ 9b1.CreareU unanuovqaU directorypGercontenereivecchile:=8rmkdirN-p/usr/i486-linuxlibc5/lib 9b2.IU vecchilediheaderdevonoessererimossida/usr/include:3PmvN/usr/include/usr/i486-linuxlibc5/include 9b3.CreareU unanuovqaU directorypGerileincludeedassegnareicollegamentiperincluderealtredirectory:3PmkdirN/usr/include3PlnN-s/usr/src/linux/include/linux/usr/include/linux3PlnN-s/usr/src/linux/include/asm/usr/include/asm3PlnN-s/usr/X11R6/include/X11/usr/include/X113PlnN-s/usr/lib/g++-include/usr/include/g++IcollegamentipGotrebberoesserediversiasecondadelladistribuzionedicuisidispone.0Adesempio SlackwareǡpGonegliheaderg++in/usr/local/g++-include,BmentreDebianin/usr/include/g++,eVrcollega/usr/lib/g++-includea/usr/include/g++.uvNell'ultimocaso,VprobabilmentesidesidererspGostareU ladirectoryoriginaledinuovoU in/usr/include. 9b4.RipristinareYognilediheaderocollegamentoextra.7AlcunelibrerienonstandardcomencursespGongo-noJiproprilein/usr/includeoppurecreanounlinkallalorodirectorydiincludein/usr/include.ȑ%Anecessario%MripristinarequestileecollegamentialnedipGoterusarecorrettamentelelibrerieextra. *_2 ~?G5.8InstallazionecomelibreriaCprimaria310ՁV 9b5.Aggiungere(lanuovqa(directorydellalibreria(adesempio/usr/i486-linuxlibc5/lib)all'inizio_del propriole/etc/ld.so.conf.`>ȑnecessarioavereld.so1.8.8(opirecente)pGerevitarealcunistranimessaggiU unavoltacheglibGcsiainstallata. 9b6.SpGostare/copiareU tuttelelibrerieCvecchieU nellanuovqaU directory*.=3PmvN/usr/lib/libbsd.a/usr/i486-linuxlibc5/lib =3PmvN/usr/lib/libc.a/usr/i486-linuxlibc5/lib3PmvN/usr/lib/libgmon.a/usr/i486-linuxlibc5/lib3PmvN/usr/lib/libm.a/usr/i486-linuxlibc5/lib3PmvN/usr/lib/libmcheck.a/usr/i486-linuxlibc5/lib3PmvN/usr/lib/libc.so/usr/i486-linuxlibc5/lib3PmvN/usr/lib/libm.so/usr/i486-linuxlibc5/lib3PcpN/lib/libm.so.5.*/usr/i486-linuxlibc5/lib3PcpN/lib/libc.so.5.*/usr/i486-linuxlibc5/liblibm.so.5\elibc.so.5dovrebbGeroesserecopiateenonspostatese/usrunapartizioneseparata da!/,TinquantosononecessariepGeriprogrammiusatiperfarpartirelinuxedevonorisiederenellapartizioneU diroGot. 9b7.SpGostareU ile/usr/lib/*.onellanuovqaU directory*.=3PmvN/usr/lib/crt1.o/usr/i486-linuxlibc5/lib =3PmvN/usr/lib/crti.o/usr/i486-linuxlibc5/lib3PmvN/usr/lib/crtn.o/usr/i486-linuxlibc5/lib3PmvN/usr/lib/gcrt1.o/usr/i486-linuxlibc5/lib 9b8.AggiornareU lapropriacachedopGolospostamentodellelibrerie=3PldconfigN-v#Í5.3Installaredalpacchettobinario.MSeCsiinstallaglibGcdabinariprecompilati,GMperprimacosasivorrvericarecosacisianelpackqageprimadi installareU ibinari:卑PtarN-tzvvfglibc-2.0.bin.i386.tar.gzPtarN-tzvvfglibc-crypt-2.0.bin.i386.tar.gzؼSeU sistainstallandoglibGcdacodicebinarioprecompilato,sideve:PcdN/PgzipN-dcglibc-2.0.bin.i386.tar.gz|tartvvf-PgzipN-dcglibc-crypt-2.0.bin.i386.tar.gz|tartvvf-PldconfigN-vؼConU dierentiarchitetturaoversione,sostituireinomidileadeguati.ؼLanversionediglibGcpirecentenongeneralmentedispGonibilecomepackqagebinario,Besiraccomanda caldamentemchesiaeseguitalaversionepirecentepGerevitareerrori.gSenonpossibilecompilaredas鎡lalibreria,SsemprepGossibileprelevqarladaunadelledistribuzionibasatesuglibc(adesempioRedHat)edinstallareU questa. E_2 ~?G5.8InstallazionecomelibreriaCprimaria311ՁV5.4Installaredaisorgenti.MPerU installarelalibreriadaisorgenti,siesegua:卑PmakeNinstall =PldconfigN-v#Í5.5Aggiornareilesp_ecsdigcc.Ilpassonaledell'installazione(sianelcasodicoGdicebinariochesorgente)diaggiornareillespecsdi gcc,֖inmoGdodapotercollegarecorrettamenteipropriprogrammi.U nellavecchiaU directorydisistemaPcdN/usr/lib/gcc-lib/PcpN-ri486-unknown-linuxi486-linuxlibc5ؼAndareU nelladirectoryoriginaleequelladiversionePcdN/usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2ؼpGersmodicareillespecspresenteinquestadirectory*. xNelle,QGsicambi/lib/ld-linux.so.1in /lib/ld-linux.so.2."Inoltre?necessariorimuovere?tutteleespressioni%f...:-lgmongpresentinel-le,dal`5momentocheglibGcnonusalalibreriagmonperilproling.UnesempiodilespecspuesseretrovqatoU nellasezione10(EsempiodilespGecs).#Í5.6Controllarelapropriainstallazione.MPerU vericarel'installazione,sicreiilseguenteprogrammainunleglibGc.c:P#includeN =Pmain()P{0printf("helloNworld!\n");P}ؼeU sicompiliilprogramma.P%Ngccglibc.c-oglibc _2 ~?G6.8CompilareconlalibrerianonprimarialibQc.ݠʹ12ՁVUsandoU lddpGossibilevericarecheilprogrammastatocollegatoconglibGc2enonlavecchialibGc:TԍP%Nlddglibc =Plibc.so.6N=>/lib/libc.so.6(0x4000e000)P/lib/ld-linux.so.2N=>/lib/ld-linux.so.2(0x40000000)xSeU ilprogrammasicompilaegenera"helloworld!"quandoeseguito,l'installazionecorretta.(t֍6CompilareG\conlalibrerianonprimarialibpc.:Ci>sonosituazioniincuisidesiderausareunalibreriaalternativqaconcuicompilareipropriprogrammi. Questa sezionespiegacomeraggiungerequestoscopGo,usandoledirectoryedinomidiinstallazionedegliesempiU delleprecedentiduesezioni.qSiricordidicorreggereinomisecondolapropriacongurazione."6.1Avvisop_erl'usodilibcnonprimarie.MPrima<dicompilareunprogrammachesarusatonellafasedibGoot<delsistema,tMsiricordicheseilprogramma莡collegatodinamicamenteedusatoprimachelepartizioninonroGotsianomontate,tuttelelibreriecollegatedovrannoesserepresentinellapartizionediroGot.mmSeguendoilpercorsodiinstallazionedellaprecedentesezionesucomeinstallareglibGccomelibreriaprimaria,lavecchialibrerialasciatain/lib,chesarnellapropriacpartizionediroGot.4JQuestosignicachetuttiiprogrammisarannoingradodifunzionaredurantelafasedibGoot.^T*uttaviase/usrsuunadiversapartizioneesiinstallaglibGccomelibreriaditestin/usr/i486-linuxglibc2, qualsiasiCnuovoprogrammacompilatoconglibGcnonfunzionernoaquandononsiU siamontata/usr.6.2Compilareprogrammaconunaglib_cditestMPerRcompilareunprogrammaconunainstallazionediprovqadiglibGc,PހnecessarioimpostareipercorsidiincludeaquellidiglibGc. J8Specicando"-nostdinc"sinegherannoinormalipGercorsi,Ze"-I/usr/i486-linuxglibGc2/include"tfarpuntareagliincludediglibGc.}SaranchenecessariospGecicaregliincludedigccchesitrovqanoin/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include(assumendochesisiainstallatalaU libreriaditestini486-linuxglibGc2conversionedigcc2.7.2.2).ؼPer!collegareunprogrammaconunalibreriadiprovqaglibGc,+{necessariospecicarelacongurazionedigcc.QuestoU siottieneusandol'opzione"-bi486-linuxglibGc2".Perz3lamaggiorpartedeiprogrammi,wsipGossonospecicarequestenuovez3opzioniaggiungendolealleopzionidiU makele$CFLAGSe$LDFLAGS:TԍPCFLAGSN=-nostdinc-I/usr/i486-linuxglibc2/include-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include-bi486-linuxglibc2 =PLDFLAGSN=-bi486-linuxglibc2xSe}Rsistausandounoscriptdicongurazione,^sideniscanolevqariabilid'ambiente}R$CFLAGS}e$LDFLAGS (usandoenv/setenvpGercsh/tcsh,Woset/exportpersh/bash/etc)primadieseguirecongure.-7I`makelegeneratiinquestomoGdodovrebberoavere$CFLAGS㼹e$LDFLAGScorretti.Nontuttiiledicongurazionefannopriferimentoaquestevqariabili,quindinecessariocontrollarel'esecuzionedicongureecorreggeremanualmenteU imakelesenecessario.Se1iprogrammichesicompilanoeseguonosologcc(enondirettamentecppobinutils),`sipuusareloscriptcheU seguepGerevitarediscriveretutteleopzioni: 2_2 ~?G7.8CompilareprogrammiC++.)13ՁVP#!/bin/bash =P/usr/bin/gccN-bi486-linuxglibc2-nostdinc\["F-I/usr/i486-linuxglibc2/includeN\["F-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/includeN"$@"ؼSiU puusarequestoscriptinveceU di"gcc"pGerlacompilazione.#Í6.3Compilareprogrammiconlib_c5quandoglibclalibreriaprimaria.MPerNcompilareunprogrammaconlevecchielibrerieavendoinstallatoglibGccomelibreriaprimaria, necessario impGostare{zipercorsidiinclusioneaivecchi{zinclude.Specicando"-nostdinc"sinegaall'accessoalpercorsonormale,meU@"-I/usr/i486-linuxlibGc5/include"farpuntareagliincludedilibGc.6Inoltrenecessariospecicare"-I/usr/lib/gcc-lib/i486-linuxlibGc5/2.7.2.2/include"peraccedereaspeciciincludegcc.3SiricordidicorreggerequestiU pGercorsisullabasedeinomichesisonodatiallepropriedirectoryeversionedigcc.ؼPer)collegareunprogrammaconlapropriavecchialibGc,2necessariospecicarelacongurazione,2edfattocon:q"-bU i486-linuxlibGc5".PerGlamaggiorpartedeiprogrammi,ӦsipuspGecicarelenuoveopzioniaggiungendolealleopzionidimakele$CFLAGSU e$LDFLAGS:卑PCFLAGSN=-nostdinc-I/usr/i486-linuxlibc5/include-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include-bi486-linuxlibc5 =PLDFLAGSN=-bi486-linuxlibc5ؼSe}Rsistausandounoscriptdicongurazione,^sideniscanolevqariabilid'ambiente}R$CFLAGS}e$LDFLAGS (usandoenv/setenvpGercsh/tcsh,Woset/exportpersh/bash/etc)primadieseguirecongure.-7I`makelegeneratiinquestomoGdodovrebberoavere$CFLAGS㼹e$LDFLAGScorretti.Nontuttiiledicongurazionefannopriferimentoaquestevqariabili,quindinecessariocontrollarel'esecuzionedicongureecorreggeremanualmenteU imakelesenecessario.Se1iprogrammichesicompilanoeseguonosologcc(enondirettamentecppobinutils),`sipuusareloscriptcheU seguepGerevitarediscriveretutteleopzioni:卑P#!/bin/bash =P/usr/bin/gccN-bi486-linuxlibc5-nostdinc\["F-I/usr/i486-linuxlibc5/includeN\["F-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/includeN"$@"ؼSiU puusarequestoscriptinveceU di"gcc"pGerlacompilazione.(7CompilareG\programmiC++.:Libg++usaalcunepartidellalibreriamatematica,-comepureilcollegamentoalibm.ZmDamomentochela libg++esistentestatacompilataconlapropriaprecedentelibreria,necessarioricompilarelibg++conglibGc(peravereunacopiabinaria.4L'ultimaversionesorgentepGerlibg++insiemeconlaversionebinariacompilataU conglibGc(perx86)puesseretrovqatapresso:ftp://ftp.yggdrasil.com/private/hjl/U .~_2 ~?G8.8Problemi.14ՁV7.1Installarelibg++p_erglibcconguratapertest.MAvendoinstallatoglibGccomelibreriaditest,;necessarioinstallareilenelladirectorydoverisiedeglibGc(che k/usr/i486-linuxglibc2pGergliesempidellesezioniprecedenti).InstallandodaunpacchettoinformatobinarioWI(cosachel'autoreconsigliainquantononmairiuscitoacompilareconsuccessolibg++inquestomo-do),znecessarioestrarreileinunadirectorytempGoraneaespostaretuttiiledausr/lib/in/lib/,Oda|yusr/include/in/include/(ricordarsiprima}dirimuovere}illinkinclude/g++!),edinnedausr/bin/in/bin/."y&7.2Installarelibg++p_erglibcconguratacomeprimaria.Avendo"installatoglibGccomelibreriaprimariaevolendomantenerelapGossibilitdicompilareprogrammiconla0vecchiaversionedilibGc,7necessariospostare-primadellanuovqainstallazione-tuttiilenelladirectorydilibGc.TProbabilmenteilmodopisempliceperfarlodiinstallareunacopiadilibg++compilataperlibc5comeU nellasezioneprecedente,epGoiinstallarenormalmenteglibGc."y&7.3CompilareprogrammiC++conlib_cnonprimaria.PerocompilareprogrammiC++conunalibrerianonprimarialibGc,6Ànecessariospecicareladirectorydiincludeg++chenegliesempiprecedenti蓺/usr/i486-linuxglibc2/include/g++pGerl'installazionediglibGcrcomelibreriaditeste/usr/i486-linuxlibc5/include/g++perl'installazionediglibccomelibreriaprimaria.qNormalmenteU siraggiungequestoscopGoimpostandolavqariabile$CXXFLAGS: PCXXFLAGSN=-nostdinc-I/usr/i486-linuxglibc2/include-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include-I/usr/i486-linuxlibc5/include/g++-bi486-linuxglibc2(8Problemi.:Il~PackqageglibGccontieneunaFAQJconinformazioniaggiuntivedavericaresecisonoproblemi.,UnaversioneonlineU anchedispGonibilepressoؼhttp://222.imaxx.net/~thrytis/glibc/glibc-FAQ.html.0SottocisonoalcunisuggerimentipGerrisolvereproblemiU chenonsonocopGertidall'FAQosonotrattatiquiinmaggioredettaglio."y&8.1InomidiHostnonvengonorisoltiGlibGc:2usaunmetododierentedalibc5nelcercareinomidihost."XIlcodice(NSS):perloswitchdelnameIserverdiglibGccercaperunle/etc/nsswitch.conf.4Seinomidihostnonsonorisoltiusandoun'applicazione[glibGc3edille/etc/resolv.confconguratocorrettamente,ݪvericare[checisiaille/etc/nsswitch.conf.qSeU nonesiste,pGossibilecrearneunocontenenteU lalinea: hosts:Nfilesdns⍹AdessoU sicercherin/etc/resolv.confpGertrovqareinameserver.ؼSiU consultiallepagineinfodellasezionedilibGcchedescriveillensswitch.confinmaggioredettaglio.(9SegnalareG\bug.:SeSsipGensachelalibreriacontengaunerrore,-pGerprimacosasiconsultiilleFAQ.ȑ&pGossibilechealtriabbianoIavutolostessoproblemaechecisiaunasoluzionefacile.mInoltrenecessariocontrollarelasezione_2 ~?G10.8EsempiodilespQecs.H15ՁVStrumentilconsigliatipGerl'installazionedellalibreriaGNUVCnellleINST*ALLVdalmomentochealcunisono bugU deitoGolenondellalibreria.ؼUnadvoltascopGertounerrorenecessariosincerarsichesiaveramenteunerrore.0BUnbuonmoGdoconfrontareilPcompGortamentodellaGNUPconaltrelibrerieC.Selostesso,Qprobabilmentenonsitrattadiunbug(manonU detto),altrimentiunadellelibreriequasicertamenteerrata.PassoU successivo,consultareildatabasedibugpresso:http://www-gnats.gnu.or}/g:8080/cgi-bin/wwwgnats.pl* http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pldŹ. nV*ericarecheilproblemanonsiagistatosegnalato.SarebbGeancheilcasodicontrollareU illeBUGSdistribuitoconlibGcpervederel'elencodeibugconosciuti.Scovqatounerroredicuisicerti,usicerchidirestringerloalcasoditestpicompattopGossibile.Nelcasodi0unalibreriaC,dovrebbGeesserepossibilerestringerloadunasolachiamatadilibreria.MIlcompitonondovrebbGeU esseretroppodicile.IlpassonaleconsistenelloscrivereunsemplicecasoditestpGersegnalarel'errore.*MComunicandoilproblema,si {spGedisceiltest,iirisultatiottenuti,irisultatiattesi,qualesiritieneessereilproblemasesihaunaqualcheopinione),il.@QuestalistapGersegnalareproblemiU pGerGNUCC.GNUCCeGNUClibsonoentitseparategestitedapersonediverse.(10%EsempioG\dilesppecs.:SiincludeunesempiodilespGecperglibc2, 7usatodagccperlacompilazioneedilcollegamento.[tDovrebbeessere'presentenelladirectory/usr/lib/gcc-lib//.bhSe'sistaU usandounsistemax86,probabilmentepGossibilecopiareesattamentequestasezionenelle.卑P*asm: =P%{V}N%{v:%{!V:-V}}%{Qy:}%{!Qn:-Qy}%{n}%{T}%{Ym,*}%{Yd,*}%{Wa,*:%*}P*asm_final:P%{pipe:-}P*cpp:P%{fPIC:-D__PIC__N-D__pic__}%{fpic:-D__PIC__-D__pic__}%{!m386:-D__i486__}%{posix:-D_POSIX_SOURCE}%{pthread:-D_REENTRANT}P*cc1:P%{profile:-p}Ҟ_2 ~?G11.8Miscellanea.v16ՁV =P*cc1plus:P*endfile:P%{!shared:crtend.o%s}N%{shared:crtendS.o%s}crtn.o%sP*link:P-mNelf_i386%{shared:-shared}+%{!shared:%{!ibcs:!"%{!static:%{rdynamic:-export-dynamic}W%{!dynamic-linker:-dynamic-linkerN/lib/ld-linux.so.2}}%{static:-static}}}P*lib:P%{!shared:N%{pthread:-lpthread} r%{profile:-lc_p}%{!profile:-lc}}P*libgcc:P-lgccP*startfile:P%{!shared:W%{pg:gcrt1.o%s}N%{!pg:%{p:gcrt1.o%s}q_P%{!p:%{profile:gcrt1.o%s}^z%{!profile:crt1.o%s}}}}8crti.o%s%{!shared:crtbegin.o%s}%{shared:crtbeginS.o%s}P*switches_need_spaces:P*signed_char:P%{funsigned-char:-D__CHAR_UNSIGNED__}P*predefines:P-D__ELF__N-Dunix-Di386-Dlinux-Asystem(unix)-Asystem(posix)-Acpu(i386)-Amachine(i386)P*cross_compile:P0P*multilib:P.N;(11%Miscellanea.荍11.1%}Altreinformazioni.M11.1.1(P>agineweb.#FSF'sGNUCLibr}/aryHomePageU http://www.gnu.org/software/libc/libc.htmlUsingGNULib}/c2withLinuxU http://www.imaxx.net/~thrytis/glibc/Installingglib}/c-2onLinuxU http://huizen.dds.nl/~frodol/glibc/.Debianlib}/c5tolibc6Mini-HOWTOlhttp://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO. htmlU . 11.1.2(Newgroups.c}/omp.os.linux.development.systemࢠ_2 ~?G11.8Miscellanea.v17ՁVc}/omp.os.linux.development.appslinux.dev.kernelgnu.bugs.glib}/c `11.1.3(Mailinglists.!ListaLin>uxdidiscussioneGlibQc2QuestalistaintesapGerlediscussionitrautentiLinuxchehannoinstallatoglibGc2,Clenuovelibre- rie]GNU9C.ArgomentiriguardanoproblemidicompatibilitequestionirelativelacompilazionedelcoGdiceinambienteLinux/glibc.PeriscriversinecessarioscrivereaMajor}/domo@ricardo.ecn.wfu.eduincludendoU comemessaggio:qsubscribGeglibc-linux.GliU archivipGerquestamailinglistpossonoesseretrovqatipressohttp://www.progressive-comp.com/Lists/?l=linux-glibc&r=1&w=2#linux-glibc#11.2%}RiconoscimentiMLaU maggiorpartediquesteinformazionistatapresadaؼGNULib}/c)webpagehttp://www.gnu.org/software/libc/libc.html,dall'annunciodellaglibGc2erelativicommentidiUlrichDreppGer's.MAndreasJaegerhafornitoU partedellasezioneriguardolasegnalazionedibug.LeU seguentipGersonehannofornitosegnalazioniedinformazionisuquestodocumento:͍AllexU MarkU BrownUlrichU DreppGerScottU K.EllisAronU GrisAndreasU JaegerF*roGdoU LooijaardRyanU McGuireShayaU PotterLesU SchaerAndyU SewellGaryU SheaStephaneU JanU V*andenbGosT*raduzioniU diquestodoGcumentosonofatteda:Cinese:qAllexU _2 ~?G11.8Miscellanea.v18ՁVF*rancese:qOlivierU TharanItaliano:qAndreaU GirottoGiappGonese:qKazuyukiU Okqamoto#Í11.3%}Segnalazioni.MAU partelascritturadiquestoHOWTO,lamanutenzionedellapaginaؼglib}/c2forLinuxU http://www.imaxx.net/~thrytis/glibce0l'usosullapropriamacchina,g}l'autorenonhanullaachefareconilprogettoglibGc.Ognisegnalazione, correzioneU opropGostasarbenaccetta,scrivendoaejg3@c}/ornell.eduU mailto:ejg3@cornell.edu.11.4%}Copyright.MCopyright(c)1997EricGreen.KQuestodoGcumentopuesseredistribuitoesclusivqamenteneiterminipGostidallaU licenzaLDP*.C;_2GqL ectt0900HЃ ecti1000!N ecbx1200]f ecbx1000&Lt$ffffecbx14406 ecss1000Iqqecss2074qL ectt1000 1 ecrm1000 !", cmsy10 b> cmmi10(