On Thu, 29 Oct 2009, Lisandro Dalcin wrote: > >> > IMHO, I think that what Jed suggested in previous mail about using > >> > -Wl,-whole-archive ${PETSC_EXTERNAL_LIB} -Wl,-no-whole-archive when > >> > --with-shared is in action could be a VERY good idea... Then PETSc > >> > link lines will not need to refer at all to these static libs from > >> > external packages... > > > > This works for folks who use PETSc - and nothing else. But once you > > have 2 packages doing this [say both add in hypre symbols] - and then > > some user wants to use these two packages - you have conflicts. [esp > > with multiple copies of global variables etc..] > > > > And can you explain me how the current situation is better?
Yes the current situation doesn't fix the above problem. > Let's > suppose other self-contained beast like PETSc also builds a static > hypre lib... then when you mix stuff, you have two libhypre.a at > different places... Then you link your program... and the linker will > likely pick one... which one? whatever... All this works by accident, > I think... Yes. it becomes harder. The thing I keep recommending in these cases is: make sure only one copy of the package is in the whole chain of packages. [just like we keep recommending - use the same compile to compile every package, use the same MPI across all packages etc..] [note the problem with sharedlibraries can exists even if only one copy of a package is maintained] > So I still think that for petsc-downloaded external packages built as > static libs, the -W,-whole-archive should be used... If this is not > what users want, then they should previously build these ext packages > themselves and pass info to configure.py... After all, when I ask > PETSc to download a pkg is because I do not have it built/installed... > for example, I never petsc-download blas/lapack because I have them in > my boxes... The same applies with MPI, I've never --download-mpi... > > Satish, please note that I'm talking about using --whole-archive ONLY > with the pkgs that PETSc automatically downloads upon user requests > using --download-<pkg> ... Since the curent thing is broken anyway - I guess I shouldn't object to this change.. satish > > > > > > The ideal solution is to have every library have its own .so > > file.. [but this is not easy] > > > > Satish > > > > Yes... Perhaps it is not that hard... > > > >