2013-05-23 3 views
0

J'ai un paquet C++ que je lance sur ma machine (type Ubuntu 11.10 OS: 32 bits) et tout est parfait. Lorsque je tente de l'exécuter sur un serveur Linux (Ubuntu 12.04.2 LTS (GNU/Linux x86_64 3.2.0-39-générique)), je vais obtenir cette erreur:ne peut pas ouvrir le fichier objet partagé libstdC++. So.6

error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory 

Je ne sais pas où est le problème. J'espère que vous pouvez m'aider.

+0

recompiler sur le serveur. –

+1

Vous essayez donc d'exécuter un binaire 32 bits dans un environnement 64 bits? <= Indice, indice. – syam

Répondre

1

Les différentes machines ont différentes versions de la bibliothèque standard installée. Étant donné que la version de la bibliothèque dynamique requise est codée en dur dans le fichier binaire, vous pouvez soit recompiler votre programme sur la machine cible, soit lier de manière statique la bibliothèque standard avec -static-libstdc++.

(Ceci est sans tenir compte des 32 bits vs problèmes 64 bits, sans doute, vous aurez besoin des bibliothèques 32 bits sur votre machine 64 bits si vous souhaitez utiliser les binaires 32 bits).

+0

Pour être honnête, je ne me rappelle pas vraiment quand libstdC++. So.5 a été utilisé pour la dernière fois mais je crois que c'était autour de GCC 3 ... Il y a assez longtemps! Donc je doute que de simples versions soient le problème. Je mets mon argent sur la différence 32/64 bits. – syam

+0

Merci pour votre aide. J'ai essayé de le recompiler sur le serveur et j'ai obtenu les résultats correctement. – MTT

Questions connexes