Dear Nick Cummings,
I tried t compile your program and it compiles correctly on my
configuration. So it is hard to me to help you.
May be you can try to change the order of libraries in the link if
you did not tried it.
Yves.
Le 08/12/2012 17:47, Nick Cummings a écrit :
I recently have tried to re-compile a simple program I
wrote previously using GMM++ and Lapack but (after updating my
operating system) am now having an error during the linking
process. The problem seems specifically linked to the function
geev_interface_right.
Below a very simple test program using that function. When I
attempt to compile it using g++ on my system (information below),
I get the error "collect2: ld returned 1 exit status." It seems to
be complaining about "undefined reference to `zgeev_'," but as far
as I can tell I have all the required libraries, so I can quite
understand what the problem is. The full output is below. I even
used the tool nm on the Lapack library to confirm that the symbol
zgeev_ appears in the library. I realize that the underlying
problem may not be with GMM++ but rather with one of the packages
in my Linux distribution or just some other simple error on my
part; my hope is that people on this mailing list may at least
have a notion of the root of the problem (or perhaps have run into
it themselves) so that I can seek answers in the appropriate
place.
System information:
Ubuntu Linux 12.04.1
GMM++ package -- libgmm++-dev (4.1.1-5ubuntu1)
Lapack package -- liblapack3gf (3.3.1-1)
Blas package -- libblas3gf (1.2.20110419-2ubuntu1)
gFortran package -- libgfortran3 (4.6.3-1ubuntu5)
Compile command and output:
$ g++ -llapack -lblas -lgfortran bug.cc
/tmp/ccPq2tbF.o: In function `void
gmm::geev_interface_right<std::vector<std::complex<double>,
std::allocator<std::complex<double> > >
>(gmm::dense_matrix<std::complex<double> >
const&, std::vector<std::complex<double>,
std::allocator<std::complex<double> > > const&,
gmm::dense_matrix<std::complex<double> >&)':
bug.cc:(.text._ZN3gmm20geev_interface_rightISt6vectorISt7complexIdESaIS3_EEEEvRKNS_12dense_matrixIS3_EERKT_RS7_[void
gmm::geev_interface_right<std::vector<std::complex<double>,
std::allocator<std::complex<double> > >
>(gmm::dense_matrix<std::complex<double> >
const&, std::vector<std::complex<double>,
std::allocator<std::complex<double> > > const&,
gmm::dense_matrix<std::complex<double>
>&)]+0x208): undefined reference to `zgeev_'
bug.cc:(.text._ZN3gmm20geev_interface_rightISt6vectorISt7complexIdESaIS3_EEEEvRKNS_12dense_matrixIS3_EERKT_RS7_[void
gmm::geev_interface_right<std::vector<std::complex<double>,
std::allocator<std::complex<double> > >
>(gmm::dense_matrix<std::complex<double> >
const&, std::vector<std::complex<double>,
std::allocator<std::complex<double> > > const&,
gmm::dense_matrix<std::complex<double>
>&)]+0x35d): undefined reference to `zgeev_'
collect2: ld returned 1 exit status
Test code (bug.cc):
#include <complex>
#define GMM_USES_LAPACK
#include <gmm/gmm.h>
typedef std::complex<double> scalar;
int main()
{
try {
gmm::dense_matrix<scalar> A(4,4);
gmm::dense_matrix<scalar> U(4,4);
A(0,1) = 1; A(1,0) = -1; A(2,2)=3; A(3,3)=4;
std::vector<scalar> Eig(4);
gmm::geev_interface_right(A,Eig,U);
}
GMM_STANDARD_CATCH_ERROR;
return 0;
}
_______________________________________________
Getfem-users mailing list
address@hidden
https://mail.gna.org/listinfo/getfem-users
--
Yves Renard (address@hidden) tel : (33) 04.72.43.87.08
Pole de Mathematiques, INSA-Lyon fax : (33) 04.72.43.85.29
20, rue Albert Einstein
69621 Villeurbanne Cedex, FRANCE
http://math.univ-lyon1.fr/~renard
---------
|