[Linux-bruxelles] Backport de Flightgear

Jérôme Warnier jwarnier at bxlug.be
Lun 24 Mar 13:47:08 CET 2003


Rémi Letot wrote:
> On Mon, 2003-03-24 at 13:06, Serge Smeesters wrote:
> 
>>>S'il y a du c++, il faut que *tout* le système soit compilé avec 2.95 ou
>>>3.2, mais surtout pas de mix. Déjà si *certaines* dépendances sont
>>>compilées avec 3.2 mais pas toutes, ça a toutes les chances de merder. 
>>>
>>>(J'en ai fait la douloureuse et longue expérience avec un programme de
>>>gestion de POS)
>>
>>En fait, est-il possible d'utiliser gcc3.2 avec woody ?
> 
> 
> Oui, mais...
> 
> 
>>Si un programme doit être compiler avec gcc3.2, même partiellement, par
>>exemple du fait qu'il est écrit en C++ "advanced"(avec des trucs que
>>gcc2.95 ne suporte pas), ce programme peut-il s'integrer à woody ?
> 
> 
> Pas tel quel.
Si.

>>Ne faut-il pas alors tout recompiler avec gcc3.2 ?
> 
> 
> Ben si.
Ben non.

>>N'y a-t-il pas un "stress" autour de ce problème ?
> 
> 
> La transition de gcc < 3.2 à gcc 3.2 est très lourde du fait des
> incompatibilités qui en découlent. Ca fait l'objet d'une procédure de
> migration planifiée, réglementée, et annoncée dans sid. (qui est
> utilisée quotidiennement par plein de gens, ce qui rend la transition
> plus critique)
Sorry, mais tu n'es pas très clair.

En fait, ce qui si passe, c'est qu'il n'y avait pas encore de format 
standard pour les librairies écrites en C++, appelé C++ ABI.
GCC 3.2 est un des premiers (si pas le premier) compilateur C++ à 
implémenter le nouveau standard qui vient de sortir, le seul nom que 
j'ai réussi à lui trouver est "Common C++ ABI for GNU/Linux", bien 
qu'elle s'applique aussi et les BSD. Cela ne concerne donc pas ce qui 
n'est pas écrit en C++.
Malheureusement, il est incompatible avec le format en cours avant.
Ce que cela veut dire, c'est qu'un programme en C++ compilé avec GCC 3.2 
doit absolument n'utiliser que des librairies compilées elles aussi avec 
GCC 3.2 (ou un autre compilateur compatible avec cette "Common C++ ABI 
for GNU/Linux").

Plus d'infos sur http://gcc.gnu.org/gcc-3.2/c++-abi.html ou 
http://www.codesourcery.com/cxx-abi/.

Pour Woody, le problème est que les librairies sont compilées avec GCC 
2.95 sur Intel (ce n'est pas le cas sur toutes les architectures), donc, 
il faudrait recompiler celles linkées par tes programmes compilés avec 
GCC 3.2 (ainsi que tous les programmes qui les utilisent) pour que cela 
fonctionne. Parfois (cela dépend de ce que fait ton programme), les 
programmes sont linkés avec la GLIBC, et alors, par transitivité, il 
faut recompiler tout le système.

J'espère que j'ai été clair.

> Note que quelle que soit la distribution, tout le monde est face à ce
> problème.
Mais pour Debian, c'est un peu plus délicat, car il n'y a pas de 
frontière bien nette entre Testing et Unstable.

> A+.





Plus d'informations sur la liste de diffusion Linux-bruxelles