2011-06-10 16 views
29

Estoy tratando de instalar el paquete lars. Ubuntu 11.04 Natty de 64 bits. Desde la construcción de recibo: se instalaPaquete Edificio R obteniendo el error "ld: no se puede encontrar -lgfortran"

* 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 y cuando corro gfortran --version consigo

gfortran --version GNU Fortran (Ubuntu/Linaro 4.5.2-8ubuntu4) 4,5 .2

sudo ldconfig -v da el error

/sbin/ldconfig.real: Imposible identificar /usr/lib/libgfortran.so: No existe el fichero o directorio

ya he retirado y reinstalado gfortran. ¿Qué necesito para arreglar esto?

+0

Un par de preguntas: 1) ¿Existe realmente un archivo /usr/lib/libgfortran.so? (y si se trata de un enlace simbólico, ¿el archivo al que apunta realmente está allí?) 2) ¿Está la ubicación de libgfortran.so en su LD_LIBRARY_PATH? – geoffjentry

+0

Revisé las fuentes. Esta es una construcción R estándar, nada especial, extraño. Solo archivo fortran así que supongo que es la versión R estándar que intenta enlazar con libgfortran.so –

Respuesta

23

Para la familia Debian/Ubuntu, por lo general recomendamos

$ sudo apt-get install r-base-dev 

ya que tira en todos los paquetes comúnmente necesarios para la compilación. Y este enfoque se pone a prueba todo el tiempo, ya que los creadores de paquetes automatizados se basan en esto (así como en Build-Depends adicionales por paquete). El paquete gfortran está listado aquí también; tal vez tengas un enlace roto de una instalación anterior, así que también probaría dpkg --purge gfortran; apt-get install gfortran. Dicho esto, docenas de paquetes R (y R en sí) usan Fortran por lo que no debería haber ninguna magia aquí.

+1

Dirk, por lo general, su consejo es acertado, pero algo gracioso está sucediendo con la configuración aquí. En la pregunta, muestro los mensajes de compilación. gfortran se encuentra y se utiliza para compilar delcol.f con éxito, pero luego vincula nuevamente a gfortran, que no puede encontrar. –

+1

¿Te equivocaste por casualidad con los enlaces simbólicos entre las diferentes versiones 'gcc- *', 'g ++ - *' y 'gfortran- *' y/o sus equivalentes de biblioteca? El 'algo gracioso' es a veces un simple error del operador. En mi caja, 'libgfortran.so.3' vive en'/usr/lib/x86_64-linux-gnu/'y viene del paquete' libgfortran3'. –

+6

Sí, eso es lo mismo para el mío. Hubo un problema con el enlace /usr/lib/libgfortran.so una vez que era correcto apuntar a /usr/lib/x86_64-linux-gnu/libfortran.so.3.0.0 cosas funcionan de nuevo. –

45

Tuve el mismo problema al intentar instalar el paquete CRAN VGAM en Ubuntu 12.10 64 bits. Ya tenía instalado r-base-dev, pero el segundo comentario de Andrew Redd a la respuesta de Dirk Eddelbuettel funcionó para mí.

Específicamente, conseguía dos errores:

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

que se hayan fijado por las líneas:

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 

en cuenta que sólo la primera línea sería necesario para cuidar del problema de la publicación original. La segunda línea solucionó mi error adicional con lquadmath.

+2

funcionó para mí. Gracias. –

+0

Me parece que falta libgfortran3-dev en Ubuntu 13.10; existen tales paquetes para versiones más nuevas, pero para R (de los paquetes oficiales de Ubuntu), uno parece necesitar un enlace contra libgfortran.so.3. En otras palabras, solo conseguí que funcionara con esta solución de enlace simbólico manual, porque instalar r-base-dev (y, por lo tanto, los paquetes de gfortran) no era suficiente. –

+0

funcionó para mí también, gracias! – fabians

6

El mismo problema al instalar el paquete R minqa en ubuntu 12.04, R3.1.0., X86 32bits (en realidad era parte de la instalación del paquete caret).

que resuelve

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

reinstalación r-base-dev no funcionaba y que no lo intenté reinstalar gfortran porque todas las dependencias.

Dependiendo del sistema/versión,

ls -l /usr/lib/libgfortran.so 

comprueba que existe el enlace/es correcto.

+0

misma historia para mí en Debian con el paquete igraph. – fabians

0

Si está utilizando gcc44, que necesitará:

yum install gcc44-gfortran 
9

Parece que otras sugerencias ya solucionado su problema, pero su pregunta también aplican para mí, pero la solución era diferente en mi caso. Mi problema era que mis versiones de gcc y g ++ diferían de mi versión de gfortran. Usé lo siguiente para cambiarlos de modo que fueran todos iguales.

  1. comprobar qué versión de gcc, g ++, y gfortran tiene:

    g++ --version 
    gcc --version 
    gfortran --version 
    
  2. de ajuste de modo que todos ellos son los mismos:

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

En mi caso, solo tenía una versión de gfortran, así que simplemente cambié las versiones de g ++ y gcc para que coincidieran con las de gfortran.

+0

Tenga en cuenta que * exact * matching puede no ser necesario: al establecer 'gcc' en 5.4.1 lo hizo funcionar para' gfortran' 6.2.0. – Evpok

Cuestiones relacionadas