web-dev-qa-db-fra.com

Erreur de construction "Impossible de trouver -lgfortran"

J'essaie d'installer le package Lars. Ubuntu 11.04 Natty 64-bit. Du bâtiment je reçois:

* installing *source* package âlarsâ ...
** libs
gfortran   -fpic  -O3 -pipe  -g -c delcol.f -o delcol.o
gcc -shared -o lars.so delcol.o -lgfortran -lm -L/usr/lib64/R/lib -lR
/usr/bin/ld: cannot find -lgfortran
collect2: ld returned 1 exit status
make: *** [lars.so] Error 1
ERROR: compilation failed for package âlarsâ

gfortran est installé et quand je lance gfortran --version je reçois

gfortran --version GNU Fortran (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2

Sudo ldconfig -v donne l'erreur

/sbin/ldconfig.real: impossible de stat /usr/lib/libgfortran.so: aucun fichier ni répertoire

J'ai déjà supprimé et réinstallé gfortran. De quoi ai-je besoin pour résoudre ce problème?

33
Andrew Redd

Pour la famille Debian/Ubuntu, nous recommandons généralement

 $ Sudo apt-get install r-base-dev

car il tire dans tous les paquets généralement nécessaires à la compilation. Et cette approche est testée tout le temps, car les constructeurs de packages automatisés s’y fient (ainsi que de build-dépendants supplémentaires par package). Le package gfortran est également répertorié ici; peut-être avez-vous un lien rompu par rapport à une installation antérieure, je voudrais donc aussi essayer dpkg --purge gfortran; apt-get install gfortran. Cela dit, des dizaines de paquets R (et R lui-même) utilisent Fortran, il ne devrait donc pas y avoir de magie ici.

25
Dirk Eddelbuettel

J'ai eu le même problème en essayant d'installer le paquet CRAN VGAM sur Ubuntu 12.10 64bits. J'avais déjà installé r-base-dev, mais le deuxième commentaire d'Andrew Redd à Dirk Eddelbuettel a fonctionné pour moi. 

Plus précisément, j'ai eu deux erreurs:

/usr/bin/ld: cannot find -lgfortran
/usr/bin/ld: cannot find -lquadmath

Qui ont été fixés par les lignes:

Sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
Sudo ln -s /usr/lib/x86_64-linux-gnu/libquadmath.so.0 /usr/lib/libquadmath.so

Notez que seule la première ligne serait nécessaire pour traiter le problème à partir du message d'origine. La deuxième ligne fixe de mon erreur supplémentaire avec lquadmath.

56
kevin

Il semble que d’autres suggestions aient déjà réglé votre problème, mais votre question s’applique également à moi, mais la solution était différente dans mon cas. Mon problème était que mes versions de gcc et de g ++ différaient de ma version de gfortran. J'ai utilisé ce qui suit pour les changer afin qu'ils soient tous les mêmes.

  1. Vérifiez quelle version de gcc, g ++ et gfortran vous avez:

    g++ --version
    gcc --version
    gfortran --version
    
  2. Associez-les pour qu'ils soient tous identiques:

    Sudo update-alternatives --config g++
    Sudo update-alternatives --config gcc
    Sudo update-alternatives --config gfortran
    

Dans mon cas, comme je n’avais qu’une version de gfortran, j’ai simplement modifié les versions de g ++ et de gcc pour les adapter à celles de gfortran.

11
dlpolanco

Même problème lors de l’installation du paquetage R minqa sur Ubuntu 12.04, R3.1.0., Un x86 32 bits (en fait, cela faisait partie de l’installation du paquet caret).

Résolu par 

Sudo ln -s /usr/lib/i386-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so

la réinstallation de r-base-dev n'a pas fonctionné et je n'ai pas essayé de réinstaller gfortran à cause de toutes les dépendances.

En fonction du système/de la version,

ls -l /usr/lib/libgfortran.so

vérifie que le lien existe/a raison.

7
jeanM

J'utilise Centos et je ne peux pas obtenir r-base-dev. J'ai également installé gfortran et sa version correspond à celle de gcc et g ++; cela n'a toujours pas fonctionné. Cependant, j'ai résolu ce problème en créant ~/.R/Makevars, en utilisant

cd ~
mkdir .R
touch Makevars

J'ai trouvé le répertoire où j'ai installé gfortran (apparemment, le problème est que R ne le trouve pas) par 

which gfortran

Il est dit que j’ai installé gfortran dans usr/bin/gfortran. Puis j’ai ajouté des drapeaux à .R/Makevars pour indiquer à R d’utiliser:

F77 = /usr/bin/gfortran
FC = $F77
FLIBS = -L/usr/bin/gfortran

Vous pouvez éditer le fichier Makevars de cette façon:

vi .R/Makevars

Vous avez maintenant entré le programme vi qui permet de modifier des fichiers texte. Tapez i pour éditer; vous verrez INSERT au bas de la fenêtre du terminal. Ensuite, vous pouvez entrer ce que je mets ci-dessus. Pour enregistrer les modifications et quitter vi, appuyez sur la touche echap et tapez :wq.

Je ne suis pas tout à fait sûr de mettre correctement la ligne FLIBS, car elle est très différente pour MacOS. Sous MacOS, il existe un répertoire sous gfortran dans lequel les bibliothèques sont reliées, mais apparemment, gfortran n'est pas un répertoire sous Linux. Au moins, cela a fonctionné pour moi et a également résolu le problème de /usr/bin/ld: cannot find -lquadmath. J'ai donc installé les paquets R nécessitant gfortran sans problème.

1
Lambda Moses

Pour les futures âmes perdues, il est également utile de vérifier que toutes les versions du compilateur correspondent (voir https://askubuntu.com/questions/276892/cannot-find-lgfortran ). Dans mon cas, gcc et gfortran étaient tous deux de 4,8,4, mais g ++ était de 4,6. 

0
Neil

En laissant cela ici pour référence future, comme dans mon cas (Amazon Linux EC2 AMI), le problème était simplement lié à la désignation du lien symbolique et non à son emplacement.

Sudo ln -s /usr/lib64/libgfortran.so.3 /usr/lib64/libgfortran.so
Sudo ln -s /usr/lib64/libquadmath.so.0 /usr/lib64/libquadmath.so
0
João Nogueira

Si vous utilisez gcc44, vous aurez besoin de:

yum install gcc44-gfortran
0
user4020650