[R] Dynamic loading problem.

Kurt Hornik Kurt.Hornik at ci.tuwien.ac.at
Sat Sep 15 10:55:49 CEST 2001


>>>>> Prof Brian Ripley writes:

> On Fri, 14 Sep 2001, Rolf Turner wrote:

>> I'm having a dynamic loading problem that seems to be
>> caused by exponentiation (the ** operator in Fortran/ratfor).
>> 
>> This can be illustrated by the following toy example:
>> 
>> ===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===
>> % cat foo.r
>> subroutine foo(x,n)
>> x = x**n
>> return
>> end
>> 
>> % f77 -c foo.r
>> /tmp/ratfor.06661.0.f:
>> foo:
>> % R CMD SHLIB -o foo.so foo.o
>> gcc -G  -o foo.so foo.o  -L/usr/local/lib
>> % R -q
>> 
>> > dyn.load("foo.so")
>> Error in dyn.load(x, as.logical(local), as.logical(now)) :
>> unable to load shared library "/home1/faculty/rolf/Traal/Temp/foo.so":
>> ld.so.1: /usr/local/lib/R/bin/R.bin: fatal: relocation error: file /home1/faculty/rolf/Traal/Temp/foo.so: symbol __pow_ri: referenced symbol not found
>> > q()
>> ===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===
>> 
>> I presume/hope that by handing SHLIB some other flags or by
>> specifying some environment variable or other, or by ..., I should
>> be able to get dyn.load() to find ``__pow_ri''.
>> 
>> The same problem does NOT arise when I use Splus3.4 SHLIB and
>> dyn.load.shared() in Splus3.4, so ``__pow_ri'' must be around
>> somewhere.
>> 
>> Can anyone tell me (in simple, prescriptive, explicit terms) what
>> I need to do to alleviate this problem?
>> 
>> I'm running R-1.3.1 on a Sun Sparc Ultra-5, under SunOS 5.7/Solaris 2.7.

> Use Fortran!  Seriously, on my Ultra1

> auk% R CMD SHLIB foo.f
> f77   -PIC  -O -c foo.f -o foo.o
> foo.f:
>         foo:

> gcc -G  -o foo.so foo.o  -L/usr/local/lib -R/opt/SUNWspro/lib
> -L/opt/SUNWspro/lib -L/opt/SUNWspro/WS6U1/lib -L/usr/ccs/lib -L/usr/lib
> -lF77 -lM77 -lsunmath -lm -lcx

> shows what's up, and with

> dummy.f (empty)

> auk% R CMD SHLIB foo.o dummy.f
> f77   -PIC  -O -c dummy.f -o dummy.o
> dummy.f:
> gcc -G  -o foo.so foo.o dummy.o  -L/usr/local/lib -R/opt/SUNWspro/lib
> -L/opt/SUNWspro/lib -L/opt/SUNWspro/WS6U1/lib -L/usr/ccs/lib -L/usr/lib
> -lF77 -lM77 -lsunmath -lm -lcx

> fixes it.

> S-PLUS comes (usually) with support for ratfor: R does not.

This could be added, but I am not sure if it is worth it.

-k
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list