Construire des paquets R en utilisant un autre GCC
Question
Les systèmes avec lesquels je travaille ont GCC 4.5 (expérimental) dans / usr / local / bin / gcc, ce qui s’est avéré problématique pour certains packages R. Je voudrais plutôt utiliser le système GCC dans / usr / bin / gcc.
J'ai essayé de définir CC et CXX dans les fichiers de configuration Bash (.bashrc, .bash_profile, etc.) ainsi que sur la ligne de commande, mais bien que Bash reconnaisse la modification, R ne le fait pas.
Comment puis-je obtenir que R utilise la version de GCC dans / usr / bin au lieu de celle de / usr / local / bin /?
La solution
Ceci n’est pas très bien documenté (par exemple, j’ai échoué à le localiser dans "R Extension" ou "R Admin" pour le moment) mais Brian Ripley l’a mentionné à quelques reprises sur les listes.
En règle générale, au moment de la compilation R, les paramètres sont enregistrés et stockés dans $ R_HOME / etc / Makeconf
. Une possibilité consiste à modifier ce fichier directement, mais vous ne pouvez pas avoir les privilèges root ou ne pas vouloir affecter tous les autres utilisateurs. Donc, le mieux est de créer
~/.R/Makevars
avec des entrées
CC=gcc-4.4
CXX=g++-4.4
plus les indicateurs d'optimisation, etc. que vous souhaitez définir. Cela affectera toutes les utilisations ultérieures de R CMD INSTALL
ou R CMD vérifier
ou ... que vous exécutez.
Les autres fichiers de $ R_HOME / etc /
peuvent également être remplacés localement à partir de ~ / .R /
.
Autres conseils
J'ai eu un problème très similaire.
Ce qui a fonctionné pour moi a été de définir un répertoire de projet (rstudio peut le faire pour vous), puis d’ajouter un fichier .Renviron
modifiant les chemins PATH et LD_LIBRARY_PATH, afin d’inclure le répertoire dans le nouveau fichier. gcc.
Dans votre cas, par exemple, .Renviron
ressemblera à quelque chose comme:
LD_LIBRARY_PATH = / usr / local / bin / gcc / lib: / usr / local / bin / gcc / lib64: / usr / local / bin / gcc / libexec:
autres chemins
PATH = / usr / local / bin / gcc / bin: / usr / local / bin:
autres chemins
Vérifiez votre chemin pour voir si / usr / local / bin vient avant / usr / bin. Si c'est le cas, assurez-vous que / usr / bin vient en premier:
PATH=/usr/bin:${PATH}
(c'est correct si / usr / bin est dupliqué apparaît deux fois).