← Back to team overview

dolfin team mailing list archive

Re: More link problems

 

On Wed, Mar 12, 2008 at 8:35 PM, Anders Logg <logg@xxxxxxxxx> wrote:
>
> On Wed, Mar 12, 2008 at 08:29:39PM +0100, Johan Hake wrote:
>  > On Wednesday 12 March 2008 18:56:08 Anders Logg wrote:
>  > > On Wed, Mar 12, 2008 at 11:48:19AM +0100, Johan Hake wrote:
>  > > > On Tuesday 11 March 2008 17:47:09 Matthew Knepley wrote:
>  > > > > On Tue, Mar 11, 2008 at 11:40 AM, Anders Logg <logg@xxxxxxxxx> wrote:
>  > > > > > Compiling and running C++ applications against DOLFIN now works fine
>  > > > > >
>  > > > > >  for me, but it breaks in Python:
>  > > > > >  >>> from dolfin import *
>  > > > > >
>  > > > > >  Traceback (most recent call last):
>  > > > > >   File "<stdin>", line 1, in <module>
>  > > > > >   File
>  > > > > >   "/home/logg/local/lib/python2.5/site-packages/dolfin/__init__.py",
>  > > > > >   line 4, in <module>
>  > > > > >     from assemble import *
>  > > > > >   File
>  > > > > >   "/home/logg/local/lib/python2.5/site-packages/dolfin/assemble.py",
>  > > > > >   line 17, in <module>
>  > > > > >     from dolfin import *
>  > > > > >   File
>  > > > > >   "/home/logg/local/lib/python2.5/site-packages/dolfin/dolfin.py",
>  > > > > >   line 7, in <module>
>  > > > > >     import _dolfin
>  > > > > >  ImportError: libpetscsnes.so: cannot open shared object file: No
>  > > > > > such file or directory
>  > > > > >
>  > > > > >  # pkg-config --libs dolfin
>  > > > > >  -Wl,-rpath,/usr/local/lib/petsc/lib/linux-gnu-cxx-debug -pthread
>  > > > > >  -Wl,--export-dynamic -L/home/logg/local/lib -L/usr/lib/atlas
>  > > > > >  -L/usr/local/lib/petsc/lib/linux-gnu-cxx-debug -ldolfin -lblas
>  > > > > >  -llapack -lumfpack -lamd -lpetscsnes -lpetscmat -lpetscvec -lpetscts
>  > > > > >  -lpetsc -lpetscdm -lpetscksp -lgts -lxml2 -lgthread-2.0 -lrt
>  > > > > >  -lgmodule-2.0 -ldl -lglib-2.0
>  > > > > >
>  > > > > >  Any ideas?
>  > > > > >
>  > > > > >  I guess the path to PETSc libraries was built into libdolfin.so in
>  > > > > >  some way before, but not anymore?
>  > > > >
>  > > > > Either you put -Wl,-rpath options in along with the -L options, or
>  > > > > you do some incantation with ldconfig (not my preferred option).
>  > > >
>  > > > This is possible whith scons, but Åsmund actively descided to not use it
>  > > > for simula-scons. He has experienced some problems with darwin. Maybe
>  > > > Åsmund can elaborate?
>  > > >
>  > > > Johan
>  > >
>  > > But how does it help to put in the -Wl,-rpath options to pkg-config
>  > > --libs when importing the DOLFIN Python module into Python? As far as
>  > > I know, Python does not call pkg-config, or should these options be
>  > > present when compiling the SWIG-generated wrapper?
>  >
>  > I understand the -Wl,-rpath options as "hardcoding" the path to external
>  > shared library at compile/linking time, so you do not have to provide it
>  > during runtime with e.g. the LD_LIBRARY_PATH. As far as I know the old dolfin
>  > build system included this information when the wrapper code was generated.
>  >
>  > It wont help putting this path into the pkg-config file as any such
>  > information will be ignored when parsed by simula-scons, and wont be used.
>  > Åsmund can probably elaborate on the why's here.
>  >
>  > > Does PyDOLFIN work for anyone else with the new build system?
>  >
>  > Here it works fine. I have compiled with petsc, and I have its path in the
>  > LD_LIBRARY_PATH.
>
>  It works for me also if I add the location of PETSc to my LD_LIBRARY_PATH.
>  Is this how it's supposed to work?
>
>  It seems strange that you both need to set a PETSC_DIR and then also
>  have PETSC_DIR/lib/$arch/ in the LD_LIBRARY_PATH.
>
>  Either there's a PETSC_DIR *or* PETSc is installed somewhere (in which
>  case it needs to be in a standard place like /usr/lib or in the
>  LD_LIBRARY_PATH)?

That's obvious, isn't it? Either you have to link statically, in that
case PETSC_DIR could be used during compile. Or you link dynamically,
and the linker have to know where to look during run. Either by using
LD_LIBRARY_PATH or ldconfig.

I don't like to have rpath in the system, as it is not a
crossplattform solution. Meaning we have to add complexity by
branching the different archs.


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

Åsmund

Follow ups

References