2010-04-28 8 views
4

J'ai essayé de résoudre ce problème pendant quelques heures maintenant. Je compile quelques fichiers c en utilisant gcc. Les fichiers nécessitent libpbc, donc j'utilise l'option -L pour pointer gcc dans le répertoire qui contient libpbc.so.1. Le code compile sans erreur encore lorsque je tente de l'exécuter je reçois le message d'erreur suivant:Obtenir une 'erreur lors du chargement des bibliothèques partagées' lors de l'utilisation de -L pour trouver spécifiquement la bibliothèque

./example.out: erreur lors du chargement des bibliothèques partagées: libpbc.so.1: ne peut pas ouvrir le fichier objet partagé: Non Ce fichier ou répertoire

En regardant des questions similaires, ce message d'erreur semble indiquer que gcc ne peut pas trouver libpbc.so.1. Je sais que gcc voit libpbc.so.1 parce que quand je renomme libpbc.so.1 en quelque chose d'autre, il ne compile pas.

J'utilise -L pour pointer vers le répertoire qui contient libpbc.so.1.

Je ne suis pas sûr des prochaines étapes que je peux suivre pour comprendre cela. Apprécierait des idées. Qu'est-ce que ce message d'erreur signifie exactement?

EDIT

en cours ldd résultats de example.out dans:

linux-gate.so.1 => (0xb7fe3000) 
libpbc.so.1 => not found 
libgmp.so.3 => /usr/lib/libgmp.so.3 (0xb7f87000) 

Répondre

6
ldd example.out 

Cela donnera beaucoup d'informations utiles sur la liaison dynamique. Plus précisément cependant, votre problème le plus est probablement avec le chemin de la bibliothèque ne pas être dans.

/etc/ld.so.conf 

Notez que si vous mettez à jour ce fichier, vous devez ensuite exécuter

ldconfig -v 
+0

Ai-je besoin root pour mettre à jour ce fichier? Je veux lier statique cette bibliothèque. –

+0

ls -l /etc/ld.so.conf pour voir sa permission. Il est généralement uniquement accessible par root. Si vous voulez lier statiquement la bibliothèque, c'est un sujet complètement différent. Tout dans mon message était sur la liaison dynamique. Si vous voulez devenir statique, utilisez l'argument -static pour gcc. Il y a de nombreux pièges qui accompagnent les liens statiques, car ils ne font pas toujours ce que vous pensez faire. :) – Bob

+0

Oui, la liaison statique semble avoir tout cassé = ( –