[R] compile error with C code and standalone R math C library
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sun Dec 14 08:37:34 CET 2003
This is a known bug already fixed (we believe) in R-patched and R-devel.
On Sun, 14 Dec 2003, Dirk Eddelbuettel wrote:
> On Sun, Dec 14, 2003 at 12:51:09AM -0500, Faheem Mitha wrote:
> > On Sat, 13 Dec 2003, Dirk Eddelbuettel wrote:
> >
> > > On Sat, Dec 13, 2003 at 07:44:46PM -0500, Faheem Mitha wrote:
> > > > I just went back to an old piece of C code. On trying to compile it with
> > > > the R math standalone C library I got the following error. Can anyone
> > > > enlighten me what I am doing wrong, if anything? C file (rr-sa.c) follows.
> > > >
> > > > I'm on Debian sarge. I'm running R version 1.8.1. Gcc is version
> > > > 3.3.1.
> > > [...]
> > > > faheem ~/co/rr/trunk>gcc -o rr rr-sa.c -lRmath -lm
> > > > /usr/lib/gcc-lib/i486-linux/3.3.2/../../../libRmath.so: undefined
> > > > reference to `Rlog1p'
> > > > collect2: ld returned 1 exit status
> > >
> > > The linker tells you that it cannot find object code for a function Rlog1p.
> > > So let's check:
> > >
> > > edd at chibud:~> grep Rlog1p /usr/include/Rmath.h
> > > edd at chibud:~> grep log1p /usr/include/Rmath.h
> > > double log1p(double); /* = log(1+x) {care for small x} */
> > > edd at chibud:~>
> > >
> > > Turns out that there is none defined in Rmath.h, but log1p exists. This may
> > > have gotten renamed since you first wrote your code.
> >
> > Maybe I am being dense, but how is this my fault? I am not using either
> > Rlog1p or log1p in my code (as far as I can see).
>
> Indeed -- it looks like we have a problem. Looking at the NEWS file, some
> logic regarding (R)log1p was changed in the 1.8.* series, and it seems to be
> going wrong here.
>
> As a stop gap-measure, just define an empty Rlog1p() to complete linking:
>
> edd at chibud:/tmp> grep Rlog1p rr-sa.c
> void Rlog1p(void) {;}
> edd at chibud:/tmp> gcc -Wall -o rr rr-sa.c -lRmath -lm
> edd at chibud:/tmp> ls -l rr
> -rwxr-xr-x 1 edd edd 13889 Dec 14 00:12 rr
> edd at chibud:/tmp>
>
> For the record, on my build system, a log1p function is found but deemed not
> good enough:
>
> edd at chibud:/tmp> grep log1p ~/src/debian/build-logs/r-base_1.8.1-1.log |
> head -2checking for log1p... yes
> checking for working log1p... no
>
>
> Dirk
>
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list