Consulte el manual 'Grabando R Extensiones' sobre los detalles, puede compilar y vincular fácilmente contra Rmath.h y la biblioteca R Math independiente, pero no R.h. (Que puede usar a través de Rcpp/RInside pero esa es una historia diferente.)
Hay una serie de ejemplos flotando alrededor para usar libRmath, uno está en el manual mismo. Aquí está uno que envío en el paquete Debian r-mathlib
que contiene esta biblioteca matemática independiente:
/* copyright header omitted here for brevity */
#define MATHLIB_STANDALONE 1
#include <Rmath.h>
#include <stdio.h>
typedef enum {
BUGGY_KINDERMAN_RAMAGE,
AHRENS_DIETER,
BOX_MULLER,
USER_NORM,
INVERSION,
KINDERMAN_RAMAGE
} N01type;
int
main(int argc, char** argv)
{
/* something to force the library to be included */
qnorm(0.7, 0.0, 1.0, 0, 0);
printf("*** loaded '%s'\n", argv[0]);
set_seed(123, 456);
N01_kind = AHRENS_DIETER;
printf("one normal %f\n", norm_rand());
set_seed(123, 456);
N01_kind = BOX_MULLER;
printf("normal via BM %f\n", norm_rand());
return 0;
}
y en Linux sólo tiene que construir así (como coloco la biblioteca y encabezado en ubicaciones estándar en el paquete, añadir -I y -L según sea necesario en OS X)
/tmp $ cp -vax /usr/share/doc/r-mathlib/examples/test.c mathlibtest.c
`/usr/share/doc/r-mathlib/examples/test.c' -> `mathlibtest.c'
/tmp $ gcc -o mathlibtest mathlibtest.c -lRmath -lm
/tmp $ ./mathlibtest
*** loaded '/tmp/mathlibtest'
one normal 1.119638
normal via BM -1.734578
/tmp $
Gracias. Empecé a leer el PDF "Writing R extensions". –
Estaba buscando esto. ¿Es posible compilar el programa "Me gusta" en una máquina que no tiene instalados r-mathlib o incluso r-base? –
Tendría que reconstruir un programa de prueba y ejecutar 'ldd' en él, pero creo que el objetivo de r-mathlib es * no * depender de r-base. Siendo estas bibliotecas dinámicas, aún necesitarías r-mathlib (y lo que necesita) en el otro sistema. A menos que vaya a todas las compilaciones estáticas desde la configuración inicial, –