Construyendo Paquetes R usando GCC Alternativo
Pregunta
Los sistemas con los que trabajo tienen GCC 4.5 (experimental) en / usr / local / bin / gcc, que ha demostrado ser problemático para algunos paquetes R Me gustaría usar el sistema GCC en / usr / bin / gcc.
He intentado configurar CC y CXX en los archivos de configuración de Bash (.bashrc, .bash_profile, etc.), así como en la línea de comandos, pero aunque Bash reconoce el cambio, R no.
¿Cómo puedo hacer que R use la versión de GCC en / usr / bin en lugar de la de / usr / local / bin /?
Solución
Esto no está tan bien documentado (por ejemplo, no pude ubicarlo en 'R Extension' o 'R Admin' en este momento) pero Brian Ripley lo mencionó varias veces en las listas.
Básicamente, en el tiempo de compilación R, las configuraciones se registran y se almacenan en $ R_HOME / etc / Makeconf
. Una posibilidad es editar ese archivo directamente, pero es posible que no tenga privilegios de root o que no quiera afectar a todos los demás usuarios. Así que mejor puede ser crear
~/.R/Makevars
con entradas
CC=gcc-4.4
CXX=g++-4.4
más los indicadores de optimización, etc. que desee configurar. Eso afectará a todos los usos posteriores de R CMD INSTALL
o R CMD check
o ... que ejecute.
Otros archivos en $ R_HOME / etc /
también pueden ser anulados localmente desde ~ / .R /
.
Otros consejos
Tuve un problema muy similar.
Lo que funcionó para mí fue definir un directorio de proyecto (rstudio puede hacerlo por usted), y luego agregar un archivo .Renviron
que modifique el PATH y LD_LIBRARY_PATH, para incluir el directorio con el nuevo gcc.
En su caso, por ejemplo, el .Renviron
tendrá un aspecto similar al siguiente:
LD_LIBRARY_PATH=/usr/local/bin/gcc/lib:/usr/local/bin/gcc/lib64:/usr/local/bin/gcc/libexec:
otras rutas
PATH=/usr/local/bin/gcc/bin:/usr/local/bin:
otras rutas
Verifique su ruta para ver si / usr / local / bin aparece antes de / usr / bin. Si lo hace, solo asegúrate de que / usr / bin sea lo primero:
PATH=/usr/bin:${PATH}
(está bien si / usr / bin está duplicado aparece dos veces).