You're correct - adding --enable-static (or it's file equivalent enable_static) causes components to be linked into libmpi instead of left as individual components. This is probably a bug, but it's what Open MPI's done for it's entire life, so it's unlikely to change. Removing the enable_dlopen=no means that Open MPI will look for other dynamicaly loaded components, so that should be sufficient for your use as long as mpicc properly added -Wl,--export-dynamic (which it used to do). To be safe, however, you might want to also remove the enable_static line from the file.
The static library warnings are more about doing a completely static link (including libc and crt0) than about linking against libmpi.a. The memory tricks needed to support RDMA networks on Linux are the main driver behind those statements.
On Oct 5, 2010, at 3:29 PM, David Turner wrote:
> Hi Jeff,
> Thanks for the response. Reviewing my builds, I realized that for
> 1.4.2, I had configured using
> per Ralph Castain's suggestion. That file includes both:
> Here is my *real* issue. I am trying to test Voltaire's Fabric
> Collective Accelerator, which extends mca_component_path, and
> adds a few additional .so files. It appears I must have
> enable_dlopen=yes for this to work, which makes sense.
> I assume that the shared/static settings above result in
> *both* .a and .so versions of the ompi libraries getting
> built. I'm not sure if this will affect my ability to
> use Voltaire's mca plugins, but I have determined that
> simply removing the enable_dlopen=no is not sufficient
> to restore all the ompi .so files. I assume (haven't
> tried it yet) that removing the enable_static=yes will
> result in the ompi .so files getting created.
> I guess I'm just looking for some guidance in the use
> of the above options. I have read many warnings on
> the ompi website about trying to link statically.
> On 10/5/10 7:17 AM, Jeff Squyres wrote:
>> It is more than likely that you compiled Open MPI with --enable-static and/or --disable-dlopen. In this case, all of Open MPI's plugins are slurped up into the libraries themselves (e.g., libmpi.so or libmpi.a). That's why everything continues to work properly.
>> On Oct 4, 2010, at 6:58 PM, David Turner wrote:
>>> In Open MPI 1.4.1, the directory lib/openmpi contains about 130
>>> entries, including such things as mca_btl_openib.so. In my
>>> build of Open MPI 1.4.2, lib/openmpi contains exactly three
>>> libompi_dbg_msgq.a libompi_dbg_msgq.la libompi_dbg_msgq.so
>>> I have searched my 1.4.2 installation for mca_btl_openib.so,
>>> to no avail. And yet, 1.4.2 seems to work "fine". Is my
>>> installation broken, or is the organization significantly
>>> different between the two versions? A quick scan of the
>>> release notes didn't help.
>>> Best regards,
>>> David Turner
>>> User Services Group email: dpturner_at_[hidden]
>>> NERSC Division phone: (510) 486-4027
>>> Lawrence Berkeley Lab fax: (510) 486-4316
>>> users mailing list
> Best regards,
> David Turner
> User Services Group email: dpturner_at_[hidden]
> NERSC Division phone: (510) 486-4027
> Lawrence Berkeley Lab fax: (510) 486-4316
> users mailing list
Brian W. Barrett
Dept. 1423: Scalable System Software
Sandia National Laboratories