Kann -lgfortran nicht finden


12

Ich versuche ein Paket in R zu installieren (Paket "ks"). Es schlägt mit der Fehlermeldung fehl:

/usr/bin/ld: cannot find -lgfortran

Ich habe bereits das Ubuntu-Paket Build-Essential installiert:

sudo apt-get install build-essential

Ich habe auch versucht, symbolische Links hinzuzufügen:

sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
sudo ln -s /usr/lib/libgfortran.so.3.0.0 /usr/lib/libgfortran.so
sudo ldconfig

Ich benutze gcc und g ++ regelmäßig, hatte aber noch keinen Grund, gfortran zu verwenden.

Ich habe andere mit diesem Problem auf gcc-4.7 ( http://ubuntuforums.org/showthread.php?t=2123821 ) gesehen, daher frage ich mich, ob dies auf die manuelle Installation von gcc-4.7 zurückzuführen ist. Ich habe das Rezept aus der akzeptierten Antwort hier und hier hier befolgt .

Laufender lsb_release -aDruck

Ubuntu 12.04.2 LTS

und laufende uname -rDrucke

3.2.0-39-generic-pae

Kann jemand Ratschläge geben, warum ldes nicht funktioniert?


1
Sie haben versucht, symbolische Links für Laufzeitbibliotheken zu erstellen, nicht für diejenigen, die der Linker möchte (* .a dev libs). Sieht aus wie das Pfadproblem.
Andrejs Cainikovs

Antworten:


5

Sie müssen gfortran installieren. Der Fehler weist darauf hin, dass in der statischen Bibliothek für die Verknüpfung zur Erstellungszeit nicht die dynamischen Bibliotheken fehlen, die Sie anpassen wollten.


Wenn ich es versuche sudo apt-get install gfortran, bekomme ich 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.... irgendwelche Gedanken?
Benutzer

Nun, auf meinem System bekomme ich dpkg -S /usr/lib/gcc/x86)64-linux-gnu/4.6/libgfortran.adie Antwort, dass dies aus dem gfortran-4.6Paket stammt. Gcc sucht nach der .a-Datei. Wenn Sie eine andere gcc-Version installiert haben, sucht der Linker in einem Verzeichnis mit ähnlichem Namen nach libgfortran.a.
Rfindeis

Sieht nach einer gültigen Antwort aus.
Andrejs Cainikovs

Das symbolische Verknüpfen der 4.6-Bibliothek für den 4.7-Compiler könnte funktionieren. Auch den richtigen Weg mit übergeben -L(was weitgehend gleich ist). Wenn dies fehlschlägt, müssen Sie die 4.7-Version von gfortran von dem ppa installieren, den Sie für gcc 4.7 verwendet haben. Welche Gfortran-Version hast du jetzt?
Rfindeis

Ich musste den gleichen Trick wie bei der Installation von gcc-4.7 anwenden, um gfortran-4.7 zu installieren.
Benutzer

9

Noch eine Erklärung zu Cloud Olivers Antwort.

Finden Sie mit diesem Befehl die derzeit verwendete gcc-Version heraus.

$sudo update-alternatives --config gcc

* 2            /usr/bin/gcc-4.7   60        manual mode

Der Eintrag mit gibt an *, welche Version von GCC verwendet wird. Drücken Sie einfach die Eingabetaste, um die aktuellen Einstellungen beizubehalten.

Wenn "keine Alternativen für gcc" ausgegeben wird, müssen Sie möglicherweise diesen Befehl verwenden, um die Version herauszufinden:

apt-cache policy gcc
  1. cd in das rechte gcc-Verzeichnis (ersetzen Sie die Versionsnummer durch Ihre):

    cd /usr/lib/gcc/x86_64-linux-gnu/4.7/
    
  2. Sie können libgfortran.amit dem folgenden Befehl suchen (optional). In meinem Fall war es im /usr/lib/gcc/x86_64-linux-gnu/4.8/Verzeichnis vorhanden.

    find /usr/lib/gcc/x86_64-linux-gnu/ -name libgfortran.a
    
  3. Erstellen Sie den Symlink:

    sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
    

7

Was ich getan habe, überprüfe ich auf Ubuntu, ob die Versionen von g ++, gcc und g gleich sind oder nicht.

Ich denke, es ist besser, wenn Sie alle drei der gleichen Version haben.

# first check the versions:
gcc --version
g++ --version
gfortran --version

# If versions are different, then install:
sudo apt-get update
apt-get install gcc-4.9 g++-4.9 gfortran-4.9

Für mich löste dies alle Probleme, die ich bei der Installation des "TTR" -Pakets in R mit RStudio unter Ubuntu hatte.


1
Dies ist die richtige Lösung. Keine der oben genannten Lösungen hat bei mir funktioniert
Yonatan Simson

1
Ich bin auf gcc 6.5, aber die gleichen Methoden haben das Problem gelöst. Interessanterweise dieselbe Quelle: ein obskures R-Paket.
Ufos

Ja, das war die beste Lösung, die ich mir vorstellen konnte.
Manoj Kumar

4

Lösung:

cd /usr/lib/gcc/x86_64-linux-gnu/4.6
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a

Könnten Sie es etwas ausführlicher machen? Vielleicht cdzumindest eine separate Zeile?
Volker Siegel

2
Bitte fügen Sie eine Erklärung hinzu. Menschen sollten niemals blind Befehle ausführen, die sie im Internet finden. Also bitte auch nicht schreiben.
s3lph

Danke, das hat es für mich gelöst! In meinem Fall war es cd /usr/lib/gcc/x86_64-linux-gnu/4.9.3und dann sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
Zhubarb
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.