[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: passing a matrix to a fortran subroutine,
John W. Eaton <=