[Linux-Biella] compatibilità tra le distro..
Emanuele Aina
faina.mail a tiscali.it
Mar 19 Dic 2006 00:11:35 CET
Daniele (Mastro) sperò:
>> == GCC ==
>> Mentre per il C l'ABI è ormai stabilissima, per il C++ ha subito molti
>> cambiamenti, spesso incompatibili tra gcc 2.95, 3.x e le prime versioni
>> del 4.x.
>> Questo rende incompatibili programmi C++ compilati con versioni diverse
>> di GCC. Per i sorgenti non ci sono problemi.
>
> beh spero che questo si risolva a breve.. nel senso che gli standard
> sono importanti.. se non si seguono diventa una giungla..
In questo caso non c'è alcuno standard a cui attenersi, comunque gli
sviluppatori di GCC hanno promesso di non cambiarla più per un bel po'
(si spera :).
> solo 1 domanda.. dici che non ci sono problemi se si hanno i sorgenti
> ma in che senso rende incompatibili programmi compilati con versioni
> diverse di gcc?
ABI == Application Binary Interface
Determina come vengono disposti i dati in un eseguibile/libreria
compilato: ad esempio dove mettere le informazioni sul numero/tipo di
parametri oppure il modo di decorare le funzioni C++.
Applicazioni compilate con versioni diverse del GCC si aspettano di
trovare le informazioni in modo differente, da cui i problemi.
> se ho il programma A compilato con gcc 2.95 e il programma B compilato
> con gcc 4.x questi non riescono a "lavorare insieme"
Il problema avviene in fase di linking, per cui è solo tra programmi e
librerie compilati con versioni diverse.
> o è più un discorso di programmi e librerie?
Esatto.
>> == Disposizione dei file ==
>> La grande differenza tra le distribuzioni è la disposizione dei file: in
>> Debian /opt è intoccabile, RedHet e derivati ne fanno ampio uso, /etc è
>> pressoché read-only in Debian, mentre altri ci scrivono allegramente,
>> oltretutto è disposto molto diversamente tra una distribuzione e
>> l'altra, ecc.
>
> ecco questa invece non mi sembra una cosa molto furba...
> sarebbe meglio uniformarsi almeno su questo
Bravo.
Manda una mail a quelli di RedHat per uniformarsi.
>> Cose tipo l'abilitazione del supporto ai wide-char nell'API C di python,
>> eccetera.
>
> non so cos'è ma suppongo sia un'insieme di chiamate a funzioni che
> possono essere compilate o meno...
In base a un flag di compilazione nell'API C python può usare string edi
caratteri normali oppure caratteri unicode a 16 bit (UCS2).
Per questo un programma che si aspetta l'API UCS2 non funziona con
python compilato con l'API normale.
(Questo concerne solo le estensioni compilate, i programmi python stanno
tranquilli ;)
> ma queste su pacchetti già fatti dovrebbero già essere incluse di
> default.. o almeno poter installare una patch che le abilita modificanto
> quanto già installato.. (secondo me)
Non è question di patch, ma di ricopilare il pacchetto e tutti quelli
che dipendono da esso e tutti quelli che dipendono da questi e tutti
quelli che dipendono da questi altri e tutti quelli che...
>> Gentoo è un discorso a parte, in quanto ogni utente è più o meno
>> incompatibile con gli altri (a seconda dei flag usati in compilazione).
>
> si ma lì sta all'utente e non al programma farlo funzionare, quindi non
> vedo problemi dal punto di vista di chi scrive software
Peccato che l'utente abbia la tendenza a lamentarsi con un "uffa, ma qui
FooBar v2.0 non funziona" e le aziende software non osino rispondergli
"sei un cretino, dacci i soldi e arrangiati".
>> Un produttore non-free deve seguire le specifiche LSB e sviluppare su
>> quelle, aspettandosi un po' di problemi.
>>
>> Uno free ha dalla sua l'aiuto della comunità.
>
> io credo che un produttore, free o meno dovrebbe poter esser sicuro che
> seguendo uno standard (LSB) non avrà problemi.
Certo, ma non è una cosa semplice e richiede una montagna di lavoro che
qualcuno dovrà pur fare. Se vuoi puoi iscriverti alla mailing list della
LSB per ascoltare e dare una mano.
> altrimenti Linux sarà sempre una piattaforma poco ambita per piccoli
> progetti o per grosse società che fanno software closed (Adobe Photoshop
> / Cad ecc...)
Perdonami, ma chi se ne frega. ;P
--
Buongiorno.
Complimenti per l'ottima scelta.
Maggiori informazioni sulla lista
Linux