← Back to team overview

dolfin team mailing list archive

Re: Linking dolfin with umfpack from petsc

 

Are there any C++ experts that can highlight this problem? The order of the arguments and the filename given to the compiler, that is? It would be simple enough to change the order to fix this, but I'm always curious as to why something like that would work.

ilmar

Ilmar Wilbers wrote:
OK, I'm sorry for spamming, but I'm getting a bit frustrated, I think it
is time to go home.

But could someone please explain me this:
Running python
scons/simula-scons/simula_scons/pkgconfiggenerators/umfpack.py results in
the following commands being run:
g++ -I../../SuiteSparse/UMFPACK/Include -I../../SuiteSparse/AMD/Include
-I../../SuiteSparse/UFconfig umfpack_config_test_include.cpp
-L/usr/lib/atlas -lblas -L../../SuiteSparse/UMFPACK/Lib -lumfpack
-L../../SuiteSparse/AMD/Lib -lamd
g++ -I../../SuiteSparse/UMFPACK/Include -I../../SuiteSparse/AMD/Include
-I../../SuiteSparse/UFconfig -c umfpack_config_test_lib.cpp
g++ -L/usr/lib/atlas -lblas -L../../SuiteSparse/UMFPACK/Lib -lumfpack
-L../../SuiteSparse/AMD/Lib -lamd umfpack_config_test_lib.o

The first two are always successfull, whereas the last ones causes the
linking error. But when writing:
g++ umfpack_config_test_lib.o -L/usr/lib/atlas -lblas
-L../../SuiteSparse/UMFPACK/Lib -lumfpack -L../../SuiteSparse/AMD/Lib
-lamd
instead of
g++ -L/usr/lib/atlas -lblas -L../../SuiteSparse/UMFPACK/Lib -lumfpack
-L../../SuiteSparse/AMD/Lib -lamd umfpack_config_test_lib.o
that is, moving umfpack_config_test_lib.o directly after g++, it works.

Could someone please explain this to me?

ilmar


i get the exact same error when using the umfpack i downloaded
manually... i don't get it.

ilmar

Ilmar Wilbers wrote:
it seems the problem has been there earlier. it is always good fun when
you are googling for a solution and it points back to the dolfin-dev
mailinglist
http://www.mail-archive.com/dolfin-dev@xxxxxxxxxx/msg02297.html

i tried johannes' suggestion, but i still get the linking error

ilmar

Ilmar Wilbers wrote:

well, i am currently updating
http://www.fenics.org/wiki/A_detailed_guide_to_installing_DOLFIN
it is for older systems, or systems without package managers. i have
had
some questions from people who use some linux distros that are not
quite
as common.

here, the umfpack from petsc is used.

ilmar

Garth N. Wells wrote:


Ilmar Wilbers wrote:


I cannot figure this one out. To me, it seems that petsc doesn't
build
umfpack so that we can use it with dolfin. I am trying to update the
wiki
with the detailed instructions. The nice feature of using the umfpack
that
comoes with petsc is that one doesn't need to download and configure/
make
three different packages (umfpack/ amd/ ufconfig).



But UMFPACK comes as a package for all mainstream Linux distributions
and for OSX through fink, so why do you want to build it?

A more worthwhile pursuit would be getting PETSc to use the installed
UMFPACK. I had a quick go at this, but didn't pursue it.

Garth



Will leave this untill someone can tell we what I am doing wrong.

ilmar



I am trying to use the umfpack that came with petssc. Petsc is
configured
as follows:
./config/configure.py --with-mpi-dir=$INSTALL_PATH
--with-clanguage=cxx
--download-hypre=yes --enable-hypre=1 --download-umfpack=yes
--enable-umfpack=1 --enable-shared=1

What options do I need to give to scons? I tried setting the
variable
UMFPACK_DIR to
$PETSC_DIR/externalpackages/UMFPACKv4.3/linux-gnu-cxx-debug/UMFPACK

I also tried to add
$PETSC_DIR/externalpackages/UMFPACKv4.3/linux-gnu-cxx-debug/UMFPACK/Lib
to
LD_LIBRARY_PATH, still without success (Anders thought this wasn't
necessary as petsc was configured with enable-shared). I keep
getting a
linking error when running the package config generator:
umfpack_config_test_lib.o: In function `main':
umfpack_config_test_lib.cpp:(.text+0x59): undefined reference to
`umfpack_di_symbolic(int, int, int const*, int const*, double
const*,
void**, double const*, double*)'
umfpack_config_test_lib.cpp:(.text+0x91): undefined reference to
`umfpack_di_numeric(int const*, int const*, double const*, void*,
void**,
double const*, double*)'
umfpack_config_test_lib.cpp:(.text+0x9c): undefined reference to
`umfpack_di_free_symbolic(void**)'
umfpack_config_test_lib.cpp:(.text+0xe5): undefined reference to
`umfpack_di_solve(int, int const*, int const*, double const*,
double*,
double const*, void*, double const*, double*)'
umfpack_config_test_lib.cpp:(.text+0xf0): undefined reference to
`umfpack_di_free_numeric(void**)'
collect2: ld returned 1 exit status

Running 'ar t' on libumfpack.a indicates that it is available. Any
hints?

ilmar

_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev



_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev


_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev


_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev

_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev





Follow ups

References