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
|