Skip to content

Dynamic loading problem.

3 messages · Rolf Turner, Brian Ripley, Kurt Hornik

#
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
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
===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===

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.

					cheers,

						Rolf Turner
						rolf at math.unb.ca
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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 Fri, 14 Sep 2001, Rolf Turner wrote:

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