I cannot find SAMappingInitializePackage in PETSc. 

    This option 
> -with-c-support 

means that PETSc is compiled with the C++ compiler but without C++ name 
mangling turned on (so that functions can be called from code compiled with the 
C compiler).  There is rarely a need to use this option since if you want to 
use PETSc from C just build it with the C compiler. 

   Why are you using this option?

   Now your problem comes up because whoever provided 
SAMappingInitializePackage did not do it correctly. Likely the prototype for it 
does not wrap it in extern C so that when called it gets mangled but when the 
code is compiled it does not mangle.

   Please switch to petsc-3.3 where fortunately all that 
SAMappingInitializePackage has been removed and the problem will go away.

   Barry

The person who put this incorrect SAMappingInitializePackage no longer has 
write access to PETSc source code so cannot cause these problems again in the 
future.




On Jun 20, 2012, at 3:52 AM, Juha J?ykk? wrote:

> Dear list,
> 
> I have a strange linking problem with libpetsc.so. After running 'make 
> PETSC_DIR=$(pwd) PETSC_ARCH=linux-gnu-cxx-opt all', the library looks like 
> this:
> 
> ~> nm linux-gnu-cxx-opt/lib/libpetsc.so|grep SAMappingInitializePackage
> 000000000048b4fe T SAMappingInitializePackage
>                 U _Z26SAMappingInitializePackagePKc
> 00000000006060b0 r _ZZ26SAMappingInitializePackageE8__func__
> 
> And, of course, make install will not fix it and therefore make test fails 
> and 
> all programs using it fail.
> 
> Any ideas what could be causing this? It looks to me as if part of the code 
> was compiled with mpicxx and got the names mangled in C++ fashion (hence 
> _Z26SAMappingInitializePackagePKc) but for other parts, mpicc was used (hence 
> no mangling and SAMappingInitializePackage). But why?
> 
> I have --CC=mpicc.openmpi-gcc-1.4.4 --CXX=mpicxx.openmpi-gcc-1.4.4 on the 
> congfigure line, so the compilers should be fine. The complete configure line 
> is:
> 
> ./configure --prefix=${PREFIX}/petsc --with-shared-libraries --with-
> debugging=0 --with-fortran=0 --with-clanguage=C++ --with-dynamic-loading --
> with-c-support --useThreads=0 --with-mpi-shared=1 --with-hdf5=1 --with-gnu-
> compilers=1 --with-vendor-compilers=\[pathscale,intel\] --with-hdf5-
> dir=${HDF5_DIR} --with-petsc-arch=linux-gnu-cxx-opt --CC=mpicc.openmpi-
> gcc-1.4.4 --CXX=mpicxx.openmpi-gcc-1.4.4
> 
> and is the exact same line as I have used on numerous other machines, too.
> 
> Any ideas what's wrong or how to debug this?
> 
> Cheers,
> Juha

Reply via email to