2 votes

Comportement des bibliothèques partagées en 32 bits et 64 bits avec Java 1.4 et Suse 9

Tout d'abord, il se peut que cette question soit celle d'un novice pour vous tous. Mais comme on dit, si vous ne demandez pas, comment allez-vous apprendre ?

Donc, voilà le truc :

Nous avons développé ce fichier .JAR pour qu'il fonctionne sous Java 1.4 et qu'il soit installé dans SUSE 9 Enterprise Server.

Nous l'avons également testé sur différentes plateformes : - Suse 9 Enterprise Server 32 bits + JDK 1.4.2_08 + LIBSTDC++.SO.6 : Fonctionne sans problème, aucune erreur n'est retournée.

  • Serveur Red Hat 5.5 64 bits + JDK 1.4 : Fonctionne sans problème, aucune erreur n'est renvoyée.

  • Suse 9 Enterprise Server 64 bits + JDK 1.4.2_08 (32 bits) + LIBSTDC++.SO.6 : Si j'utilise le 32 des bibliothèques de bits de mon programme, il renvoie une erreur disant : "Exception in thread "main" java.lang.UnsatisfiedLinkError : /usr/lib/MySharedLibrary.so : /usr/lib/MySharedLibrary.so : undefined symbol : NFQuality"

MAIS si j'utilise le 64 des bibliothèques de bits de mon programme, il renvoie cette erreur : "Exception in thread "main" java.lang.UnsatisfiedLinkError : /usr/lib64/MySharedLibrary64.so : /usr/lib64/MySharedLibrary64.so : cannot open shared object file : No such file or directory

J'ai essayé de donner la commande java -Djava.library.path avec le chemin où se trouve MySharedLibrary, mais cela n'a pas fonctionné.

Ma question est la suivante :

POURQUOI renverrait-il une erreur dans Suse 9 64 bits, s'il a exactement la même configuration que Suse 9 32 bits ?

Je comprends qu'il y a une différence entre les architectures, d'accord. Mais ce n'est pas une question de compilation d'architecture, puisque dans RedHat 5.5 avec 64 bits, il fonctionne.

Quelqu'un peut-il me guider dans cette énigme ? Quelles sont mes solutions possibles ?

Merci à tous les gourous qui sont là.

0voto

Dev Points 5487

Vous ne pouvez pas lier des bibliothèques 64 bits à partir d'une JVM 32 bits. Si vous voulez lier des bibliothèques 64 bits, utilisez une JVM 64 bits.

Quant au symbole indéfini. Il est possible que vous ayez un lien brisé parce qu'il manque à suse une bibliothèque qui était présente sur redhat. Je ne pense pas qu'il soit possible de répondre à cette question sans en savoir plus sur les éléments suivants MySharedLibrary.so .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X