linux user group brescia

immagine del castello

Archivio della mailing list

libc++ e egcs (o gcc)

Luca Giuzzi giuzzi a dmf.bs.unicatt.it
Dom 29 Ott 2000 19:59:15 UTC
Il problema fra le varie versioni del gcc e' con il C++ piuttosto che col C.
 Il codice scritto in C ANSI viene compilato piu' o meno allo stesso modo da
 tutte le versioni di gcc. Ci sono pero' alcune differenze nel modo in cui
 viene ottimizzato il codice e nel modo in cui il compilatore reagisce ad
 espressioni `undefined' dello standard. Questo e' il motivo per cui,
 ad esempio, gcc distribuito con RH7.0 ha problemi con i sorgenti del kernel.
 Lasciami ripetere che pero' la colpa e' del codice nel kernel che e' stato
 scritto immaginando che il compilatore non cercasse di essere troppo furbo.

 Il C++: questa e' una storia diversa... il C++ e' un linguaggio che dal
 punto di vista dell'implementazione e dei requisiti si distanzia MOLTO dal
 C... in particolare cose come la RTTI richiedono un po' di cura... tanta
 cura. Aggiungi che lo standard e' complesso e tutta una serie di cose
 collegate, tipo i possibili effetti collaterali di certe operazioni.
 Risultato: le versioni vecchie di gcc (e la 2.7.1 e' fra queste) non
 implementavano tutto quanto RICHIESTO per il C++; ad esempio la STL
 non poteva essere compilata a meno di non provvedere a includere patches
 non da poco. I vari egcs vanno meglio da questo punto di vista; il problema
 adesso e' il formato binario utilizzato. ELF e' disegnato e funziona
 benissimo per librerie C... le librerie C++ richiedono di gestire i simboli
 in modo un po' diverso, donde la necessita' di una decisione `arbitraria'
 da parte degli sviluppatori e tutte le incompatibilita' fra versioni...

 il gcc 2.95 e' l'ultimo rilasciato... RH7.0 include un non esistente
 2.96 (non esistente in quanto e' un 2.95 patchato alla grande!)...
 il prossimo sara' il 3.0 e sono TUTTI incompatibili fra di loro dal
 punto di vista del formato binario. Si spera che il 3.0 sara'
 "la cosa giusta"(TM), ma ...

 Venendo alla tua lamentela: il codice e' da leggere, interpretare e
 possibilmente modificare. Talvolta viene anche compilato, ma questo
 e' accessorio e nessuno sviluppatore che si rispetti si preoccupa di
 questo ultimo dettaglio. Prova a vedere se trovi una versione vecchia
 del programma che ti serve (o, nel caso tu conosca il C++, se riesci a
 capire che cosa non funziona) o una copia precompilata e linkata
 staticamente del tutto. Io mi sento di sconsigliarti di fare una 
 `upgrade parziale' di gcc e libstdc++ se non sai che cosa stai facendo...
 d'altro canto questa puo' anche essere una occasione per imparare
 un po' di cose...

Ciao,
 lg

> From owner-lug a lugbs.linux.it  Sun Oct 29 20:41:42 2000
> To: <lug a lugbs.linux.it>
> Subject: libc++ e egcs (o gcc)
> MIME-Version: 1.0
> Content-Type: text/plain;
> 	charset="iso-8859-1"
> Content-Transfer-Encoding: 7bit
> X-Priority: 3 (Normal)
> X-MSMail-Priority: Normal
> X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0)
> X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
> Importance: Normal
> Sender: owner-lug a lugbs.linux.it
> Reply-To: "Alfredo Quartini" <quarto a numerica.it>, lug a lugbs.linux.it
> X-Loop: lug a lugbs.linux.it
> X-Subliminal: Support FSF and GNU project!
>
>
> Ciao a tutti,
>
> ho scaricato il binario (rpm) di un programma che richiede gcc-2.95.2 e la
> libreria libstdc++-libc6.1-2.so.3
> Dato che io ho installato la redhat6.2 mi ritrovo invece con egcs-2.91.66 e
> libstdc++-2-libc6.1-1-2.9.0.so
>
> Vabbe' mi sono detto, prendo il sorgente e me lo compilo.
> Il bello e' che ./configure si rifiuta di creare il Makefile perche' non
> rileva le
> versioni giuste del compilatore e della sua libreria.
>
> Ammesso di trovare il tempo e la voglia di farmi il Makefile a mano,
> ho qualche speranza che forzando la compilazione poi il tutto funzioni ?
> Ci sono incompatibilita' evidenti tra le due versioni che pregiudicherebbero
> il funzionamento
> del binario ottenuto ?
>
> Insomma, con un modem a 56k mica posso star qui a fare il download delle
> nuove
> versioni di egcs e libstdc++ etc etc.
>
> Non e' che la versione richiesta dal programma e' quella che viene data
> insieme alla RedHat7.0 ?
>
> A dir la verita' mi sto un po' rompendo di queste incompatibilita'  tra
> compilatori
> e librerie c (che non sono proprio superflue...) ogni 2 mesi...
> Anche perche' viene a mancare uno dei punti di forza di Unix e dell'Open
> Source ...
> Che me ne faccio dei sorgenti se poi non posso compilarli  senza farmi
> venire i patemi d'animo ?
>
> Quarto.
>
> A. Quartini
> mailto:quarto a numerica.it
>
>
>



Maggiori informazioni sulla lista Lug