2014-06-08 4 views
0

J'ai créé une application C++ simple en utilisant Netbeans sur ubuntu. dans l'application j'utilise mysql_connection et curl. l'application fonctionne très bien sur mon système local (Ubuntu)libmysqlcppconn.so.5: impossible d'ouvrir le fichier objet partagé: aucun fichier ou répertoire de ce type

quand j'ai essayé d'exécuter l'application sur mon serveur Centos je reçois ce message:

error while loading shared libraries: libmysqlcppconn.so.5: cannot open shared object file: No such file or directory. 

a essayé de vérifier si le libmysqlcppconn.so.5 bibliothèque existe sur le serveur ou non j'ai trouvé qu'il y a ce qui suit:

REMOTE (Centos) 
**in [/usr/local/lib]** 

libmysqlcppconn-static.a 
[email protected] 
[email protected] 
libmysqlcppconn.so.7.1.1.3* 


LOCAL (Ubuntu) 
**in [/usr/lib]** 

libmysqlcppconn-static.a 
[email protected] 
[email protected] 
libmysqlcppconn.so.5.1.1.0* 

pourquoi l'application ne peut pas courir? Comment puis-je le réparer?

Répondre

2

Vous devez le créer et l'empaqueter pour votre serveur.

Votre application a été liée à une version différente (incompatible) de l'une des bibliothèques qu'elle utilise. À mon humble avis le plus simple est souvent de le construire sur la boîte sur laquelle il va fonctionner.

+1

J'aime cette réponse et je la déteste. C'est juste que j'utilise Netbeans sur Ubuntu et ça fait vraiment tout pour moi dans la construction du projet. mais le faire sur centos via le terminal !! J'ai juste essayé et j'ai eu beaucoup d'erreurs commençant par "/usr/local/include/cppconn/connection.h:31:29: erreur: boost/variant.hpp: Aucun tel dossier ou répertoire" –

+0

Il semble que vous ayez besoin pour installer les dépendances sur votre serveur. Personnellement, j'aime CMake et il semble que vous puissiez le rendre agréable avec Netbeans. Peut-être que vous devriez envisager de l'utiliser pour que vous puissiez avoir un projet qui fonctionne à la fois pour votre serveur (à partir de la ligne de commande) et de votre belle interface utilisateur. :) – wojciii

+0

lorsque j'ai installé le connecteur cpp j'ai utilisé "cmake.-DBOOST_ROOT: STRING =/boost_1_55_0" pour que l'installation reconnaisse le répertoire boost. Que devrais-je faire d'autre? ou devrais-je commencer une autre question :) –

1

En général, il n'y a aucune garantie qu'un binaire construit sur un système Linux fonctionnera sur un système Linux différent (soit une distribution différente, soit une version différente de la même distribution). Pour certaines applications, il suffit de copier les fichiers de la bibliothèque (lib*.so*) ou de les lier statiquement (gcc -static), mais en général, la distribution de programmes pour plusieurs systèmes Linux est plus compliquée sans une solution facile.

Une solution consiste à recompiler votre programme pour chaque système sur lequel vous voulez l'exécuter. Pour cela, vous devez d'abord installer le compilateur et les dépendances de la bibliothèque (y compris les packages *-devel) sur ces systèmes.

Questions connexes