2009-10-24 14 views
13

Die Systeme, mit denen ich arbeite, haben GCC 4.5 (experimentell) in/usr/local/bin/gcc, was sich für einige R-Pakete als problematisch erwiesen hat. Ich möchte stattdessen System GCC in/usr/bin/gcc verwenden.Erstellen von R-Paketen mit alternierendem GCC

Ich habe versucht, CC und CXX in den Bash-Konfigurationsdateien (.bashrc, .bash_profile usw.) sowie in der Befehlszeile zu setzen, aber obwohl Bash die Änderung erkennt, R nicht.

Wie kann ich R dazu bringen, die Version von GCC in/usr/bin anstelle von der in/usr/local/bin/zu verwenden?

Antwort

20

Dies ist nicht so gut dokumentiert (z. B. habe ich es nicht in "R Extension" oder "R Admin" im Augenblick gefunden), aber Brian Ripley erwähnt es ein paar Mal auf den Listen.

Grundsätzlich werden bei R Kompilierzeit Einstellungen registriert und in $ RHOME/etc/Makeconf gespeichert. Eine Möglichkeit besteht darin, diese Datei direkt zu bearbeiten, aber Sie verfügen möglicherweise nicht über Root-Berechtigungen oder möchten möglicherweise nicht alle anderen Benutzer betreffen. So desto besser kann

~/.R/Makevars 

mit Einträgen

CC=gcc-4.4 
CXX=g++-4.4 

und je nachdem, was optmisation Fahnen usw. Sie festlegen möchten erstellen sein. Das betrifft alle nachfolgenden Verwendungen von R CMD INSTALL oder R CMD check oder ... die Sie ausführen.

Andere Dateien in $ RHOME/etc/können lokal von ~/.R/ überschrieben werden.

+0

Mit meiner Konfiguration erfordern bestimmte Pakete sudo, also in diesen Fällen es ist notwendig, um Makeconf zu modifizieren. Deine Lösung funktioniert! –

+2

$ R_HOME ist/usr/lib64/R/für CentOS6 – zakrapovic

+1

Für eine R-Paket (largeViz) Installation hatten wir Probleme, auch nach dem Hinzufügen der CXX-Variable. Außerdem mussten wir die CXX11-Variable in der Makevars-Datei konfigurieren. So ist CXX11 = g ++ 7 – user131476

0

Überprüfen Sie Ihren Pfad, um zu sehen, ob/usr/local/bin vor/usr/bin kommt. Ist dies der Fall, stellen Sie sicher,/usr/bin an erster Stelle:

PATH=/usr/bin:${PATH} 

(es ist in Ordnung, wenn/usr/bin dupliziert erscheint zweimal).

+0

Hat nicht funktioniert: export PATH =/usr/bin: $ {PATH} R CMD INSTALL ... Überprüfung auf gcc .../usr/local/bin/gcc -std = gnu99 –

1

Ich hatte ein sehr ähnliches Problem.

Was für mich gearbeitet wurde ein Projektverzeichnis definieren (rstudio können Sie das tun) und dann eine .Renviron Datei hinzufügen, die die PATH und LD_LIBRARY_PATH modifiziert, das Verzeichnis mit dem neuen gcc aufzunehmen. In Ihrem Fall zum Beispiel, wird die .Renviron etwas wie folgt aussehen:

LD_LIBRARY_PATH=/usr/local/bin/gcc/lib:/usr/local/bin/gcc/lib64:/usr/local/bin/gcc/libexec:andere Wege

PATH=/usr/local/bin/gcc/bin:/usr/local/bin:andere Wege