> I'm using essentially an identical configuration.  OpenMPI uses an ambitious
> set of shared libraries that defy typical PETSc snooping.
>
> The easy answer is to use the compiler wrappers provided with OpenMPI:
> $ ./configure --with-cxx=mpicxx --with-cc=mpicc --with-f77=mpif77
>
> ...and all the other options you had.


This works, thanks a lot! Now the package builds and ex2.C works.

But now I have hard time with the libgmv.so library, which
was added in 0.6.1? It seems libmesh is depending on it.
I created preliminary libmesh Debian package here:

http://debian.certik.cz/

But when building an example in the standard Debian way (but I think
it's the standard linux way):

$ g++ -I/usr/include/libmesh -I/usr/include/mpi -I/usr/include/petsc
-c -o ex2.o ex2.C
$ g++ -o ex2 ex2.o -lmesh -lpetsc -lpetscdm -lpetscksp -lpetscmat
-lpetscsnes -lpetscts -lpetscvec
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libmesh.so:
undefined reference to `gmv_data'
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libmesh.so:
undefined reference to `gmvread_data'
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libmesh.so:
undefined reference to `gmvread_close'
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libmesh.so:
undefined reference to `gmvread_open_fromfileskip'
collect2: ld returned 1 exit status


This used to work with 0.6.0 in Debian. So I included the libgmv.so in
the Debian package as well, put it to /usr/lib, but it seems it
doesn't work:

$ g++ -o ex2 ex2.o -lmesh -lgmv -lpetsc -lpetscdm -lpetscksp
-lpetscmat -lpetscsnes -lpetscts -lpetscvec
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libmesh.so:
undefined reference to `gmv_data'
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libmesh.so:
undefined reference to `gmvread_data'
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libmesh.so:
undefined reference to `gmvread_close'
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libmesh.so:
undefined reference to `gmvread_open_fromfileskip'
collect2: ld returned 1 exit status

So I looked at what libraries you are linking in your way of building things:

$ make
Compiling C++ (in optimized mode) ex2.C...
Linking ex2-opt...
mpicxx -DNDEBUG  -O2 -felide-constructors -fPIC -funroll-loops
-fstrict-aliasing -Wdisabled-optimization
-DPETSC_USE_DYNAMIC_LIBRARIES  ex2.i686-pc-linux-gnu.opt.o -o ex2-opt
/home/ondra/debian/test/libmesh-0.6.1/lib/i686-pc-linux-gnu_opt/libmesh.so
      
/home/ondra/debian/test/libmesh-0.6.1/contrib/lib/i686-pc-linux-gnu_opt/libgmv.so
-L/usr/lib/petsc/lib/linux-gnu-c-opt -lpetscsnes -lpetscksp -lpetscdm
-lpetscmat -lpetscvec -lpetscsnes -lpetsc     -L/usr/lib -L/usr/lib
-lumfpack -L/usr/lib -L/usr/lib -lamd -L/usr/lib -L/usr/lib -lsuperlu
  -llapack-3 -lblas-3 -L/usr/lib/gcc/i486-linux-gnu/4.2.3
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../.. -ldl
-lmpi -lopen-rte -lopen-pal -lnsl -lutil -lgcc_s -lpthread -lmpi_f90
-lmpi_f77 -lgfortranbegin -lgfortran -lm -lm -lm -lm
-L/usr/lib/gcc/i486-linux-gnu/4.2.3
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../.. -ldl
-lmpi -lopen-rte -lopen-pal -lnsl -lutil -lgcc_s -lpthread -lmpi_f90
-lmpi_f77 -lgfortranbegin -lgfortran -lm -lm -lm -lm -lX11
-L/usr/lib/gcc/i486-linux-gnu/4.2.3
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../..
-lmpi_f77 -lmpi -lopen-rte -lopen-pal -ldl -lnsl -lutil
-lgfortranbegin -lgfortran -lm -lgcc_s -lpthread
-Wl,-rpath,/home/ondra/debian/test/libmesh-0.6.1/lib/i686-pc-linux-gnu_opt
-Wl,-rpath,/home/ondra/debian/test/libmesh-0.6.1/contrib/lib/i686-pc-linux-gnu_opt
-Wl,-rpath,/usr/lib/petsc/lib/linux-gnu-c-opt
$

So I tried the same:

$ g++ -o ex2 ex2.o /usr/lib/libmesh.so -lpetsc -lpetscdm -lpetscksp
-lpetscmat -lpetscsnes -lpetscts -lpetscvec
/usr/lib/libmesh.so: undefined reference to `gmv_data'
/usr/lib/libmesh.so: undefined reference to `gmvread_data'
/usr/lib/libmesh.so: undefined reference to `gmvread_close'
/usr/lib/libmesh.so: undefined reference to `gmvread_open_fromfileskip'
collect2: ld returned 1 exit status


No luck - of course, the libgmv is not linked. But:

$ g++ -o ex2 ex2.o /usr/lib/libmesh.so /usr/lib/libgmv.so -lpetsc
-lpetscdm -lpetscksp -lpetscmat -lpetscsnes -lpetscts -lpetscvec
/usr/lib/libmesh.so: undefined reference to `gmv_data'
/usr/lib/libmesh.so: undefined reference to `gmvread_data'
/usr/lib/libmesh.so: undefined reference to `gmvread_close'
/usr/lib/libmesh.so: undefined reference to `gmvread_open_fromfileskip'
collect2: ld returned 1 exit status


Do you have any idea what's wrong?

Ondrej

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to