Hello people!
I'm having a portability problem with a software I'm writing that uses
the getfem library.
I have 3 systems to work with:
-->"A": my own PC, running Gentoo on AMD64.
-->"B": a cluster of opteron nodes running Fedora Core 3(Heidelberg).
-->"C":a cluster of itanium2 nodes running Suse Linux Enterprise Server.
I've started to write a small simulation program that links to the
getfem library. The package uses automake and autoconf for
compilation, and everything is being done with gcc. I'm not
experienced with these tools, so it's possible that I'm missing
something in the autoconf.ac or Makefile.am files.
On system "A" (my own PC) everything works fine; the software compiles
and links with getfem nicely generating a working executable.
On systems "B" and "C" the program compiles, but at the link stage
these errors are generated:
--> : undefined reference to `dgemm_'
--> : undefined reference to `dnrm2_'
-->: undefined reference to `daxpy_'
-->: undefined reference to `ddot_'
-->: undefined reference to `dtrsv_'
The full error log of the linking process is further below on the
email. I believe that I might be missing something in the configure
file. I generated it with autoscan; setting autoscan to be run on both
getfem sources and my own, so that a more complete picture could be
made. Here it is:
=============START OF configure.ac=============
# Copyright (C) 2006 Giovani Manzeppi Faccin <address@hidden>
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
AC_PREREQ(2.59)
AC_INIT([mss], [0.1.1], [Giovani Manzeppi Faccin address@hidden)
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
CXXFLAGS="-march=k8 -O2" #On itanium, remove the march flag.
AC_PROG_AWK
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
# Checks for libraries.
# FIXME: Replace `main' with a function in `-lgetfem':
AC_CHECK_LIB([getfem], [getfem::mesh()]) #Does not work, find a
function to place here
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([fenv.h limits.h stdlib.h string.h sys/time.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_STRUCT_TM
AC_C_VOLATILE
AC_CHECK_TYPES([ptrdiff_t])
# Checks for library functions.
AC_FUNC_ERROR_AT_LINE
AC_FUNC_MALLOC
AC_FUNC_REALLOC
AC_FUNC_STAT
AC_FUNC_STRTOD
AC_CHECK_FUNCS([floor gethrtime memmove memset pow rint sqrt strchr
strdup uname])
# Makefiles list
AC_CONFIG_FILES([Makefile
doc/Makefile
m4/Makefile
src/Makefile])
#AC_CONFIG_SUBDIRS([getfem])
AC_OUTPUT
=============END OF configure.ac=============
The full linking error is here:
=============START OF LINKING ERROR=============
g++ -O2 -L../getfem/lib/lib/ -o mss Atom.o Atommanipulator.o Box.o
Box_Cell.o Box_Grid.o ConverterKernel.o Disk.o Ensemble.o Ensemble_NVE.o
Ensemble_NVT.o FEMGrid.o FEMKernel.o FormatConverter.o GeneratorKernel.o
Guptaparametercontainer.o Guptaparametrization.o LJParametercontainer.o
LJParametrization.o MDKernel.o MDKernel_Parameters.o MDLattice.o
MSSEngine.o Nosethermostat.o Nosethermostatchain.o Potential.o
Potential_Gupta.o Potential_LJ.o mss.o -lgetfem
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm9mult_specERKNS_18transposed_col_refIPKNS_12dense_matrixIdEEEES7_RS2_NS_6r_multE+0x292):
In function
`gmm::mult_spec(gmm::transposed_col_ref<gmm::dense_matrix<double>
const*> const&, gmm::transposed_col_ref<gmm::dense_matrix<double>
const*> const&, gmm::dense_matrix<double>&, gmm::r_mult)':
: undefined reference to `dgemm_'
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm13mult_dispatchINS_12dense_matrixIdEES2_S2_EEvRKT_RKT0_RT1_NS_15abstract_matrixE+0x792):
In function `void gmm::mult_dispatch<gmm::dense_matrix<double>,
gmm::dense_matrix<double>, gmm::dense_matrix<double>
>(gmm::dense_matrix<double> const&, gmm::dense_matrix<double> const&,
gmm::dense_matrix<double>&, gmm::abstract_matrix)':
: undefined reference to `dgemm_'
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm13mult_dispatchINS_12dense_matrixIdEES2_S2_EEvRKT_RKT0_RT1_NS_15abstract_matrixE+0xac2):
In function `void gmm::mult_dispatch<gmm::dense_matrix<double>,
gmm::dense_matrix<double>, gmm::dense_matrix<double>
>(gmm::dense_matrix<double> const&, gmm::dense_matrix<double> const&,
gmm::dense_matrix<double>&, gmm::abstract_matrix)':
: undefined reference to `dgemm_'
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm12house_vectorISt6vectorIdSaIdEEEEvRKT_+0x72):
In function `void gmm::house_vector<std::vector<double,
std::allocator<double> > >(std::vector<double, std::allocator<double> >
const&)':
: undefined reference to `dnrm2_'
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm8add_specISt6vectorIdSaIdEENS_23scaled_vector_const_refIS3_dEES3_EEvRKT_RKT0_RT1_NS_15abstract_vectorE+0x512):
In function `void gmm::add_spec<std::vector<double,
std::allocator<double> >,
gmm::scaled_vector_const_ref<std::vector<double, std::allocator<double>
>, double>, std::vector<double, std::allocator<double> >
>(std::vector<double, std::allocator<double> > const&,
gmm::scaled_vector_const_ref<std::vector<double, std::allocator<double>
>, double> const&, std::vector<double, std::allocator<double> >&,
gmm::abstract_vector)':
: undefined reference to `daxpy_'
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm30Householder_tridiagonalizationINS_12dense_matrixIdEES2_EEvRKT_RKT0_b+0x872):
In function `void
gmm::Householder_tridiagonalization<gmm::dense_matrix<double>,
gmm::dense_matrix<double> >(gmm::dense_matrix<double> const&,
gmm::dense_matrix<double> const&, bool)':
: undefined reference to `ddot_'
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm30Householder_tridiagonalizationINS_12dense_matrixIdEES2_EEvRKT_RKT0_b+0xa12):
In function `void
gmm::Householder_tridiagonalization<gmm::dense_matrix<double>,
gmm::dense_matrix<double> >(gmm::dense_matrix<double> const&,
gmm::dense_matrix<double> const&, bool)':
: undefined reference to `ddot_'
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm8lu_solveINS_12dense_matrixIdEESt6vectorIdSaIdEES5_S3_IiSaIiEEEEvRKT_RKT2_RT1_RKT0_+0x172):
In function `void gmm::lu_solve<gmm::dense_matrix<double>,
std::vector<double, std::allocator<double> >, std::vector<double,
std::allocator<double> >, std::vector<int, std::allocator<int> >
>(gmm::dense_matrix<double> const&, std::vector<int, std::allocator<int>
> const&, std::vector<double, std::allocator<double> >&,
std::vector<double, std::allocator<double> > const&)':
: undefined reference to `dtrsv_'
../getfem/lib/lib//libgetfem.a(getfem_mesh.o)(.gnu.linkonce.t._ZN3gmm8lu_solveINS_12dense_matrixIdEESt6vectorIdSaIdEES5_S3_IiSaIiEEEEvRKT_RKT2_RT1_RKT0_+0x272):
In function `void gmm::lu_solve<gmm::dense_matrix<double>,
std::vector<double, std::allocator<double> >, std::vector<double,
std::allocator<double> >, std::vector<int, std::allocator<int> >
>(gmm::dense_matrix<double> const&, std::vector<int, std::allocator<int>
> const&, std::vector<double, std::allocator<double> >&,
std::vector<double, std::allocator<double> > const&)':
: undefined reference to `dtrsv_'
../getfem/lib/lib//libgetfem.a(bgeot_geometric_trans.o)(.gnu.linkonce.t._ZN3gmm9mult_specERKNS_18transposed_col_refIPKNS_12dense_matrixIdEEEERS3_RS2_NS_6rcmultE+0x262):
In function
`gmm::mult_spec(gmm::transposed_col_ref<gmm::dense_matrix<double>
const*> const&, gmm::dense_matrix<double> const&,
gmm::dense_matrix<double>&, gmm::rcmult)':
: undefined reference to `dgemm_'
../getfem/lib/lib//libgetfem.a(bgeot_geotrans_inv.o)(.gnu.linkonce.t._ZN3gmm9mult_specERKNS_18transposed_col_refIPNS_12dense_matrixIdEEEERKS2_RS2_NS_6rcmultE+0x262):
In function
`gmm::mult_spec(gmm::transposed_col_ref<gmm::dense_matrix<double>*>
const&, gmm::dense_matrix<double> const&, gmm::dense_matrix<double>&,
gmm::rcmult)':
: undefined reference to `dgemm_'
../getfem/lib/lib//libgetfem.a(bgeot_geotrans_inv.o)(.gnu.linkonce.t._ZN3gmm9mult_specERKNS_18transposed_col_refIPNS_12dense_matrixIdEEEES6_RS2_NS_6r_multE+0x292):
In function
`gmm::mult_spec(gmm::transposed_col_ref<gmm::dense_matrix<double>*>
const&, gmm::transposed_col_ref<gmm::dense_matrix<double>*> const&,
gmm::dense_matrix<double>&, gmm::r_mult)':
: undefined reference to `dgemm_'
../getfem/lib/lib//libgetfem.a(getfem_fem.o)(.text+0x9fc62): In function
`getfem::fem_interpolation_context::hess_base_value(bgeot::tensor<double>&,
bool) const':
: undefined reference to `daxpy_'
../getfem/lib/lib//libgetfem.a(getfem_fem.o)(.gnu.linkonce.t._ZN3gmm9mult_specERKNS_12dense_matrixIdEERKNS_23scaled_vector_const_refISt6vectorIdSaIdEEdEERS7_NS_9col_majorE+0x172):
In function `gmm::mult_spec(gmm::dense_matrix<double> const&,
gmm::scaled_vector_const_ref<std::vector<double, std::allocator<double>
>, double> const&, std::vector<double, std::allocator<double> >&,
gmm::col_major)':
: undefined reference to `dgemv_'
../getfem/lib/lib//libgetfem.a(bgeot_poly_composite.o)(.gnu.linkonce.t._ZN3gmm9mult_specERKNS_18transposed_col_refIPKNS_12dense_matrixIdEEEERKSt6vectorIdSaIdEERSA_NS_9row_majorE+0x152):
In function
`gmm::mult_spec(gmm::transposed_col_ref<gmm::dense_matrix<double>
const*> const&, std::vector<double, std::allocator<double> > const&,
std::vector<double, std::allocator<double> >&, gmm::row_major)':
: undefined reference to `dgemv_'
../getfem/lib/lib//libgetfem.a(getfem_integration_composite.o)(.text+0x1ef2):
In function
`getfem::composite_approx_int_method(bgeot::mesh_precomposite const&,
getfem::mesh_im const&, boost::intrusive_ptr<bgeot::convex_of_reference
const>)':
: undefined reference to `dnrm2_'
collect2: ld returned 1 exit status
make[2]: *** [mss] Error 1
make[2]: Leaving directory
`/home/sgi/proj/proj207/gfaccin/simulacao/mss-0.1.1/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory
`/home/sgi/proj/proj207/gfaccin/simulacao/mss-0.1.1'
make: *** [all] Error 2
=============END OF LINKING ERROR=============
Any ideas are highly welcome! If you need more info, just ask!
Thanks in advance!
Giovani M. Faccin
_______________________________________________
Getfem-users mailing list
address@hidden
https://mail.gna.org/listinfo/getfem-users