web-dev-qa-db-fra.com

mauvaise classe ELF: erreur ELFCLASS32 lors de l'utilisation de .so 32 bits sur une machine 64 bits à l'aide de dlopen

Je dois utiliser une bibliothèque partagée 32 bits créée par quelqu'un d'autre dans mon application 64 bits sous Ubuntu 14.04. Je reçois l'erreur donnée dans le titre. J'ai installé les bibliothèques lib32bz2-1.0, lib32ncurses5 et lib32z1 sans succès. Toutes les suggestions sont grandement appréciées.

3
Raj Raghuram

Vous ne pouvez pas lier un exécutable ou une bibliothèque partagée à des bibliothèques partagées compilées pour une architecture et/ou une plateforme différente. Toi non plus

  1. avoir besoin de mettre la main sur une version de la bibliothèque conçue pour la même plate-forme et la même architecture, que ce soit de la part de celui qui vous l’a fournie ou de la compiler à partir des sources, ou

  2. construisez l'objet de liaison pour la même plate-forme et la même architecture que la bibliothèque partagée en question. Il est possible d'exécuter des exécutables i386 sur des systèmes AMD64 pour que cela fonctionne.

3
David Foerster

Je suppose que vous devrez peut-être activer le support 32 bits.

Exécutez les commandes suivantes:

Sudo dpkg --add-architecture i386
Sudo apt-get update
Sudo apt-get dist-upgrade

Ensuite, essayez d'installer les bibliothèques 32 bits.

Plus d'infos

1
Nisheet