linux user group brescia

immagine del castello

Archivio della mailing list

perche' la gente usa ancora la redhat?

Luca Giuzzi giuzzi a tartaglia.dmf.bs.unicatt.it
Gio 29 Mar 2001 15:36:41 UTC
> 
> At 16.52 29/03/01 +0200, Carlo Remino wrote:
> 
> >Ok, so che a leggere quello che seguira' una meta' di voi si sbellichera' 
> >dal ridere e l' altra meta' si domandera' se sogna o e' desta, ma qualcuno 
> >avrebbe la bonta' di spiegarmi che cos' e' 'sta glibc, a che cosa serve e 
> >perche' se ne va in giro con tanti nomi diversi ?
> 
> http://www.gnu.org/software/libc/libc.html
> 
La libc e' la libreria di funzioni `standard' cui ricorrono praticamente
 tutti i programmi sul sistema, anche quelli che in C non sono scritti;
 teoricamente sarebbe possibile scrivere del codice che non passa
 attraverso la libc (in assembler o altro) e utilizza direttamente le
 chiamate di sistema (ad es. per stampare una stringa, piuttosto che
 per creare un file), ma la cosa e' poco pratica e poco portabile.

Perche' tutti i nomi? Il motivo e' semplice: la libc e' parte integrante
 ed essenziale di un sistema Unix-like e -nel caso di linux- ha subito 
 diverse `incarnazioni', in concomitanza con l'evoluzione del kernel e
 del sistema in generale. Quelle che io ho elencato sopra sono le 
 `generazioni' piu' importanti:

 libc4 -> in formato binario "a.out" ... questo e' il formato usato dagli
         eseguibili sotto linux per il kernel 1.0 e che e' stato impiegato
         per lungo tempo anche con lo 1.2. Lasciato in favore di `ELF'
         (il formato corrente) per problemi nella creazione delle librerie
         dinamiche e una scarsa flessibilita' dell'implementazione. 
         Per intenderci, la differenza fra una libreria in formato "a.out"
        e una in formato "ELF" e' piu' o meno la stessa che c'e' fra una
         ".dll" o un programma ".exe" e una libreria sotto linux.

libc5 -> libc in formato ELF; standard (ad esempio) con RH5.x o SlackWare 4.
         E' un porting altamente modificato della libc4... non sono 
         compatibili (per ovvi motivi). Su un sistema ci possono essere libc4
         e libc5... la 4 per i programmi in formato "a.out" e la 5 per quelli
         in formato "ELF". Nessun problema di coesistenza (a parte lo spazio
         e la memoria sprecati).

libc6 aka glibc2 -> riscrittura da zero della libc... ha richiesto piu'
                    di 2 anni ed e' finalizzata fra le altre cose a
                   1. incorporare il supporto per l'internazionalizzazione;
                   2. fornire accesso alle nuove funzionalita' del kernel;
                   3. offrire, fra le altre cose, chiamate di funzioni 
                      rientranti (per il multithread);
                   4. evitare future incompatibilita'.
                    Anche questa NON e' compatibile con la libc5 ma il
                    linker dinamico puo' far coesistere programmi compilati
                    con la 5 e programmi compilati con la 6. Il sacrificio
                    della compatibilita' diretta con la 5 e' stato 
                    intenzionale.

Fra gli obiettivi della glibc2, i punti 1,2 e 3 sono stati raggiunti senza
 troppo dolore... il 4, ahime' no [se si vuole si puo' dare la colpa a RH
 di aver rilasciato la sua versione 6.0 con una libreria non ancora troppo
 stabilizzata; d'altro canto se RH non l'avesse fatto, ben difficilmente
 ci sarebbe stata una base di utenti abbastanza grande da provare il tutto].

In pratica la glibc2.1 NON e' compatibile con la glibc2.0 dal punto di vista
 binario e le due NON possono coesistere sul medesimo sistema (a meno di
 sporchi trucchi... trucchi tanto sporchi da non essere opportuni); una
 brutta cosa. La glibc2.2 (quella attualmente inclusa con RH7) e' una
 risistemazione dei problemi derivanti dalla 2.0/2.1 ma -nuovamente- viene
 sacrificata buona parte della compatibilita' binaria (un 30% di applicazioni
 compilate per la 2.{0,1} sotto 2.2 non vanno); comunque pare che questa
 sia la volta buona, modulo avere una glibc2.2 STABILE!

Ciao,
 lg



Maggiori informazioni sulla lista Lug