← Back to team overview

dolfin team mailing list archive

Re: Linking dolfin with umfpack from petsc

 

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