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):
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:
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!
Geben Sie einfach den Pfad zu libgfortran
in FLIBS
ein, z. B.
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.
Sie können gfortran
für den Pfad zu libgfortran.dylib
abfragen, z. B.
Sie können dies direkt in Ihrer Makevars
-Datei ausführen; z.B.
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,
wird mir geben
%Vor%Teilen, und mit R gedruckt, sehe ich:
%Vor% In meinem Fall lebt libgfortran
tatsächlich hier:
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:
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
:
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):
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.
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:
Das Hinzufügen dieser Zeile zu meiner ~/.R/Makevars
Datei hat den Trick gemacht!