Skip to content

R/C interface

2 messages · estuart@fas.harvard.edu, Brian Ripley

#
Hi,
I am trying to use the R/C interface on a Unix system that unfortunately does 
not have the gnu C compiler and am having trouble accessing the math functions 
from math.h.

To compile a C program with math functions on this system, the following 
command is used (and the order is important: the /usr/lib/libm.a statement must 
come at the end of the command):
"cc program.c /usr/lib/libm.a"

I am having trouble getting R to compile the C programs with this extra command 
(/usr/lib/libm.a).  I have tried the CFLAGS option, and have looked at the 
scripts for the COMPILE and SHLIB commands but have not seen anything obvious 
(and I am not very familiar with Unix and C in general).  

Is there some way I can get R to use this when it does the C compiling in R CMD 
COMPILE and R CMD SHLIB?  

Thank you in advance for any help!

Elizabeth Stuart


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
On Wed, 17 Jul 2002 estuart at fas.harvard.edu wrote:

            
What Unix system is this?  It would be unusual not to use a shared libm if
there is one at all.  (If this is really a Unix(TM) system then you should
not need to worry about libm as R's configuration will handle it
automatically.)

I think what you actually want to use is

cc -c program.c
cc -o program program.o -lm

However, to use C programs with R you need to make a shared library, not
an executable.  You shouldn't need to link the shared library against libm
(since R.bin itself would be linked against libm.so), but if you do, you
can add "-lm" to SHLIB_LIBADD.
If you still have problems, please send us details of the system and the
output from R CMD SHLIB (and from dyn.load if that fails).  We will then
be able to ask more specific diagnostic questions.