Math symbol (blas/lapack) linker error's

P

pervinder

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
 
J

Jacek Dziedzic

pervinder said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top