Thread: [Lapackpp-devel] lapack++ compilation failure on linux
Status: Beta
Brought to you by:
cstim
From: Vincent A. <Vin...@in...> - 2005-10-06 13:53:39
|
Hi, I have a problem with the compilation of lapack++ on GNU/linux 2.6-10=20 using the compiler insure. It seems that the call of overloaded function are ambiguous (see below) Have you any idea ? Thanks insure -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../../include=20 -DLA_COMPLEX_SUPPORT -DHAVE_CONFIG_H -DLinux -g -O2 -Wall -MT blas1pp.lo=20 -MD -MP -MF .deps/blas1pp.Tpo -c blas1pp.cc -DPIC WARNING: optimization flag O2 discarded for Insure++ compile In file included from blas1pp.cc:30: ../../include/lavc.h: In member function `LaVectorComplex& LaVectorComplex::operator=3D(double)': ../../include/lavc.h:334: error: call of overloaded `complex(double&)' is ambiguous ../../include/lacomplex:578: error: candidates are: la::complex<double>::complex(const la::complex<double>&) ../../include/lacomplex:625: error: =20 la::complex<double>::complex(double) ../../include/lacomplex:649: error: =20 la::complex<double>::complex(const std::complex<double>&) ../../include/lacomplex:587: error: =20 la::complex<double>::complex(const la::complex<long double>&) ../../include/lacomplex:586: error: =20 la::complex<double>::complex(const la::complex<float>&) ../../include/lacomplex:641: error: =20 la::complex<double>::complex(double, double) Driver: error executing "Run -DHAVE_CONFIG_H -I. -I. -I../..=20 -I../../include -I../../include -DLA_COMPLEX_SUPPORT -DHAVE_CONFIG_H=20 -DLinux -g -O2 -Wall -MT blas1pp.lo -MD -MP -MF .deps/blas1pp.Tpo -c=20 blas1pp.cc -DPIC" make[3]: *** [blas1pp.lo] Erreur 1 make[3]: Leaving directory `/home/bipop/acary/src/lapackpp-2.4.0/blaspp/s= rc' make[2]: *** [all-recursive] Erreur 1 make[2]: Leaving directory `/home/bipop/acary/src/lapackpp-2.4.0/blaspp' make[1]: *** [all-recursive] Erreur 1 make[1]: Leaving directory `/home/bipop/acary/src/lapackpp-2.4.0' make: *** [all] Erreur 2 --=20 Vincent ACARY Charge de recherche INRIA Rh=F4ne-Alpes Equipe BIPOP http://www.inrialpes.fr/bipop/ ZIRST, 655 avenue de l'Europe, MONTBONNOT 38334 ST ISMIER Cedex, FRANCE=20 Bureau D118 tel:+33 (0)4 76 61 52 29 fax:+33 (0)4 76 61 54 77=20 |
From: Christian S. <sti...@tu...> - 2005-10-06 14:15:48
|
Dear Vincent, I have never heard of the "insure" compiler, so I have to say that lapackpp hasn't been tested with that before. The error you are seeing is caused because I some C extensions which are specific to the GNU gcc have been used when dealing with complex numbers. I think you can easily solve this issue by changing the line 50 in the file include/lacomplex.h.in into #define LAPACK_USE_GCC3 0 Calling "make" again (which will create the file include/lacomplex.h from the file you just edited) should then fix your error. (More specifically, the file "include/lacomplex" used the __complex__ attribute of the gcc, which obviously your insure compiler doesn't know. Fortunately, this particular section will be disabled if the macro LAPACK_USE_GCC3 is defined to zero.) Christian Vincent Acary schrieb: > Hi, > > I have a problem with the compilation of lapack++ on GNU/linux 2.6-10 > using the compiler insure. > > It seems that the call of overloaded function are ambiguous (see below) > > Have you any idea ? > > Thanks > > > insure -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../../include > -DLA_COMPLEX_SUPPORT -DHAVE_CONFIG_H -DLinux -g -O2 -Wall -MT blas1pp.lo > -MD -MP -MF .deps/blas1pp.Tpo -c blas1pp.cc -DPIC > WARNING: optimization flag O2 discarded for Insure++ compile > In file included from blas1pp.cc:30: > ../../include/lavc.h: In member function `LaVectorComplex& > LaVectorComplex::operator=(double)': > ../../include/lavc.h:334: error: call of overloaded `complex(double&)' is > ambiguous > ../../include/lacomplex:578: error: candidates are: > la::complex<double>::complex(const la::complex<double>&) > ../../include/lacomplex:625: error: > la::complex<double>::complex(double) > ../../include/lacomplex:649: error: > la::complex<double>::complex(const std::complex<double>&) > ../../include/lacomplex:587: error: > la::complex<double>::complex(const la::complex<long double>&) > ../../include/lacomplex:586: error: > la::complex<double>::complex(const la::complex<float>&) > ../../include/lacomplex:641: error: > la::complex<double>::complex(double, double) > Driver: error executing "Run -DHAVE_CONFIG_H -I. -I. -I../.. > -I../../include -I../../include -DLA_COMPLEX_SUPPORT -DHAVE_CONFIG_H > -DLinux -g -O2 -Wall -MT blas1pp.lo -MD -MP -MF .deps/blas1pp.Tpo -c > blas1pp.cc -DPIC" > make[3]: *** [blas1pp.lo] Erreur 1 > make[3]: Leaving directory > `/home/bipop/acary/src/lapackpp-2.4.0/blaspp/src' > make[2]: *** [all-recursive] Erreur 1 > make[2]: Leaving directory `/home/bipop/acary/src/lapackpp-2.4.0/blaspp' > make[1]: *** [all-recursive] Erreur 1 > make[1]: Leaving directory `/home/bipop/acary/src/lapackpp-2.4.0' > make: *** [all] Erreur 2 > > > |
From: Vincent A. <Vin...@in...> - 2005-10-06 15:00:58
|
Thank you Christian. Your answer solves my problem. Thank you very much. For information, Parasoft Insure++ is an automated runtime=20 application-testing product that detects elusive C/C++ errors such as=20 memory corruption, memory leaks, memory allocation errors, variable=20 initialization errors, variable definition conflicts, pointer errors,=20 library errors, I/O errors, and logic errors. Bye PS: A problem remains on the definition a min function in the source=20 file lasvd.cc. I skip it #if !LAPACK_USE_GCC3 # ifndef min # define min(A,B) ((A) < (B) ? (A) : (B) ) # endif #endif Christian Stimming wrote: > Dear Vincent, > > I have never heard of the "insure" compiler, so I have to say that=20 > lapackpp hasn't been tested with that before. > > The error you are seeing is caused because I some C extensions which=20 > are specific to the GNU gcc have been used when dealing with complex=20 > numbers. I think you can easily solve this issue by changing the line=20 > 50 in the file include/lacomplex.h.in into > > #define LAPACK_USE_GCC3 0 > > Calling "make" again (which will create the file include/lacomplex.h=20 > from the file you just edited) should then fix your error. > > (More specifically, the file "include/lacomplex" used the __complex__=20 > attribute of the gcc, which obviously your insure compiler doesn't=20 > know. Fortunately, this particular section will be disabled if the=20 > macro LAPACK_USE_GCC3 is defined to zero.) > > Christian > > > Vincent Acary schrieb: > >> Hi, >> >> I have a problem with the compilation of lapack++ on GNU/linux 2.6-10=20 >> using the compiler insure. >> >> It seems that the call of overloaded function are ambiguous (see below= ) >> >> Have you any idea ? >> >> Thanks >> >> >> insure -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include=20 >> -I../../include -DLA_COMPLEX_SUPPORT -DHAVE_CONFIG_H -DLinux -g -O2=20 >> -Wall -MT blas1pp.lo -MD -MP -MF .deps/blas1pp.Tpo -c blas1pp.cc -DPI= C >> WARNING: optimization flag O2 discarded for Insure++ compile >> In file included from blas1pp.cc:30: >> ../../include/lavc.h: In member function `LaVectorComplex& >> LaVectorComplex::operator=3D(double)': >> ../../include/lavc.h:334: error: call of overloaded=20 >> `complex(double&)' is >> ambiguous >> ../../include/lacomplex:578: error: candidates are: >> la::complex<double>::complex(const la::complex<double>&) >> ../../include/lacomplex:625: error: =20 >> la::complex<double>::complex(double) >> ../../include/lacomplex:649: error: =20 >> la::complex<double>::complex(const std::complex<double>&) >> ../../include/lacomplex:587: error: =20 >> la::complex<double>::complex(const la::complex<long double>&) >> ../../include/lacomplex:586: error: =20 >> la::complex<double>::complex(const la::complex<float>&) >> ../../include/lacomplex:641: error: =20 >> la::complex<double>::complex(double, double) >> Driver: error executing "Run -DHAVE_CONFIG_H -I. -I. -I../..=20 >> -I../../include -I../../include -DLA_COMPLEX_SUPPORT -DHAVE_CONFIG_H=20 >> -DLinux -g -O2 -Wall -MT blas1pp.lo -MD -MP -MF .deps/blas1pp.Tpo -c=20 >> blas1pp.cc -DPIC" >> make[3]: *** [blas1pp.lo] Erreur 1 >> make[3]: Leaving directory=20 >> `/home/bipop/acary/src/lapackpp-2.4.0/blaspp/src' >> make[2]: *** [all-recursive] Erreur 1 >> make[2]: Leaving directory `/home/bipop/acary/src/lapackpp-2.4.0/blasp= p' >> make[1]: *** [all-recursive] Erreur 1 >> make[1]: Leaving directory `/home/bipop/acary/src/lapackpp-2.4.0' >> make: *** [all] Erreur 2 >> >> >> > > --=20 Vincent ACARY Charge de recherche INRIA Rh=F4ne-Alpes Equipe BIPOP http://www.inrialpes.fr/bipop/ ZIRST, 655 avenue de l'Europe, MONTBONNOT 38334 ST ISMIER Cedex, FRANCE=20 Bureau D118 tel:+33 (0)4 76 61 52 29 fax:+33 (0)4 76 61 54 77=20 |
From: Christian S. <sti...@tu...> - 2005-10-06 15:18:23
|
Hi Vincent, thanks for the info. Vincent Acary schrieb: > PS: A problem remains on the definition a min function in the source > file lasvd.cc. I skip it > #if !LAPACK_USE_GCC3 > # ifndef min > # define min(A,B) ((A) < (B) ? (A) : (B) ) > # endif > #endif You mean you deleted this entirely? Yes, after looking at this I also removed this in CVS entirely, as it isn't used anymore anyway. Thanks for pointing this out. Christian |