docteurbunny
Nous avons récemment migré notre serveur de développement Fedora5 vers Fedora9. Les exécutables compilés ( avec gcc ) fonctionnent sur Fedora9 et d'autres distributions (Ubuntu par exemple) mais ne fonctionnent pas sur Fedora5. Lorsque nous exécutons un exécutables compilés sur Fedora9, sur Fedora5, nous avons l'erreur suivante : Exception en point flottant.
Les distributions Fedora5 et Fedora9 sont installées sur des machines ayant la même architecture processeur.
Avez vous une solution pour générer sur Fedora9, des exécutables compatible Fedora5?
kwizart
La compatiblité binaire est relativement différente sur windows que sur unix.
Dans la mesure ou le SOVERSION des bilbiothèques partagée est la même, il devrait être effectiement possible (mais pas assuré) de compiler des programmes sur Fedora 5 et de les faire fonctionner sous Fedora 9.
L'inverse est plus délicat, Fedora 9 utilisant en particulier une version de glibc plus récente, il est possible que l'appel à certaines fonctions utilise des symbol qui ne sont présent que dans une version plus récente de glibc.
En général rpm permet de répertorier tout ces types de dépendances en faisant rpm -qR le_programme_rpm_installé
Le plus simple c'est d'éviter la quette illusoire d'avoir une compilation pour toute les distributions.
Ou alors, compiler sur une version plus ancienne. Et compiler en interne (statique) les bibliothèque partagée ayant un SOVERSION différent d'une distribution à l'autre. (ou alors en utilisant un SONAME différent)
Au sein du fedoraprojet, les paquet sont recompilée à chaque nouvelle version de la distribution. Le programme mock est utilisé pour cross-compiler un paquet en ciblant n'importe quelle distribution (les fichiers de configuration fonctionnent pour Fedora et CentOS mais pourraient aussi fonctionner pour OpenSUSE, mandriva, etc).
ps: message en doublon supprimé.
remi
La compilation de paquet fonctionnant sur plusieurs versions n'est pas simple
pistes :
- utiliser des bibliothèques statiques
- utiliser des bibliothèques de compatibilité (en particulier pour glibc et stdc++)
- compiler sous FC5
++
P.S. enfin le plus propre c'est quand même de compiler uniquement POUR une version
docteurbunny
En effet les exécutables compilés sous fedora5 fonctionnent sous Fedora9. Lorsque je compile avec des bibliothèques statiques, cela fonction mais ce n'est pas applicable dans mon cas car cela alourdit trop mes exécutables (leur taille est multipliée par 100).
Comment puis-je utiliser des bibliothèques de compatibilité ou mock?
docteurbunny
Personne n'a de solution?
remi
En fait la plupart des bibliothèques de compatibilité n'ont pas de -devel associé. Donc impossible de bosser avec.
Pour moi, la meilleut solution c'est
- créer un RPM
- construire le RPM pour chaque version dans mock
++