help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: passing a matrix to a fortran subroutine


From: John W. Eaton
Subject: Re: passing a matrix to a fortran subroutine
Date: Thu, 3 Sep 1998 12:24:02 -0500 (CDT)

On 15-Jul-1998, address@hidden <address@hidden> wrote:

| I am having a similar problem with octave 2.0.13 under solaris 2.5.1 (SunOS 
5.5.1)
| 
| I wrote a c++ routine to do the inner loop of a routine that calculates
| tvar (time variance).  My first problem was that mkoctfile would dump core
| if I left it as it was, using g++ to do the linking.  If I changed it to 
| use gcc or ld, the .oct file would get generated, but when I tried to use
| it (or even do a which tvar_oct) octave would report:
| 
| error: ld.so.1: octave: fatal: relocation error: symbol not found: 
_t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0.nilRep:
 referenced in /home/tellabx-5/lash/tdv/tvar_oct.oct: 
/home/tellabx-5/lash/tdv/tvar_oct.oct `FStvar_oct__Fv'
| 
| I had assumed that this was due to our tools group not installing gcc 
correctly
| (they have recently gone to egcs). Is there any easy way to check if they
| compiled gcc with --enable-shared?  I compiled octave with this compiler and
| doing an ldd on it shows:
| 
| sunl10% ldd ~/progs/octave/bin/octave
|         libm.so.1 =>     /usr/lib/libm.so.1
|         libdl.so.1 =>    /usr/lib/libdl.so.1
|         libsocket.so.1 =>        /usr/lib/libsocket.so.1
|         libc.so.1 =>     /usr/lib/libc.so.1
|         libnsl.so.1 =>   /usr/lib/libnsl.so.1
|         libintl.so.1 =>  /usr/lib/libintl.so.1
|         libmp.so.1 =>    /usr/lib/libmp.so.1
|         libw.so.1 =>     /usr/lib/libw.so.1
|
| Which makes me believe that it can handle shared libraries.  I do notice that
| we don't have a shared version of libstdc++ which is where 
| 
| _t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0
|  
| is defined. (Don't you just love that C++ name mangling!!!).  This symbol
| does also appear to be in the octave executable file though.

But on some systems (and Solaris is one of them, I think) any symbols
you need to resolve at run time apparently need to be in shared
libraries.  So, I think you need a shared version of libstdc++.  Since
it's not there, I'd guess that your copy of egcs was not configured
with --enable-shared.

Sorry for the long delay in responding,

jwe



reply via email to

[Prev in Thread] Current Thread [Next in Thread]