Creazione del pacchetto R con l’errore “ld: imansible trovare -lgfortran”

Sto cercando di installare il pacchetto Lars. Ubuntu 11.04 Natty 64-bit. Dall’edificio ricevo:

* 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 è installato e quando gfortran --version ottengo

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

sudo ldconfig -v dà l’errore

/sbin/ldconfig.real: Can not stat /usr/lib/libgfortran.so: nessun file o directory

Ho già rimosso e reinstallato gfortran. Di cosa ho bisogno per risolvere questo problema?

Per la famiglia Debian / Ubuntu, di solito raccomandiamo

  $ sudo apt-get install r-base-dev 

come si tira in tutti i pacchetti comunemente necessari per la compilazione. E questo approccio viene continuamente testato mentre i costruttori di pacchetti automatici si affidano a questo (oltre a pacchetti aggiuntivi di build-depend). Anche il pacchetto gfortran è elencato qui; forse hai un link non funzionante da un’installazione precedente quindi proverei anche dpkg --purge gfortran; apt-get install gfortran dpkg --purge gfortran; apt-get install gfortran . Detto questo, dozzine di pacchetti R (e R stesso) usano Fortran quindi non dovrebbe esserci magia qui.

Ho avuto lo stesso problema quando ho provato ad installare il pacchetto CRAN VGAM su Ubuntu 12.10 a 64 bit. Avevo già installato r-base-dev, ma il secondo commento di Andrew Redd alla risposta di Dirk Eddelbuettel ha funzionato per me.

Nello specifico, ho ricevuto due errori:

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

Quali sono stati fissati dalle linee:

 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 

Si noti che solo la prima riga sarebbe necessaria per occuparsi del problema dal post originale. La seconda riga corretta del mio errore aggiuntivo con lquadmath.

Sembra che altri suggerimenti abbiano già risolto il problema, ma la tua domanda mi è stata applicata, ma nel mio caso la soluzione era diversa. Il mio problema era che le mie versioni di gcc e g ++ differivano dalla mia versione di gfortran. Ho usato quanto segue per cambiarli in modo che fossero tutti uguali.

  1. Controlla quale versione di gcc, g ++ e gfortran hai:

     g++ --version gcc --version gfortran --version 
  2. Abbinalo in modo che siano tutti uguali:

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

Nel mio caso, avevo solo una versione di gfortran, quindi ho semplicemente cambiato le versioni g ++ e gcc in modo che corrispondessero a gfortran.

Stesso problema nell’installazione del pacchetto R minqa su ubuntu 12.04, R3.1.0., Un x86 x86 (in realtà faceva parte dell’installazione del pacchetto caret).

Risolto da

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

la reinstallazione di r-base-dev non ha funzionato e non ho provato a reinstallare gfortran a causa di tutte le dipendenze.

A seconda del sistema / versione,

ls -l /usr/lib/libgfortran.so

controlla che il link esista / sia corretto.

Uso Centos e non riesco a ottenere r-base-dev. Ho anche installato gfortran e la sua versione corrisponde a quella di gcc e g ++; ancora non ha funzionato. Tuttavia, ho risolto questo problema creando ~/.R/Makevars , usando

 cd ~ mkdir .R touch Makevars 

Ho trovato la directory in cui ho installato gfortran (apparentemente il problema è che R non riesce a trovarlo)

 which gfortran 

Ha detto che ho installato gfortran in usr/bin/gfortran . Poi ho aggiunto i flag a .R/Makevars per dire a R di usare:

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

Puoi modificare il file Makevars in questo modo:

 vi .R/Makevars 

Ora hai inserito il programma vi che può modificare i file di testo. Digita i per modificare; vedrai INSERT nella parte inferiore della finestra del terminale. Quindi puoi inserire quello che ho messo sopra. Per salvare le modifiche e uscire da vi , premere il tasto esc e digitare :wq .

Non sono del tutto sicuro se inserisco correttamente la linea FLIBS, poiché è molto diversa per MacOS. In MacOS, c’è una directory sotto gfortran con le librerie a cui collegarsi, ma apparentemente gfortran non è una directory in linux. Almeno questo ha funzionato per me, e ha anche risolto il problema di /usr/bin/ld: cannot find -lquadmath , così ho installato pacchetti R che richiedono gfortran senza problemi.

Se si utilizza gcc44, è necessario:

 yum install gcc44-gfortran 

Per le future anime perse, aiuta anche a verificare che tutte le versioni del compilatore corrispondano (per https://askubuntu.com/questions/276892/cannot-find-lgfortran ). Nel mio caso gcc e gfortran erano entrambi 4.8.4, ma g ++ era 4.6.