On Nov 10, 2008, at 2:18 PM, Oleg V. Zhylin wrote:

Right -- OMPI builds shared libraries by default.

What is the proper way to build static libraries from RPM? Or tarball is the only option to accomplish this?

You can pass any options to OMPI's configure script through the rpmbuild interface, such as:

rpmbuild \
--define 'configure_options CFLAGS=-g --with-openib=/usr/local/ ofed --disable-shared --enable-static' ...

But be aware that static linking is not for the weak, especially if you're using high-speed networks. Check out both of these:

http://www.open-mpi.org/faq/?category=mpi-apps#static-mpi-apps
http://www.open-mpi.org/faq/?category=mpi-apps#static-ofa-mpi-apps

Really?  That's odd -- our mpif90 simply links against
-lmpi_f90, not specifically .a or .so.  You can run
"mpif90 --showme" to see the command that our
wrapper *would* execute.  You can also tweak the flags that
OMPI passes to the wrapper compilers; see this FAQ entry:

Well, I suppose if removing -lmpi_f90 and other mpi libs from command-line would defeat the purpose of building an MPI executable. Moreover ld manual page says that on platforms that support shared libraries it looks for .so first and .a after that.

That's pretty standard behavior that has been around for forever.

But I've tried Fedora Core 6 and 9 and both give same result and on both strace shows that ld doesn't attempt to look for libmpi_f90.so at all.

Are you saying that you have libmpi_f90.so available and when you try to run, you get missing symbol errors? Or are you failing to compile/ link at all?

Does anyone has experience building MPI on Fedora?

FWIW: building on Fedora should be little different than building on other Linux systems.

Are there any additional steps required other then yum install openmpi*?


I always build via source (but I'm a developer, so my bias is a little different ;-) ). I'm unfamiliar with Fedora's yum repositories...

--
Jeff Squyres
Cisco Systems

Reply via email to