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?
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.
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.
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.
Vérifiez quelle version de gcc, g ++ et gfortran vous avez:
g++ --version
gcc --version
gfortran --version
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.
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.
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.
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.
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
Si vous utilisez gcc44, vous aurez besoin de:
yum install gcc44-gfortran