Error while loading shared libraries: libpapi.so.5.4.3.0

Résolu/Fermé
hymenoptera Messages postés 36 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 18 décembre 2018 - Modifié le 24 oct. 2017 à 20:52
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 20 nov. 2017 à 10:16
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.

"./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

4 réponses

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
Modifié le 24 oct. 2017 à 20:54
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
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 update
et
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é
ldconfig
après l'avoir installé.

Bonne chance
1