424,303 Members | 1,339 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,303 IT Pros & Developers. It's quick & easy.

Math symbol (blas/lapack) linker error's

P: n/a
Hi,
I am building a c++ executable which uses fortan math libs. blas,
lapack etc.
But when i build this on HP-UX, i get below linker errors while it
build
without anyissues on Sun and Linux platforms.

dgetrs_ (first referenced in
.../../output/HPUX_32/lib/acc352/dbg/libmtx.a(denseMatrix.o)) (code)
dsytrs_ (first referenced in
.../../output/HPUX_32/lib/acc352/dbg/libmtx.a(denseMatrix.o)) (code)
zgetrf_ (first referenced in
....
dlamch (first referenced in
.../../output/tarkits/HPUX_32/acc352/dbg/cadmosPub/pub/lib/32bit/liblapack

Any poniters as what needs to be done to overcome these link errors ?
Regards,
~Pervinder
Jul 22 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
pervinder wrote:
Hi,
I am building a c++ executable which uses fortan math libs. blas,
lapack etc.
But when i build this on HP-UX, i get below linker errors while it
build
without anyissues on Sun and Linux platforms.

dgetrs_ (first referenced in
../../output/HPUX_32/lib/acc352/dbg/libmtx.a(denseMatrix.o)) (code)
dsytrs_ (first referenced in
../../output/HPUX_32/lib/acc352/dbg/libmtx.a(denseMatrix.o)) (code)
zgetrf_ (first referenced in
...
dlamch (first referenced in
../../output/tarkits/HPUX_32/acc352/dbg/cadmosPub/pub/lib/32bit/liblapack

Any poniters as what needs to be done to overcome these link errors ?
Regards,
~Pervinder


This is off-topic here, but here are a few suggestions...

You could try all combinations of
a) either capitalizing or not-capitalizing all characters of the
Fortran function name in your C++ code
b) appending one (_), two (__) or no () underscores to the name of the
Fortran function in your C++ code.

So you might try to declare your Fortran functions in C++ code
as:
dgetrs
dgetrs_
dgetrs__
DGETRS
DGETRS_
DGETRS__

In my system the second one works, but it looks like you're also
using it and it doesn't, so you might want to experiment.
Also, are you sure you declare your Fortran functions as
'extern "C"' in your C++ code? An example from my code that
compiles fine:

extern "C" void dsyevd_ (char *job, char *uplo, int *n, double *a,
int *lda, double *w, double *work,
int *lwork, int *iwork, int *liwork,
int *info);

Finally, it looks like the 'dlamch' function referenced from
lapack itself is missing, so apart from your C++ code not seeing
the lapack/blas functions dgetrs, dsytrs, zgetrf, your lapack
lib might require some external library also (like libg2c or blas).
You might want to check this.

HTH, if you fix this please let know
- J.
Jul 22 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.