Hi! I would like to call a Fortran subroutine within R. For doing this, I first built a shared library for loading into R under Unix and it was successful. But when I tried to load a shared library using dyn.load() function for use in .Fortran(), I got an error message. The command I input below in R is:>dyn.load("aaa.so")The reslut is: error in dyn.load(x,as.logical(local),as.logical(now)): unable to load shared library "/home/user/fortran/aaa.so": ld.so.1: /usr/local/lib/R/bin/R.bin: fatal: relocation error: file /home/ymu/ft/aaa.so: symbol _F90free: referenced symbol not found. Does this mean that the shared library was not built successfully or my fortran subroutine has some errors? Any answers to my problem will be very much appreciated! Best, Yunming *^_^*
On Wed, 18 Jun 2003, Mu Yunming wrote:> Hi! > > I would like to call a Fortran subroutine within R. For doing this, I first > built a shared library for loading into R under Unix and it was successful.How did you do this? Did you use R CMD SHLIB?> But when I tried to load a shared library using dyn.load() function for use in > .Fortran(), I got an error message. > The command I input below in R is: > >dyn.load("aaa.so") > The reslut is: > > error in dyn.load(x,as.logical(local),as.logical(now)): > unable to load shared library "/home/user/fortran/aaa.so": > ld.so.1: /usr/local/lib/R/bin/R.bin: fatal: relocation error: file > /home/ymu/ft/aaa.so: symbol _F90free: referenced symbol not found. > > Does this mean that the shared library was not built successfully or my > fortran subroutine has some errors?The former. You appear to have used different Fortran compilers to build R and your shared object, since your Fortran support libraries are not being linked against. -- 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 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595
First of all, thank you very much for your quick response.>===== Original Message From Prof Brian D Ripley <ripley at stats.ox.ac.uk> ====>On Wed, 18 Jun 2003, Mu Yunming wrote: > >> Hi! >> >> I would like to call a Fortran subroutine within R. For doing this, I first >> built a shared library for loading into R under Unix and it was successful. > >How did you do this? Did you use R CMD SHLIB?Yes, I typed R CMD SHLIB aaa.o under Unix. Before I did that, I complied my fortran source code using f90 aaa.f90, which produced aaa.o.> >> But when I tried to load a shared library using dyn.load() function for usein>> .Fortran(), I got an error message. >> The command I input below in R is: >> >dyn.load("aaa.so") >> The reslut is: >> >> error in dyn.load(x,as.logical(local),as.logical(now)): >> unable to load shared library "/home/ymu/ft/aaa.so": >> ld.so.1: /usr/local/lib/R/bin/R.bin: fatal: relocation error: file >> /home/ymu/ft/aaa.so: symbol _F90free: referenced symbol not found. >> >> Does this mean that the shared library was not built successfully or my >> fortran subroutine has some errors? > >The former. You appear to have used different Fortran compilers to build R >and your shared object, since your Fortran support libraries are not being >linked against. >My source code is writen in fortran 90 and i complied the source code using command f90. How do you think I should complie my source file and build the shared library?>-- >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 272860 (secr) >Oxford OX1 3TG, UK Fax: +44 1865 272595Best, Yunming *^_^*