2012-06-06 26 views
5

¿Puede establecer los indicadores C y C++ de R en el momento de la compilación al instalar desde R CMD INSTALL (esencialmente, en este caso quiero desactivar la optimización del compilador, pero idealmente hay una solución general)?Indicadores de compilación C de R

Sé que puede afectar algunas opciones usando --configure-args="...", y de manera bastante optimista intenté --configure-args="diable-optimization", fue en vano. Del mismo modo, también pude editar $RHOME/etc/Makeconf, pero nuevamente este no es realmente el tipo de solución que estoy buscando (y no es posible cuando no tengo el permiso de escritura pertinente).

Defino mis banderas a través de una secuencia de comandos autoconf y con un archivo Makevars en el directorio package/src, si esto hace alguna diferencia.

Respuesta

4

Sí, utilizo un archivo ~/.R/Makevars para eso. También útil para establecer CC y CXX a diferentes compiladores cuando, por ejemplo, cambiar versiones de gcc, o cambiar a llvm, o ...

+1

que es ideal - pero después de haber creado el archivo '~/.R/Makevars', cómo se obtiene R para utilizar estas variables durante la compilación? – Alex

+1

Es automático cuando usa 'R CMD ...'. –

+0

Mira, tenía miedo de que dijeras eso. ¿Debo necesitar algo especial en mi script configure.ac para que esto funcione? – Alex

4

Dirk - discusión muy útil (como siempre) y definitivamente me apuntó en la dirección correcta. Para mi problema específico, resultó que además del archivo Makevars tuve que pasar argumentos a configure. No tengo idea de por qué este es el caso (y leer no parece ser la norma, así que tal vez he hecho algo mal en alguna parte), pero si alguien más tiene el mismo problema, usar un ~/R/Makevars combinado con los siguientes argumentos para configure/INSTALL funcionó para mí.

R CMD INSTALL --configure-args="CFLAGS=-g CXXFLAGS=-g" package.tar.gz 
+0

¿Quiere decir ~/.R/Makevars? Esa es la que necesitas. –

1

puedo confirmar que el archivo Makevars es muy útil (especialmente si tiene que utilizar "-l/mis/libs" o "-I/mi/includes", o otros construyen las banderas).

Para que la creación, si desea establecer una opción para el sitio/máquina, también puede cambiar las variables en el Makeconf archivo (/ ruta/R/instalar/[lib64/R /] etc/Makeconf) .

Sin embargo, si, como yo, todavía tiene algunos problemas para administrar y usar bibliotecas más adelante, también puede establecer bibliotecas con el archivo ldpaths [1]. Este archivo contiene la R_LD_LIBRARY_PATH usada por R. Esta variable es el equivalente de la bien conocida LD_LIBRARY_PATH en Unix [2].

acabo añade algo de contenido (justo antes del comentario en MacOS/Darwin) a este archivo (etc/ldpaths/ruta/R/instalar/[lib64/R /]):

if test -n "${LD_LIBRARY_PATH}"; then 
    R_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${R_LD_LIBRARY_PATH}" 
fi 
## This is DYLD_FALLBACK_LIBRARY_PATH on Darwin (OS X) and 

Entonces, usted podrá administrar sus bibliotecas dinámicamente por ej. usando "módulos de entorno" o "lmod".

Tenga en cuenta que puede cambiar muchas otras variables de entorno y R con todos los archivos que se encuentran en ese directorio config/etc (Renviron, repositories, javaconf, Rprofile.site ...).

[1] https://support.rstudio.com/hc/en-us/community/posts/200645248-Setting-up-LD-LIBRARY-PATH-for-a-rsession

[2] http://www.tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

Cuestiones relacionadas