Rcpp Warnung: "Verzeichnis nicht für Option gefunden" -L / usr / local / Cellar / gfortran / 4.8.2 / gfortran '"

8

Diese Frage bezieht sich auf einige andere da draußen, wie RccpArmadillo oder elementweise Multiplikation .

Allerdings sind meine Einstellungen so, dass ich nicht weiß, was ich bearbeiten / simlink habe, um RCCP laufen zu lassen, ohne mir Warnungen zu geben.

Ich bin auf einem Mac 10.9 (Mavericks) mit der neuesten R-Version.

Ganz am Anfang, den folgenden Code ausprobiert habe ich von hier RccpvsR , ich habe einen Fehler:

%Vor%

Dann, basierend auf RccpArmadillo tat ich folgendes:

%Vor%

Das war nur ein paar Dinge auszuprobieren, da ich kein /usr/local/Cellar/gfortran/ Verzeichnis habe. Tatsächlich sind alle meine libgfortran* Dateien hier (Am Macports Verzeichnis):

%Vor%

und hier /opt/local/lib/gcc48/gcc/x86_64-apple-darwin13/4.8.3/libgfortranbegin.a und ich habe keine gfortran Datei irgendwo.

Dann habe ich den Code RccpvsR erneut ausprobiert und überraschenderweise hat es funktioniert! Abgesehen davon, dass ich eine Warnung bekomme:

%Vor%

weil es natürlich nicht existiert, aber die von diesem Code erstellte Funktion cosineRcpp läuft ohne Probleme.

Also, all das, um zu fragen, ob irgendjemand weiß, ob ich die libgfortran Dateien bei /opt/local/lib/gcc48/ als simlink verlinken muss:

%Vor%

und dann entfernen / bearbeiten Sie die Zeile:

%Vor%

bei ~/.R/Makevars

oder wenn ich etwas neues installieren muss.

Vielen Dank im Voraus für Ihre Zeit!

    
Javier 01.05.2015, 17:42
quelle

2 Antworten

15

Kurze Antwort

Geben Sie einfach den Pfad zu libgfortran in FLIBS ein, z. B.

%Vor%

Oder, symlink die Dateien innerhalb von /usr/local/lib/ , wenn Sie damit einverstanden sind. Diese Lösung ist jedoch ziemlich spröde, da es leicht zu vergessen ist, diesen Pfad zu aktualisieren, wenn Sie gfortran aktualisieren oder in ein anderes Verzeichnis verschieben.

Etwas längere Antwort

Sie können gfortran für den Pfad zu libgfortran.dylib abfragen, z. B.

%Vor%

Sie können dies direkt in Ihrer Makevars -Datei ausführen; z.B.

%Vor%

Veraltete lange Antwort

Versuchen Sie, eine passende FLIBS direkt von gfortran output zu analysieren.

Zuerst etwas Hintergrund. Das Verzeichnis /usr/local/Cellar ist der Standardpfad, der von homebrew verwendet wird, einem Paketmanager für OS X. Stellen Sie sich das als Alternative zu macports vor.

Homebrew stellt nun gfortran und die zugehörigen Bibliotheken als Teil des Pakets gcc zur Verfügung, und die Pfade, in denen FORTRAN-Bibliotheken installiert werden, haben sich nun geändert. Diese können jedoch (im Allgemeinen) mit gfortran -print-search-dirs ermittelt werden. Zum Beispiel auf meinem System,

%Vor%

wird mir geben

%Vor%

Teilen, und mit R gedruckt, sehe ich:

%Vor%

In meinem Fall lebt libgfortran tatsächlich hier:

%Vor%

Und das ist der Pfad, den wir an FLIBS übergeben wollen. Aber das herauszuholen ist eine Art Schmerz, also sagen wir FLIBS , welche Pfade normalerweise von gfortran verwendet werden:

%Vor%

Das ist nett, aber wir wollen die Bibliothekspfade in einem für den Compiler geeigneten Format haben; dh mit -L vorangestellt. Machen wir das mit sed :

%Vor%

Diese Ausgabe (geteilt für die Lesbarkeit)

%Vor%

Alles in allem bedeutet dies, dass das Folgende für Sie funktionieren sollte, zumindest unter OS X, sollte aber (im Allgemeinen) auf jeder Plattform mit gfortran funktionieren (solange es sich auf PATH befindet):

%Vor%

Dies ist nicht perfekt, z.B. Es wird scheitern, wenn du in deinen Pfaden Räume hast - wenn du das tust, 1) verdienst du, was du bekommst und 2) es sollte auch eine 'relativ' einfache Lösung sein.

    
Kevin Ushey 01.05.2015, 19:37
quelle
1

Eine kleine Änderung an der Antwort von @ kevin-ushey (die ich zumindest benötigte; ich benutze Prezto) fügte einfache Anführungszeichen zu grep '^libraries:' hinzu, was zu folgendem Ergebnis führte:

%Vor%

Das Hinzufügen dieser Zeile zu meiner ~/.R/Makevars Datei hat den Trick gemacht!

    
Danton Noriega 07.09.2016 14:34
quelle

Tags und Links