Parfait, merci pour ces explications qui d�passent mes esp�rances. Comme quoi le support peut �tre tout aussi bon s'il est gratuit :)
Quant au probl�me, j'esp�re juste que ces corrections vont s'espacer, parce que finalement si �a n'arrive qu'une fois toutes les cinq versions de gcc, je saurais me d�merder pour �tre � jour. Surtout en consid�rant le prix du compilateur... On 2003.07.18 19:42 Marc Mongenet wrote: > B . Carrupt wrote: > > Bonjour, > > > > J'ai compil� sur ma RH7.2 des librairies au format ELF, et je me suis > fait > > un script qui les copie dans le r�pertoire /usr/lib/mylib. > > > > Lorsque je cr�e un ex�cutable qui utilise ces librairies sur une RH7.2 > ou > > RH7.3, �a fonctionne tr�s bien, mais par contre, sur une RH8.0, �a ne > > fonctionne pas : la librairie est bien trouv�e mais pas les m�thodes > (ne > > trouve aucune m�thod, pas m�me le constructeur et le destructeur). > > > > Par contre, d�s que je recompile mes librairies sur RH8.0, �a > fonctionne. > > Cela vient sans doute du fait d'un changement de version de GCC. > Les fichiers objets compil�s avec G++ 3.2.x ne sont pas compatibles > avec les versions pr�c�dentes. Sp�cifiquement, c'est l'ABI > (Application Binary Interface) qui n'est pas compatible. > <http://gcc.gnu.org/gcc-3.2/c++-abi.html> > L'ABI comprend l'arrangement des variables dans les structures, > la mani�re d'appeler les fonctions (virtuelles), la mise en oeuvre > de l'h�ritage multiple... voir > <http://developers.sun.com/tools/cc/articles/CC_abi/CC_abi_content.html> > > L'incompatibilit� la plus courante est dans le "name mangling" > (d�coration des noms de fonction). L'avantage de cette incompatibilit� > est qu'elle est d�tect�e par le linker (il ne trouve pas les fonctions), > plut�t que par un crash � l'ex�cution. > > Les noms de fonction sont d�cor�s avec le type des param�tres, > ce qui donne un nom unique � chaque fonction, m�me surcharg�e. > Ainsi le linker s'y retrouve, pour autant que l'algorithme de > d�coration employ� soit le m�me pour tous les objets li�s entre > eux. Exemple : > Function Mangled Name > float f(float) __1cBf6Ff_f_ > int f(int) __1cBf6Fi_i_ > int T::f(int) __1cBTBf6Mi_i_ > int T::f(char*) __1cBTBf6Mpc_i_ > > Les variations de "name mangling" de G++ ne sont pas introduites > gratuitement. Elles r�sultent de corrections de bugs et sont > souvent n�cessaires pour supporter le C++ standard (avec notamment > ses namespaces, ses exceptions ou ses templates complexes). > > > Est-ce que quelqu'un peut me dire si c'est normal, et si oui, s'il y a > un > > moyen de garder la compatibilit� entre plusieurs version de RH, voire > entre > > une version de RH et une version plus r�cente de Suze ou Mandrake ou > > Quesaije ? > > Je pense que non, sinon ces �volutions n'auraient pas �t� > n�cessaires. Mais une ABI multi-vendeur se stabilise > <http://www.codesourcery.com/cxx-abi/> > Ces probl�mes devraient donc s'espacer. En outre il sera > possible de lier des fichiers objets de compilateurs C++ > diff�rents, �a progresse ! > > Marc > > _______________________________________________ > gull mailing list > [EMAIL PROTECTED] > http://lists.alphanet.ch/mailman/listinfo/gull > _______________________________________________ gull mailing list [EMAIL PROTECTED] http://lists.alphanet.ch/mailman/listinfo/gull
