linking liboctave fails (lapack missing?)

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 | Next >

linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I just tried to build the recent development tip on mingw32 and building
fails at linking liboctave with a phletora of missing symbols from the
lapack library.

looking at the linker command I see that indeed there is no -llapack
present.

Digging the changelog I find that at revision 9490:3aeb7d881578
$(BLAS_LIBS) has been removed from LINK_DEPS in liboctave/makefile.in

I guess it should still be there, since arpack, qrupdate and quite some
octave code depends on it.

benjamin

Re: linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Benjamin Lindner wrote:

> Hello,
>
> I just tried to build the recent development tip on mingw32 and building
> fails at linking liboctave with a phletora of missing symbols from the
> lapack library.
>
> looking at the linker command I see that indeed there is no -llapack
> present.
>
> Digging the changelog I find that at revision 9490:3aeb7d881578
> $(BLAS_LIBS) has been removed from LINK_DEPS in liboctave/makefile.in
>
> I guess it should still be there, since arpack, qrupdate and quite some
> octave code depends on it.
>

I see that there is already a thread covering this topic on the bugs
list. Sorry for the double-post.

Hovever, liboctave directly uses functinos from lapack, and uses the
qrupdate and qrpack library which both depend on lapack, so lapack
*should* be listed in LINK_DEPS.

benjamin





Re: linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Benjamin Lindner wrote:

> Benjamin Lindner wrote:
>> Hello,
>>
>> I just tried to build the recent development tip on mingw32 and
>> building fails at linking liboctave with a phletora of missing symbols
>> from the lapack library.
>>
>> looking at the linker command I see that indeed there is no -llapack
>> present.
>>
>> Digging the changelog I find that at revision 9490:3aeb7d881578
>> $(BLAS_LIBS) has been removed from LINK_DEPS in liboctave/makefile.in
>>
>> I guess it should still be there, since arpack, qrupdate and quite
>> some octave code depends on it.
>>
>
> I see that there is already a thread covering this topic on the bugs
> list. Sorry for the double-post.
>
> Hovever, liboctave directly uses functinos from lapack, and uses the
> qrupdate and qrpack library which both depend on lapack, so lapack
> *should* be listed in LINK_DEPS.
>
The attached changeset fixes the linker issues for mingw32 platform by
adding $(BLAS_LIBS) in liboctave's link depencendies.

benjamin

# HG changeset patch
# User Benjamin Lindner <lindnerb@...>
# Date 1250195832 -7200
# Node ID c8c7b48e2cf4ddbf29dbec62003a66abfa7103bd
# Parent  54055478b3bb512107fe558a11f822fca76cd972
add BLAS_LIBS to liboctave's LINK_DEPS

diff -r 54055478b3bb -r c8c7b48e2cf4 liboctave/ChangeLog
--- a/liboctave/ChangeLog Thu Aug 13 20:58:28 2009 +0200
+++ b/liboctave/ChangeLog Thu Aug 13 22:37:12 2009 +0200
@@ -1,3 +1,7 @@
+2009-08-13  Benjamin Lindner <lindnerb@...>
+
+ * Makefile.in: Include $(BLAS_LIBS) in liboctave's link depencendies
+
 2009-08-12  Jaroslav Hajek  <highegg@...>
 
  * Makefile.in: Include LDFLAGS when linking shared executable.
diff -r 54055478b3bb -r c8c7b48e2cf4 liboctave/Makefile.in
--- a/liboctave/Makefile.in Thu Aug 13 20:58:28 2009 +0200
+++ b/liboctave/Makefile.in Thu Aug 13 22:37:12 2009 +0200
@@ -39,7 +39,7 @@
   -L../libcruft $(LIBCRUFT) \
   $(CHOLMOD_LIBS) $(UMFPACK_LIBS) $(AMD_LIBS) $(CAMD_LIBS) \
   $(COLAMD_LIBS) $(CCOLAMD_LIBS) $(CXSPARSE_LIBS) $(ARPACK_LIBS) \
-  $(QRUPDATE_LIBS) $(FFTW_LIBS) $(READLINE_LIBS) $(TERM_LIBS) $(LIBGLOB) \
+  $(QRUPDATE_LIBS) $(BLAS_LIBS) $(FFTW_LIBS) $(READLINE_LIBS) $(TERM_LIBS) $(LIBGLOB) \
   $(REGEX_LIBS) $(DL_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS)
 
 MATRIX_INC := Array.h Array2.h Array3.h ArrayN.h DiagArray2.h \

Re: linking liboctave fails (lapack missing?)

by John W. Eaton-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 13-Aug-2009, Benjamin Lindner wrote:

| Benjamin Lindner wrote:
| > Benjamin Lindner wrote:
| >> Hello,
| >>
| >> I just tried to build the recent development tip on mingw32 and
| >> building fails at linking liboctave with a phletora of missing symbols
| >> from the lapack library.
| >>
| >> looking at the linker command I see that indeed there is no -llapack
| >> present.
| >>
| >> Digging the changelog I find that at revision 9490:3aeb7d881578
| >> $(BLAS_LIBS) has been removed from LINK_DEPS in liboctave/makefile.in
| >>
| >> I guess it should still be there, since arpack, qrupdate and quite
| >> some octave code depends on it.
| >>
| >
| > I see that there is already a thread covering this topic on the bugs
| > list. Sorry for the double-post.
| >
| > Hovever, liboctave directly uses functinos from lapack, and uses the
| > qrupdate and qrpack library which both depend on lapack, so lapack
| > *should* be listed in LINK_DEPS.
| >
|
| The attached changeset fixes the linker issues for mingw32 platform by
| adding $(BLAS_LIBS) in liboctave's link depencendies.

I made this change.

It would be helpful if people building Octave on Windows and OS X
systems could configure and build the latest Octave sources on and
send a list of symbols that are unresolved when creating the libcruft,
liboctave, liboctinterp shared libraries, when linking the Octave
executable file, and when building the .oct files.

When building the liboctinterp shared library, is it necesary to
explicitly list all of the libraries that are linked with liboctave?
Or are only some required, and if so, which ones, and why only those?

Thanks,

jwe

Re: linking liboctave fails (lapack missing?)

by Michael Goffioul-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, Aug 14, 2009 at 3:12 PM, John W. Eaton<jwe@...> wrote:

> I made this change.
>
> It would be helpful if people building Octave on Windows and OS X
> systems could configure and build the latest Octave sources on and
> send a list of symbols that are unresolved when creating the libcruft,
> liboctave, liboctinterp shared libraries, when linking the Octave
> executable file, and when building the .oct files.
>
> When building the liboctinterp shared library, is it necesary to
> explicitly list all of the libraries that are linked with liboctave?
> Or are only some required, and if so, which ones, and why only those?

Under Windows, usually you only need to list the libraries whose
symbols are actually used in the target library. If the target library
does not reference any symbol from a dependent lib, even if this
dependent lib is required by another dependent lib, it does not
need to be listed.

Michael.

Re: linking liboctave fails (lapack missing?)

by Thomas Treichl :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

John W. Eaton schrieb:

> On 13-Aug-2009, Benjamin Lindner wrote:
>
> | Benjamin Lindner wrote:
> | > Benjamin Lindner wrote:
> | >> Hello,
> | >>
> | >> I just tried to build the recent development tip on mingw32 and
> | >> building fails at linking liboctave with a phletora of missing symbols
> | >> from the lapack library.
> | >>
> | >> looking at the linker command I see that indeed there is no -llapack
> | >> present.
> | >>
> | >> Digging the changelog I find that at revision 9490:3aeb7d881578
> | >> $(BLAS_LIBS) has been removed from LINK_DEPS in liboctave/makefile.in
> | >>
> | >> I guess it should still be there, since arpack, qrupdate and quite
> | >> some octave code depends on it.
> | >>
> | >
> | > I see that there is already a thread covering this topic on the bugs
> | > list. Sorry for the double-post.
> | >
> | > Hovever, liboctave directly uses functinos from lapack, and uses the
> | > qrupdate and qrpack library which both depend on lapack, so lapack
> | > *should* be listed in LINK_DEPS.
> | >
> |
> | The attached changeset fixes the linker issues for mingw32 platform by
> | adding $(BLAS_LIBS) in liboctave's link depencendies.
>
> I made this change.
>
> It would be helpful if people building Octave on Windows and OS X
> systems could configure and build the latest Octave sources on and
> send a list of symbols that are unresolved when creating the libcruft,
> liboctave, liboctinterp shared libraries, when linking the Octave
> executable file, and when building the .oct files.

Ok, I'll be one of those OS X people. I always do an ./autogen.sh before
building (so I did this time). Now, ./configure fails with the message:

   ./configure: line 9350: syntax error near unexpected token `,'
   ./configure: line 9350: `    m4_ifnblank(, AC_LANG_PUSH())'

which in my configure script is

   TEXINFO_QHULL=
   warn_qhull="Qhull library not found -- this will result in loss of
   functionality of some geometry functions."
   if test -n "$QHULL_LIBS"; then
     save_CPPFLAGS="$CPPFLAGS"
     CPPFLAGS="$QHULL_CPPFLAGS $CPPFLAGS"
     m4_ifnblank(, AC_LANG_PUSH())

if I have a look at configure.in's part of this code I see the new macro
OCTAVE_CHECK_LIBRARY with the sixth argument LANG being [].

But I also see this when I do ./autogen.sh:

   calling autoconf and autoheader...
   /Users/Thomas/Development/octave
   configure.in:40: error: possibly undefined macro: AC_DEFINE
       If this token and others are legitimate, please use m4_pattern_allow.
       See the Autoconf documentation.
   configure.in:63: error: possibly undefined macro: AS_HELP_STRING
   configure.in:617: error: possibly undefined macro: AC_LANG_PUSH
   configure.in:665: error: possibly undefined macro: AC_LANG_POP
   configure:1647: error: possibly undefined macro: m4_ifblank
   configure:9353: error: possibly undefined macro: m4_ifnblank
   configure:9565: error: possibly undefined macro: m4_toupper

?

MacMini:~/Development/octave Me$ autoconf --version
autoconf (GNU Autoconf) 2.62
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later
<http://gnu.org/licenses/old-licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David J. MacKenzie and Akim Demaille.

MacMini:~/Development/octave Me$ autoheader --version
autoheader (GNU Autoconf) 2.62
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later
<http://gnu.org/licenses/old-licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Roland McGrath and Akim Demaille.

> When building the liboctinterp shared library, is it necesary to
> explicitly list all of the libraries that are linked with liboctave?
> Or are only some required, and if so, which ones, and why only those?
>
> Thanks,
>
> jwe

Re: linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

John W. Eaton wrote:
> I made this change.
>
> It would be helpful if people building Octave on Windows and OS X
> systems could configure and build the latest Octave sources on and
> send a list of symbols that are unresolved when creating the libcruft,
> liboctave, liboctinterp shared libraries, when linking the Octave
> executable file, and when building the .oct files.
>

On mingw32/msys, calling ./autogen.sh now displays

calling autoconf and autoheader...
/octmgw32/octave/octave-3.3.x
configure.in:40: error: possibly undefined macro: AC_DEFINE
       If this token and others are legitimate, please use m4_pattern_allow.
       See the Autoconf documentation.
configure.in:63: error: possibly undefined macro: AS_HELP_STRING
configure.in:617: error: possibly undefined macro: AC_LANG_PUSH
configure.in:665: error: possibly undefined macro: AC_LANG_POP
configure:1511: error: possibly undefined macro: m4_ifblank
configure:9276: error: possibly undefined macro: m4_ifnblank
configure:9479: error: possibly undefined macro: m4_toupper
/octmgw32/octave/octave-3.3.x/scripts
skipping autoheader in ./scripts
done

and a subsequent call to ./configure fails with

checking for sin in -lm... yes
/octmgw32/octave/octave-3.3.x/configure: line 9276: syntax error near
unexpected token `,'
/octmgw32/octave/octave-3.3.x/configure: line 9276: `    m4_ifnblank(,
AC_LANG_PUSH())'

?

$ autoconf --version
autoconf (GNU Autoconf) 2.61
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.

$ autoheader --version
autoheader (GNU Autoconf) 2.61
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by Roland McGrath and Akim Demaille.

benjamin

Re: linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Benjamin Lindner wrote:

> John W. Eaton wrote:
>> I made this change.
>>
>> It would be helpful if people building Octave on Windows and OS X
>> systems could configure and build the latest Octave sources on and
>> send a list of symbols that are unresolved when creating the libcruft,
>> liboctave, liboctinterp shared libraries, when linking the Octave
>> executable file, and when building the .oct files.
>>
>
> On mingw32/msys, calling ./autogen.sh now displays
>
> calling autoconf and autoheader...
> /octmgw32/octave/octave-3.3.x
> configure.in:40: error: possibly undefined macro: AC_DEFINE
>       If this token and others are legitimate, please use m4_pattern_allow.
>       See the Autoconf documentation.
> configure.in:63: error: possibly undefined macro: AS_HELP_STRING
> configure.in:617: error: possibly undefined macro: AC_LANG_PUSH
> configure.in:665: error: possibly undefined macro: AC_LANG_POP
> configure:1511: error: possibly undefined macro: m4_ifblank
> configure:9276: error: possibly undefined macro: m4_ifnblank
> configure:9479: error: possibly undefined macro: m4_toupper
> /octmgw32/octave/octave-3.3.x/scripts
> skipping autoheader in ./scripts
> done
>
> and a subsequent call to ./configure fails with
>
> checking for sin in -lm... yes
> /octmgw32/octave/octave-3.3.x/configure: line 9276: syntax error near
> unexpected token `,'
> /octmgw32/octave/octave-3.3.x/configure: line 9276: `    m4_ifnblank(,
> AC_LANG_PUSH())'
>
> ?
>
> $ autoconf --version
> autoconf (GNU Autoconf) 2.61
> Copyright (C) 2006 Free Software Foundation, Inc.
> This is free software.  You may redistribute copies of it under the
> terms of
> the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
> There is NO WARRANTY, to the extent permitted by law.
>
> Written by David J. MacKenzie and Akim Demaille.
>
> $ autoheader --version
> autoheader (GNU Autoconf) 2.61
> Copyright (C) 2006 Free Software Foundation, Inc.
> This is free software.  You may redistribute copies of it under the
> terms of
> the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
> There is NO WARRANTY, to the extent permitted by law.
>
> Written by Roland McGrath and Akim Demaille.
>
> benjamin
>

I also tried with updated versions of msys and tools, but the same
errors occur.

$ autoheader --version
autoheader (GNU Autoconf) 2.63
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later
<http://gnu.org/licenses/old-licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Roland McGrath and Akim Demaille.

$ automake --version
automake (GNU automake) 1.11
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later
<http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Tom Tromey <tromey@...>
        and Alexandre Duret-Lutz <adl@...>.

benjamin

Re: linking liboctave fails (lapack missing?)

by Thomas Treichl :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Benjamin Lindner schrieb:

> I also tried with updated versions of msys and tools, but the same
> errors occur.
>
> $ autoheader --version
> autoheader (GNU Autoconf) 2.63
> Copyright (C) 2008 Free Software Foundation, Inc.
> License GPLv2+: GNU GPL version 2 or later
> <http://gnu.org/licenses/old-licenses/gpl-2.0.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
>
> Written by Roland McGrath and Akim Demaille.
>
> $ automake --version
> automake (GNU automake) 1.11
> Copyright (C) 2009 Free Software Foundation, Inc.
> License GPLv2+: GNU GPL version 2 or later
> <http://gnu.org/licenses/gpl-2.0.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
>
> Written by Tom Tromey <tromey@...>
>        and Alexandre Duret-Lutz <adl@...>.
>
> benjamin

The problems do come somewhere from inside of "m4_ifnblank", "m4_ifblank" and
"m4_toupper" in file aclocal.m4 and macro OCTAVE_CHECK_LIBRARY. It seems that
these functions don't like any of AC_DEFINE, AC_LANG_POP etc. as an argument,
but I don't get it corrected...

Best regards
   Thomas

Re: linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thomas Treichl wrote:

> Benjamin Lindner schrieb:
>> I also tried with updated versions of msys and tools, but the same
>> errors occur.
>>
>> $ autoheader --version
>> autoheader (GNU Autoconf) 2.63
>> Copyright (C) 2008 Free Software Foundation, Inc.
>> License GPLv2+: GNU GPL version 2 or later
>> <http://gnu.org/licenses/old-licenses/gpl-2.0.html>
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law.
>>
>> Written by Roland McGrath and Akim Demaille.
>>
>> $ automake --version
>> automake (GNU automake) 1.11
>> Copyright (C) 2009 Free Software Foundation, Inc.
>> License GPLv2+: GNU GPL version 2 or later
>> <http://gnu.org/licenses/gpl-2.0.html>
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law.
>>
>> Written by Tom Tromey <tromey@...>
>>        and Alexandre Duret-Lutz <adl@...>.
>>
>> benjamin
>
> The problems do come somewhere from inside of "m4_ifnblank",
> "m4_ifblank" and "m4_toupper" in file aclocal.m4 and macro
> OCTAVE_CHECK_LIBRARY. It seems that these functions don't like any of
> AC_DEFINE, AC_LANG_POP etc. as an argument, but I don't get it corrected...
>

As a wild guess, can it have something to do with the version of perl or
m4 used?

$ perl --version
This is perl, v5.6.1 built for msys
$ m4 --version
GNU M4 1.4.7

benjamin

Re: linking liboctave fails (lapack missing?)

by Thomas Treichl :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Benjamin Lindner schrieb:

> Thomas Treichl wrote:
>> Benjamin Lindner schrieb:
>>> I also tried with updated versions of msys and tools, but the same
>>> errors occur.
>>>
>>> $ autoheader --version
>>> autoheader (GNU Autoconf) 2.63
>>> Copyright (C) 2008 Free Software Foundation, Inc.
>>> License GPLv2+: GNU GPL version 2 or later
>>> <http://gnu.org/licenses/old-licenses/gpl-2.0.html>
>>> This is free software: you are free to change and redistribute it.
>>> There is NO WARRANTY, to the extent permitted by law.
>>>
>>> Written by Roland McGrath and Akim Demaille.
>>>
>>> $ automake --version
>>> automake (GNU automake) 1.11
>>> Copyright (C) 2009 Free Software Foundation, Inc.
>>> License GPLv2+: GNU GPL version 2 or later
>>> <http://gnu.org/licenses/gpl-2.0.html>
>>> This is free software: you are free to change and redistribute it.
>>> There is NO WARRANTY, to the extent permitted by law.
>>>
>>> Written by Tom Tromey <tromey@...>
>>>        and Alexandre Duret-Lutz <adl@...>.
>>>
>>> benjamin
>>
>> The problems do come somewhere from inside of "m4_ifnblank",
>> "m4_ifblank" and "m4_toupper" in file aclocal.m4 and macro
>> OCTAVE_CHECK_LIBRARY. It seems that these functions don't like any of
>> AC_DEFINE, AC_LANG_POP etc. as an argument, but I don't get it
>> corrected...
>>
>
> As a wild guess, can it have something to do with the version of perl or
> m4 used?
>
> $ perl --version
> This is perl, v5.6.1 built for msys
> $ m4 --version
> GNU M4 1.4.7
>
> benjamin
>

I don't know Benjamin, mine are not very much newer:

MacMini:~/Development/octave Me$ perl --version
This is perl, v5.8.6 built for darwin-thread-multi-2level
(with 5 registered patches, see perl -V for more detail)

Copyright 1987-2004, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

MacMini:~/Development/octave Me$ m4 --version
m4 (GNU M4) 1.4.11
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Rene' Seindal.

Anybody seeing those configure problems on Linux?

Re: linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Benjamin Lindner wrote:

> Thomas Treichl wrote:
>> Benjamin Lindner schrieb:
>>> I also tried with updated versions of msys and tools, but the same
>>> errors occur.
>>>
>>> $ autoheader --version
>>> autoheader (GNU Autoconf) 2.63
>>> Copyright (C) 2008 Free Software Foundation, Inc.
>>> License GPLv2+: GNU GPL version 2 or later
>>> <http://gnu.org/licenses/old-licenses/gpl-2.0.html>
>>> This is free software: you are free to change and redistribute it.
>>> There is NO WARRANTY, to the extent permitted by law.
>>>
>>> Written by Roland McGrath and Akim Demaille.
>>>
>>> $ automake --version
>>> automake (GNU automake) 1.11
>>> Copyright (C) 2009 Free Software Foundation, Inc.
>>> License GPLv2+: GNU GPL version 2 or later
>>> <http://gnu.org/licenses/gpl-2.0.html>
>>> This is free software: you are free to change and redistribute it.
>>> There is NO WARRANTY, to the extent permitted by law.
>>>
>>> Written by Tom Tromey <tromey@...>
>>>        and Alexandre Duret-Lutz <adl@...>.
>>>
>>> benjamin
>>
>> The problems do come somewhere from inside of "m4_ifnblank",
>> "m4_ifblank" and "m4_toupper" in file aclocal.m4 and macro
>> OCTAVE_CHECK_LIBRARY. It seems that these functions don't like any of
>> AC_DEFINE, AC_LANG_POP etc. as an argument, but I don't get it
>> corrected...
>>
>
> As a wild guess, can it have something to do with the version of perl or
> m4 used?
>
> $ perl --version
> This is perl, v5.6.1 built for msys
> $ m4 --version
> GNU M4 1.4.7
>

Too wild a guess,
the macro m4_ifnblank has been introduced in version 2.64.
there is only 2.63 available on msys, so no wonder it fails, sigh

benjamin



Re: linking liboctave fails (lapack missing?)

by Thomas Treichl :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Benjamin Lindner schrieb:

> Benjamin Lindner wrote:
>> Thomas Treichl wrote:
>>> Benjamin Lindner schrieb:
>>>> I also tried with updated versions of msys and tools, but the same
>>>> errors occur.
>>>>
>>>> $ autoheader --version
>>>> autoheader (GNU Autoconf) 2.63
>>>> Copyright (C) 2008 Free Software Foundation, Inc.
>>>> License GPLv2+: GNU GPL version 2 or later
>>>> <http://gnu.org/licenses/old-licenses/gpl-2.0.html>
>>>> This is free software: you are free to change and redistribute it.
>>>> There is NO WARRANTY, to the extent permitted by law.
>>>>
>>>> Written by Roland McGrath and Akim Demaille.
>>>>
>>>> $ automake --version
>>>> automake (GNU automake) 1.11
>>>> Copyright (C) 2009 Free Software Foundation, Inc.
>>>> License GPLv2+: GNU GPL version 2 or later
>>>> <http://gnu.org/licenses/gpl-2.0.html>
>>>> This is free software: you are free to change and redistribute it.
>>>> There is NO WARRANTY, to the extent permitted by law.
>>>>
>>>> Written by Tom Tromey <tromey@...>
>>>>        and Alexandre Duret-Lutz <adl@...>.
>>>>
>>>> benjamin
>>>
>>> The problems do come somewhere from inside of "m4_ifnblank",
>>> "m4_ifblank" and "m4_toupper" in file aclocal.m4 and macro
>>> OCTAVE_CHECK_LIBRARY. It seems that these functions don't like any of
>>> AC_DEFINE, AC_LANG_POP etc. as an argument, but I don't get it
>>> corrected...
>>>
>>
>> As a wild guess, can it have something to do with the version of perl
>> or m4 used?
>>
>> $ perl --version
>> This is perl, v5.6.1 built for msys
>> $ m4 --version
>> GNU M4 1.4.7
>>
>
> Too wild a guess,
> the macro m4_ifnblank has been introduced in version 2.64.
> there is only 2.63 available on msys, so no wonder it fails, sigh
>
> benjamin

Ha, true ;o)
This fixes all the ./autogen.sh problems. There is no error left anymore,
so AC_PREREQ(2.60) of configure.in should be changed to AC_PREREQ(2.64).

Best regards

   Thomas

Re: linking liboctave fails (lapack missing?)

by Thomas Treichl :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

John W. Eaton schrieb:
> It would be helpful if people building Octave on Windows and OS X
> systems could configure and build the latest Octave sources on and
> send a list of symbols that are unresolved when creating the libcruft,
> liboctave, liboctinterp shared libraries, when linking the Octave
> executable file, and when building the .oct files.

Here are the results for OS X (currently I cannot tell you anything about the
CURL and GLPK dependencies - these libs are not found by ./configure at the
moment - seems because of missing -lz in the test procedure):

   libcruft.dylib, liboctave.dylib: no unresolved symbols

   liboctinterp.dylib: (cf. attached file liboctave_symbols.txt.gz)
     for manual compilation I needed to add

     -L../libcruft -lcruft -lreadline -lfftw3 -lfftw3f -lexpat

   octave: (cf. attached file liboctave_symbols.txt.gz)
     for manual compilation I needed to add

     -lz -lhdf5 -lreadline -lfreetype -lfontconfig -lfftw3 -lfftw3f -lexpat

   dld files: (cf. attached file liboctave_symbols.txt.gz)

Thomas




liboctinterp_symbols.txt.gz (2K) Download Attachment
octave_symbols.txt.gz (1K) Download Attachment
dldfiles_symbols.txt.gz (42K) Download Attachment

Re: linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

John W. Eaton wrote:

> On 13-Aug-2009, Benjamin Lindner wrote:
>
> | Benjamin Lindner wrote:
> | > Benjamin Lindner wrote:
> | >> Hello,
> | >>
> | >> I just tried to build the recent development tip on mingw32 and
> | >> building fails at linking liboctave with a phletora of missing symbols
> | >> from the lapack library.
> | >>
> | >> looking at the linker command I see that indeed there is no -llapack
> | >> present.
> | >>
> | >> Digging the changelog I find that at revision 9490:3aeb7d881578
> | >> $(BLAS_LIBS) has been removed from LINK_DEPS in liboctave/makefile.in
> | >>
> | >> I guess it should still be there, since arpack, qrupdate and quite
> | >> some octave code depends on it.
> | >>
> | >
> | > I see that there is already a thread covering this topic on the bugs
> | > list. Sorry for the double-post.
> | >
> | > Hovever, liboctave directly uses functinos from lapack, and uses the
> | > qrupdate and qrpack library which both depend on lapack, so lapack
> | > *should* be listed in LINK_DEPS.
> | >
> |
> | The attached changeset fixes the linker issues for mingw32 platform by
> | adding $(BLAS_LIBS) in liboctave's link depencendies.
>
> I made this change.
>
> It would be helpful if people building Octave on Windows and OS X
> systems could configure and build the latest Octave sources on and
> send a list of symbols that are unresolved when creating the libcruft,
> liboctave, liboctinterp shared libraries, when linking the Octave
> executable file, and when building the .oct files.
Ok, with Jaroslavs changeset
http://hg.savannah.gnu.org/hgweb/octave/rev/691545147aca
configure completes.

However the build immediately fails at octave-bug.c with

octave-bug.cc: In function 'int main(int, char**)':
octave-bug.cc:102: error: expected primary-expression before '%' token
octave-bug.cc:102: error: 'OCTAVE_CONF_FFTW_LIBS' was not declared in
this scope
octave-bug.cc:102: error: expected primary-expression before ';' token


Looking at the source of octave-bug.c at line 102 I find

    vars["FFTW_LIBS"] = %OCTAVE_CONF_FFTW_LIBS%;

This looks like a missing replacement of conigure-time settings.
The same goes for mkoctfile.cc.in

BTW the shell script versions of octave-bug and mkoctfile will also need
patching.


--- a/mkoctfile.cc.in   Sat Aug 15 10:02:51 2009 +0200
+++ b/mkoctfile.cc.in   Sat Aug 15 10:17:55 2009 +0200
@@ -224,7 +224,7 @@
     vars["READLINE_LIBS"] = "-lreadline";
     vars["LIBCRUFT"] = "-lcruft";
     vars["BLAS_LIBS"] = get_variable ("BLAS_LIBS",
%OCTAVE_CONF_BLAS_LIBS%);
-  vars["FFTW_LIBS"] = get_variable ("FFTW_LIBS", %OCTAVE_CONF_FFTW_LIBS%);
+  vars["FFTW_LIBS"] = get_variable ("FFTW_LIBS", %OCTAVE_CONF_FFTW3_LIBS%);
     vars["LIBS"] = get_variable ("LIBS", %OCTAVE_CONF_LIBS%);
     vars["CXXLIBS"] = get_variable ("CXXLIBS", %OCTAVE_CONF_CXXLIBS%);
     vars["FLIBS"] = get_variable ("FLIBS", %OCTAVE_CONF_FLIBS%);
diff -r 3f6b1f9238d3 octave-bug.cc.in
--- a/octave-bug.cc.in  Sat Aug 15 10:02:51 2009 +0200
+++ b/octave-bug.cc.in  Sat Aug 15 10:17:55 2009 +0200
@@ -99,7 +99,7 @@
     vars["RLD_FLAG"] = %OCTAVE_CONF_RLD_FLAG%;
     vars["LIBS"] = %OCTAVE_CONF_LIBS%;
     vars["BLAS_LIBS"] = %OCTAVE_CONF_BLAS_LIBS%;
-  vars["FFTW_LIBS"] = %OCTAVE_CONF_FFTW_LIBS%;
+  vars["FFTW_LIBS"] = %OCTAVE_CONF_FFTW3_LIBS%;
     vars["LEXLIB"] = %OCTAVE_CONF_LEXLIB%;
     vars["LIBGLOB"] = %OCTAVE_CONF_LIBGLOB%;
     vars["DEFS"] = %OCTAVE_CONF_DEFS%;

However, I see that many new configure-time variables have been
introduced, and thus octave-bug and mkoctfile and their .c counterparts
need to be updated.

This is I guess best done when the configure changes have settled.



Now for the undefined reference linker errors:
Linking libcruft.dll and liboctave.dll succeed.

Linking liboctinterp.dll fails with the missing symbols attached: (I
omitted double errors in the same object file, otherwise the list is
*really* long and does not contain additional information):

The first group stems from $(LIBCRUFT) missing as link dependency.

The second group stems from missing
    -lgdi32 (GetDeviceCaps)
    -liberty (mkstemps)
The first is the windows system GDI library and the second is the
mingw/gcc support library.
Both are added to $LIBS during configure stage for the mingw platform

The third group stems from $(FLIBS) missing as link dependency.

To link successfully I have to do

OCTINTERP_LINK_DEPS = $(RLD_FLAG) -L../liboctave $(LIBOCTAVE)
-L../libcruft $(LIBCRUFT) \
    $(HDF5_LIBS) $(ZLIB_LIBS) $(X11_LIBS) $(OPENGL_LIBS) $(CARBON_LIBS) \
    $(LIBS) $(FLIBS)




Now for DLD-functions:

Here the undefined reference list is even longer. I attached the full
output.

I need to add $(LIBOCTAVE) to OCT_LINK_DEPS, i.e.

OCT_LINK_DEPS = $(RLD_FLAG) -L../liboctave $(LIBOCTAVE) -L. $(LIBOCTINTERP)

then the link errors reduce to (exemplary)

cellfun.o:cellfun.cc:(.text+0x2d95): undefined reference to
`octave_signal_caught'
cellfun.o:cellfun.cc:(.text+0x2da4): undefined reference to
`octave_handle_signal'

which indicates again that $(LIBCRUFT) is missing.
Changing to

OCT_LINK_DEPS = $(RLD_FLAG) -L../libcruft $(LIBCRUFT) -L../liboctave
$(LIBOCTAVE) -L. $(LIBOCTINTERP)

fixes it.



Then I get the errors attached in dld-link-errors-2.txt:
I need the following changes for successful linking

chol.oct: OCT_LINK_DEPS += $(QRUPDATE_LDFLAGS) $(QRUPDATE_LIBS)
$(CHOLMOD_LIBS)
(add $(CHOLMOD_LIBS))

eigs.oct: OCT_LINK_DEPS += $(ARPACK_LDFLAGS) $(ARPACK_LIBS)
$(CHOLMOD_LIBS) $(BLAS_LIBS)
(add $(CHOLMOD_LIBS) $(BLAS_LIBS))


ccolamd.oct : OCT_LINK_DEPS += $(CCOLAMD_LIBS)

qz.oct : OCT_LINK_DEPS += $(BLAS_LIBS)

symbfact.oct : OCT_LINK_DEPS += $(CHOLMOD_LIBS)


benjamin




data.o:data.cc:(.text+0x111): undefined reference to `octave_signal_caught'
debug.o:debug.cc:(.text+0x3d40): undefined reference to `octave_throw_interrupt_exception'
gl-render.o:gl-render.cc:(.text+0x46e2): undefined reference to `current_liboctave_error_handler'
graphics.o:graphics.cc:(.text+0x46856): undefined reference to `octave_interrupt_immediately'
graphics.o:graphics.cc:(.text+0x47228): undefined reference to `octave_exception_state'
graphics.o:graphics.cc:(.text+0x47237): undefined reference to `octave_jump_to_enclosing_context'
gripes.o:gripes.cc:(.text+0x9d): undefined reference to `octave_exception_state'
input.o:input.cc:(.text+0x827): undefined reference to `octave_signal_caught'
input.o:input.cc:(.text+0x96b): undefined reference to `octave_handle_signal'
lex.o:lex.cc:(.text+0x6b3): undefined reference to `octave_signal_caught'
lex.o:lex.cc:(.text+0x6bc): undefined reference to `octave_handle_signal'
ls-mat-ascii.o:ls-mat-ascii.cc:(.text+0xabf): undefined reference to `octave_signal_caught'
ls-mat-ascii.o:ls-mat-ascii.cc:(.text+0xac8): undefined reference to `octave_handle_signal'
ls-mat5.o:ls-mat5.cc:(.text+0x260): undefined reference to `current_liboctave_error_handler'
oct-stream.o:oct-stream.cc:(.text+0x7acf): undefined reference to `octave_signal_caught'
oct-stream.o:oct-stream.cc:(.text+0x7ad8): undefined reference to `octave_handle_signal'
oct-stream.o:oct-stream.cc:(.text$_ZN13octave_stream5writeI10octave_intIyEEEiRK5ArrayIT_EiN13oct_data_conv9data_typeEiN13oct_mach_info12float_formatE[int octave_stream::write<octave_int<unsigned long long> >(Array<octave_int<unsigned long long> > const&, int, oct_data_conv::data_type, int, oct_mach_info::float_format)]+0xae): undefined reference to `current_liboctave_error_handler'
octave.o:octave.cc:(.text+0xa9): undefined reference to `octave_throw_execution_exception'
octave.o:octave.cc:(.text+0x1a1): undefined reference to `octave_save_signal_mask'
octave.o:octave.cc:(.text+0x1ae): undefined reference to `octave_signal_hook'
octave.o:octave.cc:(.text+0x1b8): undefined reference to `octave_interrupt_hook'
octave.o:octave.cc:(.text+0x1c2): undefined reference to `octave_bad_alloc_hook'
octave.o:octave.cc:(.text+0x310f): undefined reference to `set_liboctave_error_handler'
octave.o:octave.cc:(.text+0x311b): undefined reference to `set_liboctave_warning_handler'
octave.o:octave.cc:(.text+0x3127): undefined reference to `set_liboctave_warning_with_id_handler'
pr-output.o:pr-output.cc:(.text+0x1cb4): undefined reference to `octave_signal_caught'
pr-output.o:pr-output.cc:(.text+0x1cbd): undefined reference to `octave_handle_signal'
sighandlers.o:sighandlers.cc:(.text+0xa90): undefined reference to `octave_interrupt_immediately'
sighandlers.o:sighandlers.cc:(.text+0xaab): undefined reference to `octave_interrupt_state'
sighandlers.o:sighandlers.cc:(.text+0xab1): undefined reference to `octave_signal_caught'
sighandlers.o:sighandlers.cc:(.text+0xbda): undefined reference to `octave_jump_to_enclosing_context'
sighandlers.o:sighandlers.cc:(.text+0xc18): undefined reference to `w32_raise'
sighandlers.o:sighandlers.cc:(.text+0xc5b): undefined reference to `w32_in_main_thread'
sighandlers.o:sighandlers.cc:(.text+0xc6c): undefined reference to `w32_raise'
sparse-xdiv.o:sparse-xdiv.cc:(.text+0x4a6): undefined reference to `octave_signal_caught'
sparse-xdiv.o:sparse-xdiv.cc:(.text+0x4af): undefined reference to `octave_handle_signal'
sparse-xpow.o:sparse-xpow.cc:(.text+0x252): undefined reference to `octave_signal_caught'
sparse-xpow.o:sparse-xpow.cc:(.text+0x25b): undefined reference to `octave_handle_signal'
sysdep.o:sysdep.cc:(.text+0x49a): undefined reference to `w32_sigint_init'
sysdep.o:sysdep.cc:(.text+0x2ad): undefined reference to `w32_raise_final'
toplev.o:toplev.cc:(.text+0x1bf): undefined reference to `octave_interrupt_immediately'
toplev.o:toplev.cc:(.text+0x1c9): undefined reference to `octave_interrupt_state'
toplev.o:toplev.cc:(.text+0x1d3): undefined reference to `octave_signal_caught'
toplev.o:toplev.cc:(.text+0x1dd): undefined reference to `octave_exception_state'
toplev.o:toplev.cc:(.text+0x1e6): undefined reference to `octave_restore_signal_mask'
toplev.o:toplev.cc:(.text+0x20da): undefined reference to `octave_save_signal_mask'
toplev.o:toplev.cc:(.text+0x20e7): undefined reference to `octave_signal_hook'
toplev.o:toplev.cc:(.text+0x20f1): undefined reference to `octave_interrupt_hook'
toplev.o:toplev.cc:(.text+0x20fb): undefined reference to `octave_bad_alloc_hook'
toplev.o:toplev.cc:(.text+0x241d): undefined reference to `octave_handle_signal'
toplev.o:toplev.cc:(.text+0x3d0f): undefined reference to `octave_throw_interrupt_exception'
utils.o:utils.cc:(.text+0x1bc): undefined reference to `octave_save_current_context'
utils.o:utils.cc:(.text+0x1c3): undefined reference to `current_context'
utils.o:utils.cc:(.text+0x1d9): undefined reference to `octave_interrupt_immediately'
utils.o:utils.cc:(.text+0x20f): undefined reference to `octave_restore_current_context'
utils.o:utils.cc:(.text+0x2e3): undefined reference to `octave_rethrow_exception'
utils.o:utils.cc:(.text+0x2f5): undefined reference to `octave_interrupt_immediately'
xdiv.o:xdiv.cc:(.text+0x1cc): undefined reference to `octave_signal_caught'
xdiv.o:xdiv.cc:(.text+0x1d5): undefined reference to `octave_handle_signal'
ov-re-mat.o:ov-re-mat.cc:(.text+0x2ae): undefined reference to `octave_signal_caught'
ov-re-mat.o:ov-re-mat.cc:(.text+0x2b7): undefined reference to `octave_handle_signal'
ov-cx-mat.o:ov-cx-mat.cc:(.text+0x17c1): undefined reference to `octave_signal_caught'
ov-cx-mat.o:ov-cx-mat.cc:(.text+0x17ca): undefined reference to `octave_handle_signal'
ov-cell.o:ov-cell.cc:(.text+0x7ec2): undefined reference to `octave_signal_caught'
ov-cell.o:ov-cell.cc:(.text+0x7ecb): undefined reference to `octave_handle_signal'
ov-flt-re-mat.o:ov-flt-re-mat.cc:(.text+0x2f7): undefined reference to `octave_signal_caught'
ov-flt-re-mat.o:ov-flt-re-mat.cc:(.text+0x300): undefined reference to `octave_handle_signal'
ov-flt-cx-mat.o:ov-flt-cx-mat.cc:(.text+0x4221): undefined reference to `octave_handle_signal'
ov-flt-cx-mat.o:ov-flt-cx-mat.cc:(.text+0x4359): undefined reference to `octave_signal_caught'
ov-int8.o:ov-int8.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIaEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<signed char> > >::convert_to_str_internal(bool, bool, char) const]+0x207): undefined reference to `octave_signal_caught'
ov-int8.o:ov-int8.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIaEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<signed char> > >::convert_to_str_internal(bool, bool, char) const]+0x210): undefined reference to `octave_handle_signal'
ov-int16.o:ov-int16.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIsEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<short> > >::convert_to_str_internal(bool, bool, char) const]+0xfd): undefined reference to `octave_signal_caught'
ov-int16.o:ov-int16.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIsEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<short> > >::convert_to_str_internal(bool, bool, char) const]+0x106): undefined reference to `octave_handle_signal'
ov-int32.o:ov-int32.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIiEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<int> > >::convert_to_str_internal(bool, bool, char) const]+0xfd): undefined reference to `octave_signal_caught'
ov-int32.o:ov-int32.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIiEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<int> > >::convert_to_str_internal(bool, bool, char) const]+0x106): undefined reference to `octave_handle_signal'
ov-int64.o:ov-int64.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIxEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<long long> > >::convert_to_str_internal(bool, bool, char) const]+0x202): undefined reference to `octave_signal_caught'
ov-int64.o:ov-int64.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIxEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<long long> > >::convert_to_str_internal(bool, bool, char) const]+0x20b): undefined reference to `octave_handle_signal'
ov-uint8.o:ov-uint8.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIhEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<unsigned char> > >::convert_to_str_internal(bool, bool, char) const]+0xc2): undefined reference to `octave_signal_caught'
ov-uint8.o:ov-uint8.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIhEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<unsigned char> > >::convert_to_str_internal(bool, bool, char) const]+0xcb): undefined reference to `octave_handle_signal'
ov-uint16.o:ov-uint16.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intItEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<unsigned short> > >::convert_to_str_internal(bool, bool, char) const]+0xfd): undefined reference to `octave_signal_caught'
ov-uint16.o:ov-uint16.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intItEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<unsigned short> > >::convert_to_str_internal(bool, bool, char) const]+0x106): undefined reference to `octave_handle_signal'
v-uint32.o:ov-uint32.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIjEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<unsigned int> > >::convert_to_str_internal(bool, bool, char) const]+0xfd): undefined reference to `octave_signal_caught'
ov-uint32.o:ov-uint32.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIjEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<unsigned int> > >::convert_to_str_internal(bool, bool, char) const]+0x106): undefined reference to `octave_handle_signal'
ov-uint64.o:ov-uint64.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIyEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<unsigned long long> > >::convert_to_str_internal(bool, bool, char) const]+0x202): undefined reference to `octave_signal_caught'
ov-uint64.o:ov-uint64.cc:(.text$_ZNK22octave_base_int_matrixI10intNDArrayI10octave_intIyEEE23convert_to_str_internalEbbc[octave_base_int_matrix<intNDArray<octave_int<unsigned long long> > >::convert_to_str_internal(bool, bool, char) const]+0x20b): undefined reference to `octave_handle_signal'
ov-bool-sparse.o:ov-bool-sparse.cc:(.text+0x1feb): undefined reference to `octave_signal_caught'
ov-bool-sparse.o:ov-bool-sparse.cc:(.text+0x1ff4): undefined reference to `octave_handle_signal'
ov-cx-sparse.o:ov-cx-sparse.cc:(.text+0x2063): undefined reference to `octave_signal_caught'
ov-cx-sparse.o:ov-cx-sparse.cc:(.text+0x206c): undefined reference to `octave_handle_signal'
ov-re-sparse.o:ov-re-sparse.cc:(.text+0x710): undefined reference to `octave_signal_caught'
ov-re-sparse.o:ov-re-sparse.cc:(.text+0x719): undefined reference to `octave_handle_signal'
pt-eval.o:pt-eval.cc:(.text+0x5a7): undefined reference to `octave_signal_caught'
pt-eval.o:pt-eval.cc:(.text+0x5b0): undefined reference to `octave_interrupt_immediately'
pt-eval.o:pt-eval.cc:(.text+0x5b9): undefined reference to `octave_interrupt_state'
pt-eval.o:pt-eval.cc:(.text+0x5f0): undefined reference to `octave_handle_signal'
pt-mat.o:pt-mat.cc:(.text+0x200): undefined reference to `octave_signal_caught'
pt-mat.o:pt-mat.cc:(.text+0x209): undefined reference to `octave_handle_signal'
op-i8-i8.o:op-i8-i8.cc:(.text+0x1168b): undefined reference to `octave_signal_caught'
op-i8-i8.o:op-i8-i8.cc:(.text+0x11694): undefined reference to `octave_handle_signal'
op-i16-i16.o:op-i16-i16.cc:(.text+0x116ff): undefined reference to `octave_signal_caught'
op-i16-i16.o:op-i16-i16.cc:(.text+0x11708): undefined reference to `octave_handle_signal'
op-i32-i32.o:op-i32-i32.cc:(.text+0x12093): undefined reference to `octave_signal_caught'
op-i32-i32.o:op-i32-i32.cc:(.text+0x1209c): undefined reference to `octave_handle_signal'
op-i64-i64.o:op-i64-i64.cc:(.text+0x1189e): undefined reference to `octave_signal_caught'
op-i64-i64.o:op-i64-i64.cc:(.text+0x118a7): undefined reference to `octave_handle_signal'
op-ui8-ui8.o:op-ui8-ui8.cc:(.text+0x1280b): undefined reference to `octave_signal_caught'
op-ui8-ui8.o:op-ui8-ui8.cc:(.text+0x12814): undefined reference to `octave_handle_signal'
op-ui16-ui16.o:op-ui16-ui16.cc:(.text+0x13f7f): undefined reference to `octave_signal_caught'
op-ui16-ui16.o:op-ui16-ui16.cc:(.text+0x13f88): undefined reference to `octave_handle_signal'
op-ui32-ui32.o:op-ui32-ui32.cc:(.text+0x1405b): undefined reference to `octave_signal_caught'
op-ui32-ui32.o:op-ui32-ui32.cc:(.text+0x14064): undefined reference to `octave_handle_signal'
op-ui64-ui64.o:op-ui64-ui64.cc:(.text+0x1603e): undefined reference to `octave_signal_caught'
op-ui64-ui64.o:op-ui64-ui64.cc:(.text+0x16047): undefined reference to `octave_handle_signal'
Array-os.o:Array-os.cc:(.text+0xf): undefined reference to `current_liboctave_error_handler'

display.o:display.cc:(.text+0x4a): undefined reference to `GetDeviceCaps@8'
file-io.o:file-io.cc:(.text+0x8bfd): undefined reference to `mkstemps'

../libcruft/blas-xtra/xerbla.o:xerbla.f:(.text+0x50): undefined reference to `_gfortran_st_write'
../libcruft/blas-xtra/xerbla.o:xerbla.f:(.text+0x67): undefined reference to `_gfortran_transfer_character'
../libcruft/blas-xtra/xerbla.o:xerbla.f:(.text+0x7e): undefined reference to `_gfortran_transfer_integer'
../libcruft/blas-xtra/xerbla.o:xerbla.f:(.text+0x86): undefined reference to `_gfortran_st_write_done'
../libcruft/blas-xtra/xerbla.o:xerbla.f:(.text+0x9a): undefined reference to `xstopx_'

chol.o:chol.cc:(.text$_ZN10SparseCHOLD1Ev[SparseCHOL::~SparseCHOL()]+0x3d): undefined reference to `cholmod_free_sparse'
chol.o:chol.cc:(.text$_ZN17SparseComplexCHOLD1Ev[SparseComplexCHOL::~SparseComplexCHOL()]+0x3d): undefined reference to `cholmod_free_sparse'

ccolamd.o:ccolamd.cc:(.text+0x690): undefined reference to `ccolamd_set_defaults'
ccolamd.o:ccolamd.cc:(.text+0x13b2): undefined reference to `csymamd_report'
ccolamd.o:ccolamd.cc:(.text+0x14cc): undefined reference to `csymamd'
ccolamd.o:ccolamd.cc:(.text+0x14e2): undefined reference to `csymamd_report'
ccolamd.o:ccolamd.cc:(.text+0x165a): undefined reference to `csymamd'
ccolamd.o:ccolamd.cc:(.text+0x1670): undefined reference to `csymamd_report'
ccolamd.o:ccolamd.cc:(.text+0x1c50): undefined reference to `ccolamd_set_defaults'
ccolamd.o:ccolamd.cc:(.text+0x23a3): undefined reference to `ccolamd_recommended'
ccolamd.o:ccolamd.cc:(.text+0x26ba): undefined reference to `ccolamd_report'
ccolamd.o:ccolamd.cc:(.text+0x2b45): undefined reference to `ccolamd'
ccolamd.o:ccolamd.cc:(.text+0x2b5b): undefined reference to `ccolamd_report'
ccolamd.o:ccolamd.cc:(.text+0x2d97): undefined reference to `ccolamd'
ccolamd.o:ccolamd.cc:(.text+0x2dad): undefined reference to `ccolamd_report'

eigs.o:eigs.cc:(.text+0x7ec): undefined reference to `zgemv_'
eigs.o:eigs.cc:(.text+0xc04): undefined reference to `cholmod_free_sparse'
eigs.o:eigs.cc:(.text+0x1dd6): undefined reference to `dgemv_'
eigs.o:eigs.cc:(.text$_ZN17SparseComplexCHOLD1Ev[SparseComplexCHOL::~SparseComplexCHOL()]+0x3d): undefined reference to `cholmod_free_sparse'
eigs.o:eigs.cc:(.text$_ZN10SparseCHOLD1Ev[SparseCHOL::~SparseCHOL()]+0x3d): undefined reference to `cholmod_free_sparse'
eigs.o:eigs.cc:(.text$_Z29EigsComplexNonSymmetricMatrixI19SparseComplexMatrixEiRKT_SsiiRiR13ComplexMatrixR19ComplexColumnVectorS3_R12ColumnVectorS8_RSodibii[int EigsComplexNonSymmetricMatrix<SparseComplexMatrix>(SparseComplexMatrix const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int, int&, ComplexMatrix&, ComplexColumnVector&, SparseComplexMatrix const&, ColumnVector&, ComplexColumnVector&, std::basic_ostream<char, std::char_traits<char> >&, double, int, bool, int, int)]+0x1c28): undefined reference to `cholmod_free_sparse'

qz.o:qz.cc:(.text+0x2195): undefined reference to `dlag2_'
qz.o:qz.cc:(.text+0x23eb): undefined reference to `dhgeqz_'
qz.o:qz.cc:(.text+0x2659): undefined reference to `dgghrd_'
qz.o:qz.cc:(.text+0x2772): undefined reference to `dggbal_'
qz.o:qz.cc:(.text+0x2cb7): undefined reference to `dtgevc_'
qz.o:qz.cc:(.text+0x37d0): undefined reference to `dggbak_'
qz.o:qz.cc:(.text+0x3868): undefined reference to `dggbak_'

symbfact.o:symbfact.cc:(.text+0x403): undefined reference to `cholmod_start'
symbfact.o:symbfact.cc:(.text+0x4d6): undefined reference to `cholmod_divcomplex'
symbfact.o:symbfact.cc:(.text+0x4e0): undefined reference to `cholmod_hypot'
symbfact.o:symbfact.cc:(.text+0xb22): undefined reference to `cholmod_transpose'
symbfact.o:symbfact.cc:(.text+0xb5f): undefined reference to `cholmod_etree'
symbfact.o:symbfact.cc:(.text+0xba1): undefined reference to `cholmod_postorder'
symbfact.o:symbfact.cc:(.text+0xcda): undefined reference to `cholmod_rowcolcounts'
symbfact.o:symbfact.cc:(.text+0xef3): undefined reference to `cholmod_allocate_sparse'
symbfact.o:symbfact.cc:(.text+0xf59): undefined reference to `cholmod_row_subtree'
symbfact.o:symbfact.cc:(.text+0xfdc): undefined reference to `cholmod_free_sparse'


balance.o:balance.cc:(.text+0x880): undefined reference to `Array<double>::get_size(dim_vector const&)'
balance.o:balance.cc:(.text+0x941): undefined reference to `Array<std::complex<double> >::get_size(dim_vector const&)'
balance.o:balance.cc:(.text+0xa2b): undefined reference to `Array<float>::get_size(dim_vector const&)'
balance.o:balance.cc:(.text+0xb04): undefined reference to `Array<std::complex<float> >::get_size(dim_vector const&)'
balance.o:balance.cc:(.text+0xbf9): undefined reference to `Array<std::complex<float> >::operator=(Array<std::complex<float> > const&)'
balance.o:balance.cc:(.text+0xd7c): undefined reference to `FloatComplexAEPBALANCE::FloatComplexAEPBALANCE(FloatComplexMatrix const&, bool, bool)'
balance.o:balance.cc:(.text+0xd9e): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0xdc0): undefined reference to `Array<std::complex<float> >::Array(Array<std::complex<float> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0xe14): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0xe5f): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0xe9b): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0xeda): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0xf7d): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0xff9): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0x103f): more undefined references to `Array<float>::make_unique()' follow
balance.o:balance.cc:(.text+0x1204): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text+0x121c): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text+0x1234): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text+0x124c): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text+0x12b1): undefined reference to `Array<std::complex<double> >::operator=(Array<std::complex<double> > const&)'
balance.o:balance.cc:(.text+0x13cf): undefined reference to `Array<double>::operator=(Array<double> const&)'
balance.o:balance.cc:(.text+0x147f): undefined reference to `Array<float>::operator=(Array<float> const&)'
balance.o:balance.cc:(.text+0x1506): undefined reference to `ComplexAEPBALANCE::ComplexAEPBALANCE(ComplexMatrix const&, bool, bool)'
balance.o:balance.cc:(.text+0x1528): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x154a): undefined reference to `Array<std::complex<double> >::Array(Array<std::complex<double> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x159e): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x15ea): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x162a): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x166a): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x170e): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x178a): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x17d0): more undefined references to `Array<double>::make_unique()' follow
balance.o:balance.cc:(.text+0x1b34): undefined reference to `AEPBALANCE::AEPBALANCE(Matrix const&, bool, bool)'
balance.o:balance.cc:(.text+0x1b56): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x1bbb): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x1c0a): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x1c4a): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x1c8a): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x1d2e): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x1daa): undefined reference to `Array<double>::make_unique()'
balance.o:balance.cc:(.text+0x1df0): more undefined references to `Array<double>::make_unique()' follow
balance.o:balance.cc:(.text+0x1fbf): undefined reference to `FloatAEPBALANCE::FloatAEPBALANCE(FloatMatrix const&, bool, bool)'
balance.o:balance.cc:(.text+0x1fe1): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2043): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x208e): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0x20ca): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0x210a): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0x21ad): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0x2229): undefined reference to `Array<float>::make_unique()'
balance.o:balance.cc:(.text+0x226f): more undefined references to `Array<float>::make_unique()' follow
balance.o:balance.cc:(.text+0x24c3): undefined reference to `Array<std::complex<float> >::operator=(Array<std::complex<float> > const&)'
balance.o:balance.cc:(.text+0x2557): undefined reference to `FloatComplexGEPBALANCE::init(FloatComplexMatrix const&, FloatComplexMatrix const&, std::string const&)'
balance.o:balance.cc:(.text+0x2671): undefined reference to `Array<std::complex<double> >::operator=(Array<std::complex<double> > const&)'
balance.o:balance.cc:(.text+0x26f8): undefined reference to `ComplexGEPBALANCE::init(ComplexMatrix const&, ComplexMatrix const&, std::string const&)'
balance.o:balance.cc:(.text+0x273f): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x27a1): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x27af): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x27c7): undefined reference to `FloatAEPBALANCE::balancing_matrix() const'
balance.o:balance.cc:(.text+0x2814): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x2827): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x288c): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x289a): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x28b2): undefined reference to `AEPBALANCE::balancing_matrix() const'
balance.o:balance.cc:(.text+0x2902): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x2915): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2937): undefined reference to `Array<std::complex<float> >::Array(Array<std::complex<float> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x298b): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x2999): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x29b1): undefined reference to `FloatComplexAEPBALANCE::balancing_matrix() const'
balance.o:balance.cc:(.text+0x29fe): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x2a11): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2a33): undefined reference to `Array<std::complex<double> >::Array(Array<std::complex<double> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x2a87): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x2a95): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2aad): undefined reference to `ComplexAEPBALANCE::balancing_matrix() const'
balance.o:balance.cc:(.text+0x2afa): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x2b46): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2bb6): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2bd8): undefined reference to `Array<std::complex<float> >::Array(Array<std::complex<float> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x2c37): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2c59): undefined reference to `Array<std::complex<double> >::Array(Array<std::complex<double> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x2cad): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x2cc0): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2d64): undefined reference to `Array<double>::operator=(Array<double> const&)'
balance.o:balance.cc:(.text+0x2dde): undefined reference to `GEPBALANCE::init(Matrix const&, Matrix const&, std::string const&)'
balance.o:balance.cc:(.text+0x2e7b): undefined reference to `FloatGEPBALANCE::init(FloatMatrix const&, FloatMatrix const&, std::string const&)'
balance.o:balance.cc:(.text+0x2ef9): undefined reference to `Array<float>::operator=(Array<float> const&)'
balance.o:balance.cc:(.text+0x2f22): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2f87): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x2f95): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x2ffa): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3021): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x303d): undefined reference to `Array<std::complex<double> >::Array(Array<std::complex<double> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x3094): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x30a2): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x30c4): undefined reference to `Array<std::complex<double> >::Array(Array<std::complex<double> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x311b): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3129): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x318e): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x319c): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x320c): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x3271): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x327f): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x32e4): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3307): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x3366): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3374): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x33d9): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x33e7): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x344c): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x345a): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x34ca): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x352f): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x353d): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x35a2): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x35d0): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x35ec): undefined reference to `Array<std::complex<float> >::Array(Array<std::complex<float> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x3643): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3651): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x3673): undefined reference to `Array<std::complex<float> >::Array(Array<std::complex<float> > const&, dim_vector const&)'
balance.o:balance.cc:(.text+0x36ca): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x36d8): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x373d): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x374b): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x37b0): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x37c3): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x3828): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3836): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x38b6): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x3915): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3923): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x3988): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3996): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x39fb): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3a09): undefined reference to `MatrixType::MatrixType()'
balance.o:balance.cc:(.text+0x3a89): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3b5a): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3ba4): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3be8): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3c7b): undefined reference to `MatrixType::~MatrixType()'
balance.o:balance.cc:(.text+0x3cbc): more undefined references to `MatrixType::~MatrixType()' follow
balance.o:balance.cc:(.text$_ZN13string_vectorD1Ev[string_vector::~string_vector()]+0xe): undefined reference to `Array<std::string>::~Array()'
balance.o:balance.cc:(.text$_ZN13string_vectorD0Ev[string_vector::~string_vector()]+0x14): undefined reference to `Array<std::string>::~Array()'
balance.o:balance.cc:(.text$_ZN18FloatComplexMatrixD0Ev[FloatComplexMatrix::~FloatComplexMatrix()]+0x14): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text$_ZN18FloatComplexMatrixD1Ev[FloatComplexMatrix::~FloatComplexMatrix()]+0xe): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text$_ZN7MArray2ISt7complexIfEED0Ev[MArray2<std::complex<float> >::~MArray2()]+0x14): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text$_ZN7MArray2ISt7complexIfEED1Ev[MArray2<std::complex<float> >::~MArray2()]+0xe): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text$_ZN6Array2ISt7complexIfEED0Ev[Array2<std::complex<float> >::~Array2()]+0x14): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text$_ZN6Array2ISt7complexIfEED1Ev[Array2<std::complex<float> >::~Array2()]+0xe): more undefined references to `Array<std::complex<float> >::~Array()' follow
balance.o:balance.cc:(.text$_ZN17FloatColumnVectorD0Ev[FloatColumnVector::~FloatColumnVector()]+0x14): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN17FloatColumnVectorD1Ev[FloatColumnVector::~FloatColumnVector()]+0xe): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN6MArrayIfED0Ev[MArray<float>::~MArray()]+0x14): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN6MArrayIfED1Ev[MArray<float>::~MArray()]+0xe): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN11FloatMatrixD0Ev[FloatMatrix::~FloatMatrix()]+0x14): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN11FloatMatrixD1Ev[FloatMatrix::~FloatMatrix()]+0xe): more undefined references to `Array<float>::~Array()' follow
balance.o:balance.cc:(.text$_ZN11FloatMatrixC1ERKS_[FloatMatrix::FloatMatrix(FloatMatrix const&)]+0x1c): undefined reference to `Array<float>::Array(Array<float> const&, dim_vector const&)'
balance.o:balance.cc:(.text$_ZN13ComplexMatrixD0Ev[ComplexMatrix::~ComplexMatrix()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text$_ZN13ComplexMatrixD1Ev[ComplexMatrix::~ComplexMatrix()]+0xe): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text$_ZN7MArray2ISt7complexIdEED0Ev[MArray2<std::complex<double> >::~MArray2()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text$_ZN7MArray2ISt7complexIdEED1Ev[MArray2<std::complex<double> >::~MArray2()]+0xe): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text$_ZN6Array2ISt7complexIdEED0Ev[Array2<std::complex<double> >::~Array2()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text$_ZN6Array2ISt7complexIdEED1Ev[Array2<std::complex<double> >::~Array2()]+0xe): more undefined references to `Array<std::complex<double> >::~Array()' follow
balance.o:balance.cc:(.text$_ZN12ColumnVectorD0Ev[ColumnVector::~ColumnVector()]+0x14): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN12ColumnVectorD1Ev[ColumnVector::~ColumnVector()]+0xe): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN6MArrayIdED0Ev[MArray<double>::~MArray()]+0x14): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN6MArrayIdED1Ev[MArray<double>::~MArray()]+0xe): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN6MatrixD0Ev[Matrix::~Matrix()]+0x14): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN6MatrixD1Ev[Matrix::~Matrix()]+0xe): more undefined references to `Array<double>::~Array()' follow
balance.o:balance.cc:(.text$_ZN6MatrixC1ERKS_[Matrix::Matrix(Matrix const&)]+0x1c): undefined reference to `Array<double>::Array(Array<double> const&, dim_vector const&)'
balance.o:balance.cc:(.text$_ZN22FloatComplexAEPBALANCED1Ev[FloatComplexAEPBALANCE::~FloatComplexAEPBALANCE()]+0x1d): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN22FloatComplexAEPBALANCED1Ev[FloatComplexAEPBALANCE::~FloatComplexAEPBALANCE()]+0x34): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text$_ZN17ComplexAEPBALANCED1Ev[ComplexAEPBALANCE::~ComplexAEPBALANCE()]+0x1d): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN17ComplexAEPBALANCED1Ev[ComplexAEPBALANCE::~ComplexAEPBALANCE()]+0x34): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text$_ZN10AEPBALANCED1Ev[AEPBALANCE::~AEPBALANCE()]+0x1d): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN10AEPBALANCED1Ev[AEPBALANCE::~AEPBALANCE()]+0x34): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN17ComplexGEPBALANCED1Ev[ComplexGEPBALANCE::~ComplexGEPBALANCE()]+0x1d): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN17ComplexGEPBALANCED1Ev[ComplexGEPBALANCE::~ComplexGEPBALANCE()]+0x2f): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN17ComplexGEPBALANCED1Ev[ComplexGEPBALANCE::~ComplexGEPBALANCE()]+0x41): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text$_ZN17ComplexGEPBALANCED1Ev[ComplexGEPBALANCE::~ComplexGEPBALANCE()]+0x58): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.text$_ZN10GEPBALANCED1Ev[GEPBALANCE::~GEPBALANCE()]+0x1d): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN10GEPBALANCED1Ev[GEPBALANCE::~GEPBALANCE()]+0x2f): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN10GEPBALANCED1Ev[GEPBALANCE::~GEPBALANCE()]+0x41): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN10GEPBALANCED1Ev[GEPBALANCE::~GEPBALANCE()]+0x58): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.text$_ZN15FloatAEPBALANCED1Ev[FloatAEPBALANCE::~FloatAEPBALANCE()]+0x1d): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN15FloatAEPBALANCED1Ev[FloatAEPBALANCE::~FloatAEPBALANCE()]+0x34): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN22FloatComplexGEPBALANCED1Ev[FloatComplexGEPBALANCE::~FloatComplexGEPBALANCE()]+0x1d): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN22FloatComplexGEPBALANCED1Ev[FloatComplexGEPBALANCE::~FloatComplexGEPBALANCE()]+0x2f): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN22FloatComplexGEPBALANCED1Ev[FloatComplexGEPBALANCE::~FloatComplexGEPBALANCE()]+0x41): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text$_ZN22FloatComplexGEPBALANCED1Ev[FloatComplexGEPBALANCE::~FloatComplexGEPBALANCE()]+0x58): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.text$_ZN15FloatGEPBALANCED1Ev[FloatGEPBALANCE::~FloatGEPBALANCE()]+0x1d): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN15FloatGEPBALANCED1Ev[FloatGEPBALANCE::~FloatGEPBALANCE()]+0x2f): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN15FloatGEPBALANCED1Ev[FloatGEPBALANCE::~FloatGEPBALANCE()]+0x41): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN15FloatGEPBALANCED1Ev[FloatGEPBALANCE::~FloatGEPBALANCE()]+0x58): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.text$_ZN18FloatComplexMatrixC1Ev[FloatComplexMatrix::FloatComplexMatrix()]+0x46): undefined reference to `Array<std::complex<float> >::get_size(dim_vector const&)'
balance.o:balance.cc:(.text$_ZN6MatrixC1Ev[Matrix::Matrix()]+0x46): undefined reference to `Array<double>::get_size(dim_vector const&)'
balance.o:balance.cc:(.text$_ZN13ComplexMatrixC1Ev[ComplexMatrix::ComplexMatrix()]+0x46): undefined reference to `Array<std::complex<double> >::get_size(dim_vector const&)'
balance.o:balance.cc:(.text$_ZN11FloatMatrixC1Ev[FloatMatrix::FloatMatrix()]+0x46): undefined reference to `Array<float>::get_size(dim_vector const&)'
balance.o:balance.cc:(.rdata$_ZTV5ArrayISsE[vtable for Array<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]+0x8): undefined reference to `Array<std::string>::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayISsE[vtable for Array<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]+0xc): undefined reference to `Array<std::string>::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayIfE[vtable for Array<float>]+0x8): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayIfE[vtable for Array<float>]+0xc): undefined reference to `Array<float>::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayIdE[vtable for Array<double>]+0x8): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayIdE[vtable for Array<double>]+0xc): undefined reference to `Array<double>::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayISt7complexIdEE[vtable for Array<std::complex<double> >]+0x8): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayISt7complexIdEE[vtable for Array<std::complex<double> >]+0xc): undefined reference to `Array<std::complex<double> >::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayISt7complexIfEE[vtable for Array<std::complex<float> >]+0x8): undefined reference to `Array<std::complex<float> >::~Array()'
balance.o:balance.cc:(.rdata$_ZTV5ArrayISt7complexIfEE[vtable for Array<std::complex<float> >]+0xc): undefined reference to `Array<std::complex<float> >::~Array()'

betainc.o:betainc.cc:(.text+0x8b2): undefined reference to `betainc(FloatNDArray const&, float, float)'
betainc.o:betainc.cc:(.text+0xa61): undefined reference to `betainc(double, double, double)'
betainc.o:betainc.cc:(.text+0xb3f): undefined reference to `betainc(float, float, float)'
betainc.o:betainc.cc:(.text+0xec4): undefined reference to `betainc(NDArray const&, double, double)'
betainc.o:betainc.cc:(.text+0xf82): undefined reference to `betainc(NDArray const&, NDArray const&, NDArray const&)'
betainc.o:betainc.cc:(.text+0x1054): undefined reference to `betainc(float, FloatNDArray const&, FloatNDArray const&)'
betainc.o:betainc.cc:(.text+0x1121): undefined reference to `betainc(double, NDArray const&, NDArray const&)'
betainc.o:betainc.cc:(.text+0x11e7): undefined reference to `betainc(FloatNDArray const&, FloatNDArray const&, FloatNDArray const&)'
betainc.o:betainc.cc:(.text+0x12bc): undefined reference to `betainc(NDArray const&, double, NDArray const&)'
betainc.o:betainc.cc:(.text+0x1391): undefined reference to `betainc(double, double, NDArray const&)'
betainc.o:betainc.cc:(.text+0x145a): undefined reference to `betainc(float, float, FloatNDArray const&)'
betainc.o:betainc.cc:(.text+0x1524): undefined reference to `betainc(FloatNDArray const&, float, FloatNDArray const&)'
betainc.o:betainc.cc:(.text+0x15ac): undefined reference to `betainc(NDArray const&, NDArray const&, double)'
betainc.o:betainc.cc:(.text+0x1626): undefined reference to `betainc(FloatNDArray const&, FloatNDArray const&, float)'
betainc.o:betainc.cc:(.text+0x16a0): undefined reference to `betainc(float, FloatNDArray const&, float)'
betainc.o:betainc.cc:(.text+0x170e): undefined reference to `betainc(double, NDArray const&, double)'
betainc.o:betainc.cc:(.text$_ZN12FloatNDArrayD1Ev[FloatNDArray::~FloatNDArray()]+0xe): undefined reference to `Array<float>::~Array()'
betainc.o:betainc.cc:(.text$_ZN12FloatNDArrayD0Ev[FloatNDArray::~FloatNDArray()]+0x14): undefined reference to `Array<float>::~Array()'
betainc.o:betainc.cc:(.text$_ZN7MArrayNIfED0Ev[MArrayN<float>::~MArrayN()]+0x14): undefined reference to `Array<float>::~Array()'
betainc.o:betainc.cc:(.text$_ZN7MArrayNIfED1Ev[MArrayN<float>::~MArrayN()]+0xe): undefined reference to `Array<float>::~Array()'
betainc.o:betainc.cc:(.text$_ZN6ArrayNIfED0Ev[ArrayN<float>::~ArrayN()]+0x14): undefined reference to `Array<float>::~Array()'
betainc.o:betainc.cc:(.text$_ZN6ArrayNIfED1Ev[ArrayN<float>::~ArrayN()]+0xe): more undefined references to `Array<float>::~Array()' follow
betainc.o:betainc.ccamd.o:amd.cc:(.text+0x73d:(.text$_ZN7NDArrayD1Ev): undefined reference to[NDArray::~NDArray()]+0xe `Sparse<std::complex<double> >::operator=(Sparse): undefined reference to `Array<double>::~Array()'

amd.o:amd.cc:(.text+0xbe4): undefined reference to `Sparse<double>::~Sparse()'
amd.o:amd.cc): undefined reference to `Array<std:(.text+0xc9e): undefined reference::string>::~Array to `real(ComplexMatrix const&)'
amd.o:amd.cc:(.text+0xcd1): undefined reference to `Sparse<double>::operator=(Sparse<double> const&)'
amd.o:amd.cc:(.text+0xe70): undefined reference to `Sparse<double>::operator=(Sparse<double> const&)'
amd.o:amd.cc:(.text+0xf48): undefined reference to `Sparse<double>::operator=(Sparse<double> const&)'
amd.o:amd.cc:(.text+0x10d6): undefined reference to `octave_chunk_buffer::~octave_chunk_buffer()'
amd.o:amd.cc:(.text+0x119a): undefined reference to `MatrixType::~MatrixType()'
amd.o:amd.cc:(.text+0x11c1): undefined reference to `octave_chunk_buffer::~octave_chunk_buffer()'
amd.o:amd.cc:(.text+0x1271): undefined reference to `MatrixType::~MatrixType()'
amd.o:amd.cc:(.text$_ZN13string_vectorD1Ev[string_vector::~string_vector()]+0xe): undefined reference to `Array<std::string>::~Array()'
amd.o:amd.cc:(.text$_ZN13string_vectorD0Ev[string_vector::~string_vector()]+0x14): undefined reference to `Array<std::string>::~Array()'
amd.o:amd.cc:(.text$_ZN12SparseMatrixD0Ev[SparseMatrix::~SparseMatrix()]+0x14): undefined reference to `Sparse<double>::~Sparse()'
amd.o:amd.cc:(.text$_ZN12SparseMatrixD1Ev[SparseMatrix::~SparseMatrix()]+0xe): undefined reference to `Sparse<double>::~Sparse()'
amd.o:amd.cc:(.text$_ZN7MSparseIdED0Ev[MSparse<double>::~MSparse()]+0x14): undefined reference to `Sparse<double>::~Sparse()'
amd.o:amd.cc:(.text$_ZN7MSparseIdED1Ev[MSparse<double>::~MSparse()]+0xe): undefined reference to `Sparse<double>::~Sparse()'
amd.o:amd.cc:(.text$_ZN19SparseComplexMatrixD0Ev[SparseComplexMatrix::~SparseComplexMatrix()]+0x14): undefined reference to `Sparse<std()'
collect2: ld returned 1 exit status
::complex<double> >::~Sparse()'
amd.o:amd.cc:(.text$_ZN19SparseComplexMatrixD1Ev[SparseComplexMatrix::~SparseComplexMatrix()]+0xe): undefined reference to `Sparse<std::complex<double> >::~Sparse()'
amd.o:amd.cc:(.text$_ZN7MSparseISt7complexIdEED0Ev[MSparse<std::complex<double> >::~MSparse()]+0x14): undefined reference to `Sparse<std::complex<double> >::~Sparse()'
amd.o:amd.cc:(.text$_ZN7MSparseISt7complexIdEED1Ev[MSparse<std::complex<double> >::~MSparse()]+0xe): undefined reference to `Sparse<std::complex<double> >::~Sparse()'
amd.o:amd.cc:(.text$_ZN13ComplexMatrixD1Ev[ComplexMatrix::~ComplexMatrix()]+0xe): undefined reference to `Array<std::complex<double> >::~Array()'
amd.o:amd.cc:(.text$_ZN13ComplexMatrixD0Ev[ComplexMatrix::~ComplexMatrix()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
amd.o:amd.cc:(.text$_ZN7MArray2ISt7complexIdEED0Ev[MArray2<std::complex<double> >::~MArray2()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
amd.o:amd.cc:(.text$_ZN7MArray2ISt7complexIdEED1Ev[MArray2<std::complex<double> >::~MArray2()]+0xe): undefined reference to `Array<std::complex<double> >::~Array()'
amd.o:amd.cc:(.text$_ZN6Array2ISt7complexIdEED0Ev[Array2<std::complex<double> >::~Array2()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
amd.o:amd.cc:(.text$_ZN6Array2ISt7complexIdEED1Ev[Array2<std::complex<double> >::~Array2()]+0xe): more undefined references to `Array<std::complex<double> >::~Array()' follow
amd.o:amd.cc:(.text$_ZN12SparseMatrixC1ERK6Matrix[SparseMatrix::SparseMatrix(Matrix const&)]+0x1d): undefined reference to `Sparse<double>::Sparse(Array2<double> const&)'
amd.o:amd.cc:(.text$_ZN12SparseMatrixC1ERK6Matrix[SparseMatrix::SparseMatrix(Matrix const&)]+0x4d): undefined reference to `Sparse<double>::~Sparse()'
amd.o:amd.cc:(.text$_ZN6MatrixD0Ev[Matrix::~Matrix()]+0x14): undefined reference to `Array<double>::~Array()'
amd.o:amd.cc:(.text$_ZN6MatrixD1Ev[Matrix::~Matrix()]+0xe): undefined reference to `Array<double>::~Array()'
amd.o:amd.cc:(.text$_ZN7MArray2IdED0Ev[MArray2<double>::~MArray2()]+0x14): undefined reference to `Array<double>::~Array()'
amd.o:amd.cc:(.text$_ZN7MArray2IdED1Ev[MArray2<double>::~MArray2()]+0xe): undefined reference to `Array<double>::~Array()'
amd.o:amd.cc:(.text$_ZN6Array2IdED0Ev[Array2<double>::~Array2()]+0x14): undefined reference to `Array<double>::~Array()'
amd.o:amd.cc:(.text$_ZN6Array2IdED1Ev[Array2<double>::~Array2()]+0xe): more undefined references to `Array<double>::~Array()' follow
amd.o:amd.cc:(.text$_ZN6MatrixC1Eii[Matrix::Matrix(int, int)]+0x44): undefined reference to `Array<double>::get_size(dim_vector const&)'
amd.o:amd.cc:(.rdata$_ZTV5ArrayISsE[vtable for Array<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]+0x8): undefined reference to `Array<stdmake[2]: *** [betainc.oct] Error 1
::string>::~Array()'
amd.o:amd.cc:(.rdata$_ZTV5ArrayISsE[vtable for Array<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]+0xc): undefined reference to `Array<std::string>::~Array()'
amd.o:amd.cc:(.rdata$_ZTV6SparseIdE[vtable for Sparse<double>]+0x8): undefined reference to `Sparse<double>::~Sparse()'
amd.o:amd.cc:(.rdata$_ZTV6SparseIdE[vtable for Sparse<double>]+0xc): undefined reference to `Sparse<double>::~Sparse()'
amd.o:amd.cc:(.rdata$_ZTV6SparseISt7complexIdEE[vtable for Sparse<std::complex<double> >]+0x8): undefined reference to `Sparse<std::complex<double> >::~Sparse()'
amd.o:amd.cc:(.rdata$_ZTV6SparseISt7complexIdEE[vtable for Sparse<std::complex<double> >]+0xc): undefined reference to `Sparse<std::complex<double> >::~Sparse()'
amd.o:amd.cc:(.rdata$_ZTV5ArrayIdE[vtable for Array<double>]+0x8): undefined reference to `Array<double>::~Array()'
amd.o:amd.cc:(.rdata$_ZTV5ArrayIdE[vtable for Array<double>]+0xc): undefined reference to `Array<double>::~Array()'

besselj.o:besselj.cc:(.text+0x170a): undefined reference to `besseli(double, std::complex<double> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x17e7): undefined reference to `besselj(double, std::complex<double> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1844): undefinedmake[2]: *** [amd.oct] Error 1
 reference to `bessely(double, std::complex<double> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x189d): undefined reference to `besselh2(float, std::complex<float> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1977): undefined reference to `besselh2(double, std::complex<double> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x19d4): undefined reference to `besselh1(double, std::complex<double> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1a2d): undefined reference to `bessely(float, std::complex<float> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1a94): undefined reference to `besselj(float, std::complex<float> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1afb): undefined reference to `besselk(float, std::complex<float> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1b62): undefined reference to `besselh1(float, std::complex<float> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1bc9): undefined reference to `besseli(float, std::complex<float> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1c34): undefined reference to `besselk(double, std::complex<double> const&, bool, int&)'
besselj.o:besselj.cc:(.text+0x1c97): undefined reference to `besselh1(FloatNDArray const&, std::complex<float> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x1daa): undefined reference to `besselj(FloatNDArray const&, std::complex<float> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x1e15): undefined reference to `besseli(FloatNDArray const&, std::complex<float> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x1e80): undefined reference to `bessely(FloatNDArray const&, std::complex<float> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x1eeb): undefined reference to `besselk(FloatNDArray const&, std::complex<float> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x1f56): undefined reference to `besselh2(FloatNDArray const&, std::complex<float> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x1f98): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x1fcf): undefined reference to `bessely(FloatRowVector const&, FloatComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x201b): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x2049): undefined reference to `NDArray::NDArray(Array<int> const&, bool, bool)'
besselj.o:besselj.cc:(.text+0x20f7): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x212e): undefined reference to `besselj(FloatRowVector const&, FloatComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x217a): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x218d): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x21c4): undefined reference to `besselh2(FloatRowVector const&, FloatComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x2210): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x2223): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x225a): undefined reference to `besselk(FloatRowVector const&, FloatComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x22a6): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x22b9): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x22f0): undefined reference to `besseli(FloatRowVector const&, FloatComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x233c): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x234f): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x2386): undefined reference to `besselh1(FloatRowVector const&, FloatComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x25b3): undefined reference to `besselh2(NDArray const&, std::complex<double> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x26ec): undefined reference to `bessely(NDArray const&, std::complex<double> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2751): undefined reference to `besselk(NDArray const&, std::complex<double> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x27b6): undefined reference to `besseli(NDArray const&, std::complex<double> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x281b): undefined reference to `besselj(NDArray const&, std::complex<double> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2880): undefined reference to `besselh1(NDArray const&, std::complex<double> const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x299f): undefined reference to `besselh2(double, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2ac0): undefined reference to `besselh1(double, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2b2b): undefined reference to `besseli(double, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2b96): undefined reference to `besselk(double, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2c01): undefined reference to `besselj(double, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2c6c): undefined reference to `bessely(double, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2d4b): undefined reference to `besselh2(float, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2e66): undefined reference to `bessely(float, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2ece): undefined reference to `besselk(float, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2f36): undefined reference to `besseli(float, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x2f9e): undefined reference to `besselj(float, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x3006): undefined reference to `besselh1(float, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x30e8): undefined reference to `besselh2(FloatNDArray const&, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x3209): undefined reference to `besselh1(FloatNDArray const&, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x3274): undefined reference to `besselj(FloatNDArray const&, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x32df): undefined reference to `besseli(FloatNDArray const&, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x334a): undefined reference to `bessely(FloatNDArray const&, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x33b5): undefined reference to `besselk(FloatNDArray const&, FloatComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x3497): undefined reference to `besselh2(NDArray const&, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x35b8): undefined reference to `besselh1(NDArray const&, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x3623): undefined reference to `besselk(NDArray const&, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x368e): undefined reference to `besseli(NDArray const&, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x36f9): undefined reference to `bessely(NDArray const&, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x3764): undefined reference to `besselj(NDArray const&, ComplexNDArray const&, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x3935): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x396c): undefined reference to `besselh2(RowVector const&, ComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x39bb): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x39e9): undefined reference to `NDArray::NDArray(Array<int> const&, bool, bool)'
besselj.o:besselj.cc:(.text+0x3a9a): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x3ad1): undefined reference to `bessely(RowVector const&, ComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x3b20): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x3b33): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x3b6a): undefined reference to `besselk(RowVector const&, ComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x3bb9): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x3bcc): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x3c03): undefined reference to `besselh1(RowVector const&, ComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x3c5d): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x3c94): undefined reference to `besselj(RowVector const&, ComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x3ce3): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x3cf6): undefined reference to `MatrixType::MatrixType()'
besselj.o:besselj.cc:(.text+0x3d2d): undefined reference to `besseli(RowVector const&, ComplexColumnVector const&, bool, Array2<int>&)'
besselj.o:besselj.cc:(.text+0x3d7c): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x3e33): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x3ee5): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x3f12): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x3f5d): undefined reference to `MatrixType::~MatrixType()'
besselj.o:besselj.cc:(.text+0x4036): more undefined references to `MatrixType::~MatrixType()' follow
besselj.o:besselj.cc:(.text+0x4c6a): undefined reference to `biry(FloatComplexNDArray const&, bool, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x4f8c): undefined reference to `biry(ComplexNDArray const&, bool, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x5095): undefined reference to `Array<std::complex<double> >::~Array()'
besselj.o:besselj.cc:(.text+0x50bf): undefined reference to `Array<std::complex<float> >::~Array()'
besselj.o:besselj.cc:(.text+0x50ff): undefined reference to `airy(FloatComplexNDArray const&, bool, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x5175): undefined reference to `airy(ComplexNDArray const&, bool, bool, ArrayN<int>&)'
besselj.o:besselj.cc:(.text+0x58ca): undefined reference to `Array<std::string>::~Array()'
besselj.o:besselj.cc:(.text+0x5951): undefined reference to `Array<std::string>::operator=(Array<std::string> const&)'
besselj.o:besselj.cc:(.text+0x5960): undefined reference to `Array<std::string>::~Array()'
besselj.o:besselj.cc:(.text$_ZN13string_vectorD1Ev[string_vector::~string_vector()]+0xe): undefined reference to `Array<std::string>::~Array()'
besselj.o:besselj.cc:(.text$_ZN13string_vectorD0Ev[string_vector::~string_vector()]+0x14): undefined reference to `Array<std::string>::~Array()'
besselj.o:besselj.cc:(.text$_ZN19FloatComplexNDArrayD1Ev[FloatComplexNDArray::~FloatComplexNDArray()]+0xe): undefined reference to `Array<std::complex<float> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN19FloatComplexNDArrayD0Ev[FloatComplexNDArray::~FloatComplexNDArray()]+0x14): undefined reference to `Array<std::complex<float> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN7MArrayNISt7complexIfEED0Ev[MArrayN<std::complex<float> >::~MArrayN()]+0x14): undefined reference to `Array<std::complex<float> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN7MArrayNISt7complexIfEED1Ev[MArrayN<std::complex<float> >::~MArrayN()]+0xe): undefined reference to `Array<std::complex<float> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN6ArrayNISt7complexIfEED0Ev[ArrayN<std::complex<float> >::~ArrayN()]+0x14): undefined reference to `Array<std::complex<float> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN6ArrayNISt7complexIfEED1Ev[ArrayN<std::complex<float> >::~ArrayN()]+0xe): more undefined references to `Array<std::complex<float> >::~Array()' follow
besselj.o:besselj.cc:(.text$_ZN6ArrayNIiED0Ev[ArrayN<int>::~ArrayN()]+0x14): undefined reference to `Array<int>::~Array()'
besselj.o:besselj.cc:(.text$_ZN6ArrayNIiED1Ev[ArrayN<int>::~ArrayN()]+0xe): undefined reference to `Array<int>::~Array()'
besselj.o:besselj.cc:(.text$_ZN6Array2IiED0Ev[Array2<int>::~Array2()]+0x14): undefined reference to `Array<int>::~Array()'
besselj.o:besselj.cc:(.text$_ZN6Array2IiED1Ev[Array2<int>::~Array2()]+0xe): undefined reference to `Array<int>::~Array()'
besselj.o:besselj.cc:(.text$_ZN7NDArrayD0Ev[NDArray::~NDArray()]+0x14): undefined reference to `Array<double>::~Array()'
besselj.o:besselj.cc:(.text$_ZN7NDArrayD1Ev[NDArray::~NDArray()]+0xe): undefined reference to `Array<double>::~Array()'
besselj.o:besselj.cc:(.text$_ZN7MArrayNIdED0Ev[MArrayN<double>::~MArrayN()]+0x14): undefined reference to `Array<double>::~Array()'
besselj.o:besselj.cc:(.text$_ZN7MArrayNIdED1Ev[MArrayN<double>::~MArrayN()]+0xe): undefined reference to `Array<double>::~Array()'
besselj.o:besselj.cc:(.text$_ZN6ArrayNIdED0Ev[ArrayN<double>::~ArrayN()]+0x14): undefined reference to `Array<double>::~Array()'
besselj.o:besselj.cc:(.text$_ZN6ArrayNIdED1Ev[ArrayN<double>::~ArrayN()]+0xe): more undefined references to `Array<double>::~Array()' follow
besselj.o:besselj.cc:(.text$_ZN7NDArrayC1IiEERK6ArrayNIT_E[NDArray::NDArray<int>(ArrayN<int> const&)]+0x8b): undefined reference to `Array<double>::Array(Array<double> const&, dim_vector const&)'
besselj.o:besselj.cc:(.text$_ZN7NDArrayC1IiEERK6ArrayNIT_E[NDArray::NDArray<int>(ArrayN<int> const&)]+0x93): undefined reference to `Array<double>::~Array()'
besselj.o:besselj.cc:(.text$_ZN7NDArrayC1IiEERK6ArrayNIT_E[NDArray::NDArray<int>(ArrayN<int> const&)]+0xae): undefined reference to `Array<double>::~Array()'
besselj.o:besselj.cc:(.text$_ZN14ComplexNDArrayD1Ev[ComplexNDArray::~ComplexNDArray()]+0xe): undefined reference to `Array<std::complex<double> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN14ComplexNDArrayD0Ev[ComplexNDArray::~ComplexNDArray()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN7MArrayNISt7complexIdEED0Ev[MArrayN<std::complex<double> >::~MArrayN()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN7MArrayNISt7complexIdEED1Ev[MArrayN<std::complex<double> >::~MArrayN()]+0xe): undefined reference to `Array<std::complex<double> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN6ArrayNISt7complexIdEED0Ev[ArrayN<std::complex<double> >::~ArrayN()]+0x14): undefined reference to `Array<std::complex<double> >::~Array()'
besselj.o:besselj.cc:(.text$_ZN6ArrayNISt7complexIdEED1Ev[ArrayN<std::complex<double> >::~ArrayN()]+0xe): more undefined references to `Array<std::complex<double> >::~Array()' follow
besselj.o:besselj.cc:(.text$_ZN17octave_value_listaSERKS_[octave_value_list::operator=(octave_value_list const&)]+0x34): undefined reference to `Array<std::string>::operator=(Array<std::string> const&)'
besselj.o:besselj.cc:(.text$_ZN14FloatRowVectorD1Ev[FloatRowVector::~FloatRowVector()]+0xe): undefined reference to `Array<float>::~Array()'
besselj.o:besselj.cc:(.text$_ZN14FloatRowVectorD0Ev[FloatRowVector::~FloatRowVector()]+0x14): undefined reference to `Array<float>::~Array()'
besselj.o:besselj.cc:(.text$_ZN6MArrayIfED0Ev[MArray<float>::~MArray()]+0x14): undefined reference to `Array<float>::~Array()'
besselj.o:besselj.cc:(.text$_ZN6MArrayIfED1Ev[MArray<float>::~MArray()]+0xe): undefined reference to `Array<float>::~Array()'
besselj.o:besselj.cc:(.text$_ZN12FloatNDArrayD1Ev[FloatNDArray::~FloatNDArray()]+0xe): undefined reference to `Array<float>::~Array()'
besselj.o:besselj.cc:(.text$_ZN12FloatNDArrayD0Ev[FloatNDArray::~FloatNDArray()]+0x14): more undefined references to `Array<float>::~Array()' follow
besselj.o:besselj.cc:(.text$_ZN17octave_value_listD1Ev[octave_value_list::~octave_value_list()]+0x1d): undefined reference to `Array<std::string>::~Array()'
besselj.o:besselj.cc:(.rdata$_ZTV5ArrayISsE[vtable for Array<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]+0x8): undefined reference to `Array<std::string>::~Array()'
besselj.o:besselj.cc:(.rdata$_ZTV5ArrayISsE[vtable for Array<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]+0xc): undefined reference to `Array<std::string>::~Array()'
besselj.o:besselj.cc:(.rdata$_ZTV5ArrayIdE[vtable for Array<double>]+0x8): undefined reference to `Array<double>::~Array()'
besselj.o:besselj.cc:(.rdata$_ZTV5ArrayIdE[vtable for Array<double>]+0xc): undefined reference to `Array<double>::~Array()'




Re: linking liboctave fails (lapack missing?)

by Benjamin Lindner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Benjamin Lindner wrote:

>
> Linking liboctinterp.dll fails with the missing symbols attached: (I
> omitted double errors in the same object file, otherwise the list is
> *really* long and does not contain additional information):
>
> The first group stems from $(LIBCRUFT) missing as link dependency.
>
> The second group stems from missing
>    -lgdi32 (GetDeviceCaps)
>    -liberty (mkstemps)
> The first is the windows system GDI library and the second is the
> mingw/gcc support library.
> Both are added to $LIBS during configure stage for the mingw platform
>
> The third group stems from $(FLIBS) missing as link dependency.
>
> To link successfully I have to do
>
> OCTINTERP_LINK_DEPS = $(RLD_FLAG) -L../liboctave $(LIBOCTAVE)
> -L../libcruft $(LIBCRUFT) \
>    $(HDF5_LIBS) $(ZLIB_LIBS) $(X11_LIBS) $(OPENGL_LIBS) $(CARBON_LIBS) \
>    $(LIBS) $(FLIBS)

Looking closely I see that $(LIBS) already contains -lgfortran as the
configure summary tells:

   Fortran libraries:    -lgfortran
   LIBS:                 -liberty -llapack -lblas -lgfortran -lblas -lm
  -lgdi32 -lws2_32 -luser32 -lkernel32

so actually it suffices to add simply $(LIBS), i.e.

OCTINTERP_LINK_DEPS = $(RLD_FLAG) -L../liboctave $(LIBOCTAVE)
-L../libcruft $(LIBCRUFT) \
   $(HDF5_LIBS) $(ZLIB_LIBS) $(X11_LIBS) $(OPENGL_LIBS) $(CARBON_LIBS) \
   $(LIBS)

benjamin

Re: linking liboctave fails (lapack missing?)

by Michael Goffioul-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, Aug 14, 2009 at 3:12 PM, John W. Eaton<jwe@...> wrote:
> It would be helpful if people building Octave on Windows and OS X
> systems could configure and build the latest Octave sources on and
> send a list of symbols that are unresolved when creating the libcruft,
> liboctave, liboctinterp shared libraries, when linking the Octave
> executable file, and when building the .oct files.

This is what's needed to enable compilation under MSVC.

Michael.


cc_scripts_macro_fix (6K) Download Attachment

Re: linking liboctave fails (lapack missing?)

by John W. Eaton-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 16-Aug-2009, Michael Goffioul wrote:

| On Fri, Aug 14, 2009 at 3:12 PM, John W. Eaton<jwe@...> wrote:
| > It would be helpful if people building Octave on Windows and OS X
| > systems could configure and build the latest Octave sources on and
| > send a list of symbols that are unresolved when creating the libcruft,
| > liboctave, liboctinterp shared libraries, when linking the Octave
| > executable file, and when building the .oct files.
|
| This is what's needed to enable compilation under MSVC.

I applied the changees for aclocal.m4 and src/Makefile.in.  I'll fix
the octave-bug script and c++ program with a change that adds all the
new variables.

For mkoctfile, shouldn't we drop all the extra libraries and by
default only link with $(OCT_LINK_DEPS), same as we now have it for
the .oct files that are part of Octave?

Thanks,

jwe

Re: linking liboctave fails (lapack missing?)

by John W. Eaton-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 15-Aug-2009, Benjamin Lindner wrote:

| Benjamin Lindner wrote:
| >
| > Linking liboctinterp.dll fails with the missing symbols attached: (I
| > omitted double errors in the same object file, otherwise the list is
| > *really* long and does not contain additional information):
| >
| > The first group stems from $(LIBCRUFT) missing as link dependency.
| >
| > The second group stems from missing
| >    -lgdi32 (GetDeviceCaps)
| >    -liberty (mkstemps)
| > The first is the windows system GDI library and the second is the
| > mingw/gcc support library.
| > Both are added to $LIBS during configure stage for the mingw platform
| >
| > The third group stems from $(FLIBS) missing as link dependency.
| >
| > To link successfully I have to do
| >
| > OCTINTERP_LINK_DEPS = $(RLD_FLAG) -L../liboctave $(LIBOCTAVE)
| > -L../libcruft $(LIBCRUFT) \
| >    $(HDF5_LIBS) $(ZLIB_LIBS) $(X11_LIBS) $(OPENGL_LIBS) $(CARBON_LIBS) \
| >    $(LIBS) $(FLIBS)
|
| Looking closely I see that $(LIBS) already contains -lgfortran as the
| configure summary tells:
|
|    Fortran libraries:    -lgfortran
|    LIBS:                 -liberty -llapack -lblas -lgfortran -lblas -lm
|   -lgdi32 -lws2_32 -luser32 -lkernel32

I think it is a mistake that $(BLAS_LIBS) and $(FLIBS) appear in LIBS.

jwe

Re: linking liboctave fails (lapack missing?)

by John W. Eaton-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 15-Aug-2009, Benjamin Lindner wrote:

| Now for the undefined reference linker errors:

I checked in some additional changes.  I will deal with the mkoctfile
and octave-bug scripts/programs later, but is there anything that I
missed for building libcruft, liboctave, liboctinterp, and the .oct
files?

Thanks,

jwe
< Prev | 1 - 2 | Next >