Désolé si cela est une question évidente, mais je l'ai trouvé étonnamment peu de références sur le web ...La compatibilité binaire entre les distributions Linux
Je travaille avec une API écrite en C par l'un de nos partenaires commerciaux et nous a été fourni sous forme de fichier .so binaire, basé sur Fedora 11. Nous avons testé l'API sur une machine de développement Fedora 11 sans problèmes. Cependant, lorsque j'essaie de créer un lien avec l'API sur la plate-forme cible de notre client, qui se trouve être SuSE Enterprise 10.2, j'obtiens une erreur «Format de fichier non reconnu».
Les commandes qui font également partie du package binutils, telles que objdump ou nm, me donnent la même erreur de format de fichier. La commande « file » me montre:
ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped
et la commande « ldd » montre:
ldd: warning: you do not have execution permission for `./libuscuavactivity.so.1.1'
./libuscuavactivity.so.1.1: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./libuscuavactivity.so.1.1)
[dependent library list]
Je devine que cela est dû à une incompatibilité entre les bibliothèques C sur les deux plates-formes, avec le Le problème étant que le code a été compilé avec une nouvelle version de glibc, etc., par rapport à celle disponible sur SuSE 10.2. Je publie cette question au cas où il y aurait un moyen de compiler le code sur la plate-forme Fedora 11 de notre partenaire de manière à ce qu'il fonctionne également avec SuSE 10.2.
sur la même architecture? (i386! = amd64) – elmarco
J'aurais dû mentionner que la plate-forme de construction et la plate-forme SuSE 10.2 cible sont toutes deux x86_64. –
Vous inspectez le format de fichier avec objdump ou simplement en exécutant le fichier .so (oui, cela est possible). Ce sera ELF, car il est utilisé depuis l'âge de pierre. Si vous avez une version de libc incompatible, vous obtiendrez un message d'erreur qui dit exactement cela - donc votre estimation est probablement fausse et le problème est probablement quelque chose de différent. – hirschhornsalz