Just to strengthen what Brian said...
We agree that what you cite is a problem. The only issue is that we
don't know of any way to do it better -- Brian laid out the 3 possible
options below pretty well. --enable-mca-static might be a decent
solution for you; you still build libmpi.so (not libmpi.a), but all
the plugins are slurped up into libmpi instead of being dlopened at
It's really a larger issue than just Open MPI -- private namespaces
are, in general, a Good Thing, but they are problematic for *any*
plugin-based system that gets opened in a private namespace. What
would be a Real solution would be somehow having a way that Open MPI
could dlopen its plugins *within* its private namespace. That's
unfortunately beyond our control to influence.
On Mar 25, 2009, at 9:10 AM, Brian W. Barrett wrote:
> On Mon, 23 Mar 2009, Olaf Lenz wrote:
> > and the solution that is described there still looks as though it
> > still work now, or shouldn't it? Just link all the OpenMPI plugins
> > the base OpenMPI libraries, and it should work. Or am I wrong?
> I believe your suggestion will not work, certainly not portably. In
> it will die in horrible ways. We used to link in the way you
> and what you end up with is a bunch of copies of libmpi, all in
> their own
> namespace. Hardly helpful :).
> Unfortunately, there are only three rational solutions I've thought
> of to
> the problem:
> * Do nothing, my prefered solution
> * Stop building components by default
> * Have libmpi be a thin wrapper, which dlopens Open MPI's guts into
> public namespace, and the guts then dlopen all the components.
> Obviously, the first serves the greatest community and involves the
> amount of work. However, packagers such as the Linux distributions
> make a decision about how to best package Open MPI -- perhaps shipping
> it built with components is not the ideal solution for their
> I did want to point out one incorrect statement in your e-mail. While
> specifying "--enable-shared --enable-static" to configure will cause
> components to be linked into libmpi rather than built as stand-alone
> entities, a better way to accomplish that is "--enable-mca-static",
> will build all the components into libmpi.so, but not also cause
> to be built.
> users mailing list