[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Possible problem with LT 2.2
From: |
Jeff Squyres |
Subject: |
Possible problem with LT 2.2 |
Date: |
Fri, 14 Mar 2008 19:35:39 -0400 |
Greetings.
I noticed an odd problem earlier today when building the Open MPI
development trunk from subversion on a Linux RHEL4U4 system (x86_64)
with gcc and LT 2.2, AM 1.10, and AC 2.61.
A little background:
- Open MPI is based on plugins. We use libltdl to lt_dlopen() various
types of plugins. One type of plugin is called "btl" (byte transfer
layer), which loosely translates to what kind of network you're using.
- The default Open MPI build is to create shared libraries (libmpi.so)
and build the plugins as DSOs (e.g., mca_btl_tcp.so). However, if
OMPI's configure script detects "--enable-static --disable-shared", it
will instead build all the plugins as convenience libraries and
include them in libmpi.a.
- The default build is working fine. But when I manually configure
with --enable-static --disable shared, I'm getting a missing symbols
error when trying to link an executable that links against libmpi.a.
- The missing symbols are originating from the SCTP BTL plugin. The
SCTP plugin has a dependency against the sctp library (I have both
libsctp.so and libsctp.a on my system). When mca_btl_sctp.la is
created, it contains the following line:
dependency_libs=' /usr/lib64/libsctp.la -lnsl -lutil -lm'
- mca_btl_sctp.la is then sucked into libmpi.la via libmpi_la_LIBADD.
However, its dependency_libs value seems to be missing any mention of
the libsctp dependency:
dependency_libs=' -libverbs -lrt /users/jsquyres/svn/ompi2/orte/
libopen-rte.la users/jsquyres/svn/ompi2/opal/libopen-pal.la -lnuma -
ldl -lnsl -lutil -lm'
(all the other entries in there look good)
- It seems to directly follow that when I try to link an executable
against libmpi.a (more specifically, libmpi.la is in the executable's
LDADD), it can't find some symbols that exist in libsctp.a and the
link fails.
- Here's the libtool link command that generates mca_btl_sctp.la:
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../../../opal/include -
I../../../../orte/include -I../../../../ompi/include -I../../../../
opal/mca/paffinity/linux/plpa/src/libplpa -I../../../.. -g -Wall -
Wundef -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wstrict-
prototypes -Wcomment -pedantic -Werror-implicit-function-declaration -
finline-functions -fno-strict-aliasing -pthread -MT btl_sctp_utils.lo -
MD -MP -MF .deps/btl_sctp_utils.Tpo -c btl_sctp_utils.c -fPIC -DPIC -
o .libs/btl_sctp_utils.o
/bin/sh ../../../../libtool --tag=CC --mode=link gcc -g -Wall -
Wundef -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wstrict-
prototypes -Wcomment -pedantic -Werror-implicit-function-declaration -
finline-functions -fno-strict-aliasing -pthread -module -avoid-
version -export-dynamic -o mca_btl_sctp.la -rpath /home/jsquyres/
bogus/lib/openmpi btl_sctp.lo btl_sctp_component.lo
btl_sctp_endpoint.lo btl_sctp_frag.lo btl_sctp_proc.lo
btl_sctp_recv_handler.lo btl_sctp_utils.lo -lsctp -lnsl -lutil -lm
libtool: link: gcc -shared .libs/btl_sctp.o .libs/
btl_sctp_component.o .libs/btl_sctp_endpoint.o .libs/
btl_sctp_frag.o .libs/btl_sctp_proc.o .libs/
btl_sctp_recv_handler.o .libs/btl_sctp_utils.o -Wl,-rpath -Wl,/usr/
lib64 -Wl,-rpath -Wl,/usr/lib64 /usr/lib64/libsctp.so -lnsl -lutil -
lm -pthread -pthread -Wl,-soname -Wl,mca_btl_sctp.so -o .libs/
mca_btl_sctp.so
libtool: link: creating mca_btl_sctp.la
libtool: link: ( cd ".libs" && rm -f "mca_btl_sctp.la" && ln -s "../
mca_btl_sctp.la" "mca_btl_sctp.la" )
- Per request from Ralf W., I ran the libtool command manually, but
with --debug as the first argument. It's unfortunately not much more
information:
% /bin/sh --debug ../../../../libtool --tag=CC --mode=link gcc -g -
Wall -Wundef -Wno-long-long -Wsign-compare -Wmissing-prototypes -
Wstrict-prototypes -Wcomment -pedantic -Werror-implicit-function-
declaration -finline-functions -fno-strict-aliasing -pthread -module -
avoid-version -export-dynamic -o mca_btl_sctp.la -rpath /home/jsquyres/
bogus/lib/openmpi btl_sctp.lo btl_sctp_component.lo
btl_sctp_endpoint.lo btl_sctp_frag.lo btl_sctp_proc.lo
btl_sctp_recv_handler.lo btl_sctp_utils.lo -lsctp -lnsl -lutil -lm | &
tee lt-debug.out
libtool: link: rm -fr .libs/mca_btl_sctp.a .libs/
mca_btl_sctp.la .libs/mca_btl_sctp.lai
libtool: link: ar cru .libs/mca_btl_sctp.a btl_sctp.o
btl_sctp_component.o btl_sctp_endpoint.o btl_sctp_frag.o
btl_sctp_proc.o btl_sctp_recv_handler.o btl_sctp_utils.o
libtool: link: ranlib .libs/mca_btl_sctp.a
libtool: link: ( cd ".libs" && rm -f "mca_btl_sctp.la" && ln -s "../
mca_btl_sctp.la" "mca_btl_sctp.la" )
- The command to create libmpi.a is extremely long, so I included it
in an attachment. More specifically, I have attached the following:
- Full output from configure (I doubt it will help, but more
information is better than less; you can see the checks for libsctp in
the middle)
- The resulting config.log file
- Full output from make (the building of mca_btl_sctp.la is buried
in the middle)
- Output from ./libtool --config
- Output from ./libtool --config --tag=CC
Any ideas what the problem could be here?
Please let me know if I can provide any further information. Thanks!
--
Jeff Squyres
Cisco Systems
lt22-possible-bug.tar.bz2
Description: Binary data
- Possible problem with LT 2.2,
Jeff Squyres <=
Re: Possible problem with LT 2.2, Ralf Wildenhues, 2008/03/14