Re: [R] (not) compiling fortran -- dynamic loading problem

About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [R] (not) compiling fortran -- dynamic loading problem
From: Prof Brian D Ripley (ripley@stats.ox.ac.uk)
Date: Wed 02 Feb 2000 - 17:49:06 EST


Message-ID: <Pine.GSO.4.05.10002020738521.26986-100000@auk.stats>

On Tue, 1 Feb 2000, Matthew Wiener wrote:

> Hi, everyone. This may be properly a fortran question rather than an R
> question.
>
> I'm trying to add a few print statements to otherwise working fortran code
> in one of the libraries so I can see what's going on in the code. I have
> no problem doing so on an SGI machine, but under LinuxPPC I've run into a
> problem. The code compiles and creates a shared object (.so), but when I
> issue the "library" command to load the new (printing) version, I get the
> following error:
>
> undefined symbol: do_lio

It's in libg2c.a, in module libg2c.a[dolio.o], on gcc 2.95.2. I just ran
nm over the g77 libraries.

> I assume this must be some fortran i/o function, and perhaps I'm missing a
> library. But I've never seen this symbol before, and I can't find it in
> the info pages for g77 (or on the LinuxPPC mailing lists). Does anyone
> have any idea where I can find this library on LinuxPPC?
>
> (Or do I have the wrong idea about what the problem is?)

You may need to adjust FLIBS. On my gcc/g77 build (Solaris), I have

FLIBS = -L/usr/local/lib -L/usr/ccs/lib -L/usr/lib
-L/ext/gcc-2.95.2/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2 -L/usr/ccs/bin -L/usr/ccs/lib
-L/ext/gcc-2.95.2/lib -lg2c -lm

so libg2c does get searched.

However, mixing C and Fortran I/O from R is not a good idea. That's why we
have subroutines dblepr, intpr and realpr for seeing what's going on in the
code. They are documented in the Writing R Extensions manual in the
development version, and I can quote a bit (please ignore the texinfo
markup):

In theory Fortran @code{write} and @code{print} statements can be used,
but its output may not interleave well with that of C, and will be
invisible on GUI interfaces. They are best avoided.

Three subroutines are provided to ease the output of information from
Fortran code.
@example
subroutine dblepr(label, nchar, data, ndata)
subroutine realpr(label, nchar, data, ndata)
subroutine intpr (label, nchar, data, ndata)
@end example

@noindent
Here @code{label} is a character label of up to 255 characters,
@code{nchar} is its length (which can be @code{-1} if the whole label is
to be used), and @code{data} is an array of length at least @code{ndata}
of the appropriate type (@code{double precision}, @code{real} and
@code{integer} respectively). These routines print the label on one
line and then print @code{data} as if it were an @R{} vector on
subsequent line(s). They work with @code{ndata = 0} and so can be used
to print a label alone.

The actual subroutines have been in R for a year or so, but the
documentation is new (like for many things in R).

-- 
Brian D. Ripley,                  ripley@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

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b25 : Mon 17 Jul 2000 - 12:33:07 EST