getfem-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-users] Help with portability error


From: Giovani
Subject: [Getfem-users] Help with portability error
Date: Mon, 11 Dec 2006 14:22:53 -0200
User-agent: Thunderbird 1.5.0.8 (X11/20061112)

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]