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