web-dev-qa-db-fra.com

dyld: bibliothèque non chargée: /usr/local/lib/libmpfr.4.dylib

Lorsque j'exécute "make" sur un projet, j'obtiens cette erreur:

dyld: Library not loaded: /usr/local/lib/libmpfr.4.dylib 
Referenced from: /Users/Petrov/Downloads/mips/bin/../libexec/gcc/mipsel-elf/4.8.1/cc1
  Reason: image not found

Il n'y a pas libmpfr.4.dylib fichier dans /usr/local/lib, mais il y a libmpfr.6.dylib. J'ai installé mpfr 4.0.1. J'ai déjà essayé de réinstaller Xcode et mpfr.

18
Elizabeth Haker

J'ai eu un problème similaire sur Mac. Je l'ai corrigé en améliorant le "gawk" en utilisant brew

brew upgrade gawk
46
Utpal Kumar

Je l'ai résolu comme ça.

ln -s /usr/local/opt/mpfr/lib/libmpfr.6.dylib /usr/local/opt/mpfr/lib/libmpfr.4.dylib
5
neosarchizo

La cause de l'erreur est que vous avez effectué une mise à niveau de MPFR 3.1.x vers MPFR 4.0.x, qui est incompatible avec ABI avec MPFR 3.1.x (une bibliothèque MPFR 4.0.x ne peut pas être utilisée avec un programme compilé avec MPFR 3.1.x ). D'où le passage de libmpfr.4.dylib (utilisé pour MPFR 3.0.x et MPFR 3.1.x) à libmpfr.6.dylib (utilisé pour MPFR 4.0.x au moins).

Ce que vous auriez dû faire à la place, afin d'éviter l'erreur, est d'installer MPFR 4.0.x sans désinstaller libmpfr.4.dylib de MPFR 3.1.x: tous les nouveaux logiciels compilés utiliseraient MPFR 4.0.x et libmpfr.6.dylib , mais des binaires plus anciens dépendant de MPFR auraient toujours pu s'exécuter en utilisant libmpfr.4.dylib (une exception possible est lorsqu'il y a deux dépendances différentes sur MPFR, via des bibliothèques, où libmpfr.4.dylib et libmpfr.6. dylib pourrait être nécessaire, auquel cas cela pourrait ne pas fonctionner).

Maintenant, vous devez recompiler Xcode. Si vous obtenez déjà Xcode compilé (à partir d'un package binaire), assurez-vous d'en obtenir un compilé avec MPFR 4.0.x ou un fichier qui inclut le fichier libmpfr.4.dylib. Si cela n'est pas possible, vous devez réinstaller MPFR 3.1.x. Ensuite, vous devriez pouvoir installer MPFR 4.0.x sans supprimer libmpfr.4.dylib, comme indiqué ci-dessus.

2
vinc17

@ Vinc17 a raison dans son commentaire sur la solution proposée par @ neosarchizo, les liens symboliques peuvent être problématiques si vous faites référence à une version différente, CEPENDANT , dans mon cas, exécutez la commande suivante :

locate libmpfr.4.dylib

A montré que j'avais la bonne bibliothèque dans un répertoire différent:

/opt/local/lib/libmpfr.4.dylib

Donc pour moi, je pensais qu'il était parfaitement sûr d'utiliser l'approche symlink, c'est-à-dire:

Sudo ln -s /opt/local/lib/libmpfr.4.dylib /usr/local/lib/libmpfr.4.dylib

Probablement un hack, mais problème résolu.

2
Nicholas Hamilton

Utilisez les chaînes d'outils système pour compiler:

export PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH.
0
roidinev