Error while loading shared libraries: libpapi.so.5.4.3.0
Résolu
Bonjour,
Je viens ici car vraiment cette erreur me rend complètement dingue.
je compile un programme avec scalasca, et à l'analyse de l’exécutable il me dit qu'il ne trouve pas cette foutue libpapi.
bien surs elle est bien installée sur ma machine, et se trouve bien dans mon $LD_LIBRARY_PATH
quand je fais un ldd sur mon exécutable, je confirme qu'il ne trouve pas :
je ne sais pas quoi faire d'autre à part exploser mon ordinateur ou changer de métier (que la paix et l'amour soient avec moi)
Merci à toute personne qui peut me venir en aide !
bonne journée
Je viens ici car vraiment cette erreur me rend complètement dingue.
je compile un programme avec scalasca, et à l'analyse de l’exécutable il me dit qu'il ne trouve pas cette foutue libpapi.
"./a.out: error while loading shared libraries: libpapi.so.5.4.3.0: cannot open shared object file: No such file or directory"
bien surs elle est bien installée sur ma machine, et se trouve bien dans mon $LD_LIBRARY_PATH
quand je fais un ldd sur mon exécutable, je confirme qu'il ne trouve pas :
$ ldd a.out
linux-vdso.so.1 (0x00007ffc91181000)
libcube4w.so.7 => /opt/scorep/lib/libcube4w.so.7 (0x00007fc423885000)
libcubewriter4.so.7 => /opt/scorep/lib/libcubewriter4.so.7 (0x00007fc423681000)
libz.so.1 => /lib64/libz.so.1 (0x00007fc423423000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc42321f000)
libpapi.so.5.4.3.0 => not found
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fc422e9c000)
libm.so.6 => /lib64/libm.so.6 (0x00007fc422b9a000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc422982000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc4225c1000)
/lib64/ld-linux-x86-64.so.2 (0x000055918a7cc000)
$ locate libpapi.so.5.4.3.0
/usr/local/lib/libpapi.so.5.4.3.0
$ echo $LD_LIBRARY_PATH
/usr/local/lib64/:/usr/lib:/usr/local/lib/:/home/ilasri/soft/cube/cube-4.3.3/lib:/home/ilasri/soft/scalasca/scalasca-2.2.2/lib:/home/ilasri/soft/scorep/scorep-1.4.2/lib:/home/ilasri/soft/uuid/lib:/home/ilasri/soft/openmpi/openmpi-2.0.2/lib
$ file /usr/local/lib/libpapi.so.5.4.3.0
/usr/local/lib/libpapi.so.5.4.3.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=1519b2cccf28ca21b690d129c5f33987c8db3c7a, not stripped
je ne sais pas quoi faire d'autre à part exploser mon ordinateur ou changer de métier (que la paix et l'amour soient avec moi)
Merci à toute personne qui peut me venir en aide !
bonne journée
A voir également:
- Error when loading shared libraries
- Fan error lenovo - Forum Refroidissement
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Playback error reconnect in 3s (1/5) francais - Forum Box et Streaming vidéo
- Application error: a client-side exception has occurred while loading www.leboncoin.fr (see the browser console for more information). - Forum Réseaux sociaux
- Error 1962 ✓ - Forum PC fixe
4 réponses
Bonjour,
Ma réponse sera en deux temps (comment on procède pour faire les choses proprement, et ensuite, comment rattraper ton installation). À toi de voir si tu essayes de réparer ou de repartir sur une installation propre.
A) La manière propre
La manière propre de résoudre un problème de librairie non trouvée sous linux consiste à
1) ... vérifier s'il existe un paquet qui fournit la librairie manquante.
- Pour les distributions basées sur apt (debian, ubuntu, ...), cela se fait avec
- Apparemment pour les distributions basées sur rpm (fedora, redhat...), cela se fait avec
Exemple : (sous debian, car je n'ai pas de distribution basée sur rpm sous la main) :
Ici on voit que le paquet s'appelle
Note : je suppose que dans ton cas ce serait
2) ... installer le paquet s'il existe
Si un tel paquet existe, l'installer suffira à résoudre le problème. Pour une distribution basée sur apt, ce serait typiquement la commande apt-get. Sous fedora, j'imagine que c'est yum ou dnf qui sera utilisé.
Exemple : (sous debian, car je n'ai pas de distribution basée sur rpm sous la main) : en root :
Note : dans ton cas j'imagine que ce serait quelque chose du genre
3) ... et sinon installer la librairie autrement
Il faut chercher le site officiel du projet qui fournit soit des sources à compiler et à installer (i.e. un dépôt git), soit des archives prêtes à l'emploi.
Il semble que dans le cas présent, les sources soient disponibles sur git. Même si installer ainsi ta librairie est faisable, l'installation est plus fastidieuse et moins propre, donc je t'invite à privilégier l'installation par paquet (i.e. via
B) Dans ton cas
Tu as choisi l'option (3) apparemment. Mais la librairie n'est pas trouvée, probablement parce que tu n'as pas lancé
Bonne chance
Ma réponse sera en deux temps (comment on procède pour faire les choses proprement, et ensuite, comment rattraper ton installation). À toi de voir si tu essayes de réparer ou de repartir sur une installation propre.
A) La manière propre
La manière propre de résoudre un problème de librairie non trouvée sous linux consiste à
1) ... vérifier s'il existe un paquet qui fournit la librairie manquante.
- Pour les distributions basées sur apt (debian, ubuntu, ...), cela se fait avec
apt-file.
- Apparemment pour les distributions basées sur rpm (fedora, redhat...), cela se fait avec
rpm -qa(voir ce site)
Exemple : (sous debian, car je n'ai pas de distribution basée sur rpm sous la main) :
(mando@aldur) (~) $ apt-file search libpapi.so
libpapi-dev: /usr/lib/x86_64-linux-gnu/libpapi.so
libpapi5: /usr/lib/x86_64-linux-gnu/libpapi.so.5
libpapi5: /usr/lib/x86_64-linux-gnu/libpapi.so.5.5.1.0
Ici on voit que le paquet s'appelle
libpapi5.
Note : je suppose que dans ton cas ce serait
rpm -qa | grep libpapi
2) ... installer le paquet s'il existe
Si un tel paquet existe, l'installer suffira à résoudre le problème. Pour une distribution basée sur apt, ce serait typiquement la commande apt-get. Sous fedora, j'imagine que c'est yum ou dnf qui sera utilisé.
Exemple : (sous debian, car je n'ai pas de distribution basée sur rpm sous la main) : en root :
apt-get update
apt-get install libpapi5
Note : dans ton cas j'imagine que ce serait quelque chose du genre
yum updateet
yum install libpapi5.
3) ... et sinon installer la librairie autrement
Il faut chercher le site officiel du projet qui fournit soit des sources à compiler et à installer (i.e. un dépôt git), soit des archives prêtes à l'emploi.
Il semble que dans le cas présent, les sources soient disponibles sur git. Même si installer ainsi ta librairie est faisable, l'installation est plus fastidieuse et moins propre, donc je t'invite à privilégier l'installation par paquet (i.e. via
yum).
B) Dans ton cas
Tu as choisi l'option (3) apparemment. Mais la librairie n'est pas trouvée, probablement parce que tu n'as pas lancé
ldconfigaprès l'avoir installé.
Bonne chance
Merci pour ta réponse,
justement comme tu l'as bien dit, j'ai installé papi en compilant le code source.
mais bon... j'ai suivi quand même ce que tu as dit avec rpm :
je relance mon excécutable :
O_O AAAAHHHHHHHHHHH :'( :'(
justement comme tu l'as bien dit, j'ai installé papi en compilant le code source.
mais bon... j'ai suivi quand même ce que tu as dit avec rpm :
$ rpm -qa | grep papi
papi-libs-5.4.1-3.fc23.x86_64
papi-5.4.1-3.fc23.x86_64
$sudo dnf install papi-libs-5.4.1-3.fc23.x86_64
Vérification de l'expiration des métadonnées effectuée il y a 1:58:38 sur Thu Oct 26 11:47:46 2017.
Le paquet papi-libs-5.4.1-3.fc23.x86_64 est déjà installé, ignorer
Dépendances résolues.
Rien à faire.
Terminé !
$ sudo dnf install papi-5.4.1-3.fc23.x86_64
Vérification de l'expiration des métadonnées effectuée il y a 1:58:46 sur Thu Oct 26 11:47:46 2017.
Le paquet papi-5.4.1-3.fc23.x86_64 est déjà installé, ignorer
Dépendances résolues.
Rien à faire.
Terminé !
je relance mon excécutable :
./a.out: error while loading shared libraries: libpapi.so.5.4.3.0: cannot open shared object file: No such file or directory
O_O AAAAHHHHHHHHHHH :'( :'(
hello
comme suggéré précedemment, essayer
comme suggéré précedemment, essayer
sudo ldconfig -v
Quand j'utilise libpapi ailleurs ça trouve bien, mais avec ce code précis ça ne trouve pas, je ne saurai dire pourquoi.
à savoir que je fait une instrumentation avec scalasca, j'utilise exactement les même flag pour deux codes différents. Un ça trouve, l'autre ne trouve pas... comment ne pas casser son ordi avec ça?
Y a pas moyen de dire à l'exécutable que ta libraire se trouve ICI ?
à savoir que je fait une instrumentation avec scalasca, j'utilise exactement les même flag pour deux codes différents. Un ça trouve, l'autre ne trouve pas... comment ne pas casser son ordi avec ça?
Y a pas moyen de dire à l'exécutable que ta libraire se trouve ICI ?
Quelle librairie n'est pas trouvée (peux-tu reporter le message d'erreur correspondant) ?
As-tu regardé si la librairie (fichier
Pour répondre à ta dernière question, tu peux au moment de compiler passer des options de compilation pour compléter la liste de répertoires où chercher des librairies.
https://forums.commentcamarche.net/forum/affich-27031310-compiler-avec-une-librairie-partagee#3
Bonne chance
As-tu regardé si la librairie (fichier
.so) qui n'est pas trouvée était dans un répertoire standard (e.g.
/usr/local/lib) ? Si ce n'est pas le cas, tu as peut être juste oublié de faire
sudo make install?
Pour répondre à ta dernière question, tu peux au moment de compiler passer des options de compilation pour compléter la liste de répertoires où chercher des librairies.
https://forums.commentcamarche.net/forum/affich-27031310-compiler-avec-une-librairie-partagee#3
Bonne chance