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)
Ai-je besoin root pour mettre à jour ce fichier? Je veux lier statique cette bibliothèque. –
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
Oui, la liaison statique semble avoir tout cassé = ( –