Bonsoir,

quand on compile avec GCC, si on utilise une liaison dynamique, le système de compilation/liaison laisse apparement une marque dans le binaire produit, et cette marque est testé par le chargeur au lancement de l'application.

Ainsi, j'ai compilé une application sur un système basé sur GLIBC_2_3, et je ne peux pas la faire fonctionner sur un système basé sur GLIBC_2_2 (alors que toutes les librairies sont pourtant bien présente).

J'ai envie de faire une remarque tout d'abord : on code une application en utilisant une interface (les entête), et des librairie sont cencées implémenter cette interface. Seulement ces librairie se permettent apparement d'imposer une contrainte qui n'existe pas dans l'interface (c'est un peu n'importe quoi)... soit GLIB_C_2_2 et GLIB_C_2_3 implémente une même interface, soit il ne le font pas.

Je me pose donc deux questions : GLIB_C_2_2 et GLIB_C_2_3 implémente-ils la même interface ? (normalement oui, mais le comportement qui va par la suite tendrait à montrer le contraire).

Existe-il un moyen d'imposer en compilant dans un environnement GLIB_C_2_3 que les binaires produits fonctionnent dans un environement GLIB_C_2_2 (normalement qui peu le plus peu le moins, mais vu qu'avec le C on est dans la quatrième dimmension, je n'en suit pas sure).

Quelqu'un(e) a une explication rationel à ce comportement irrationel ?




(quand sous windows je compile sur un système qui a une version corrigé de, disont, la dll-xyz, si l'interface est la même, ça fonctionne sur toute les plate forme windows pour lesquelles la dll-xyz fourni la même interface... linux n'est pas compatible avec linux ?)