[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(no subject)
From: |
Brian W. Barrett |
Subject: |
(no subject) |
Date: |
Mon, 22 Jan 2007 16:05:04 -0700 |
Hi -
I think I've stumbled on a bug in the libtool 2 snapshots (in
particular, last night's snapshot) when building 64 bit builds on OS
X. I've run into this when building Open MPI, but I think it could
happen on any project that had internal library dependencies. Builds
will fail with the error message below the first time something tries
to link against a shared library that has a dependency on another
shared library (in this case, the errmgr_hnp component depends on
libopen-rte, which depends on libopen-pal).
I've tracked the issue down to the code that tries to track down the
locations of dependent libraries. Libtool is using otool to poke at
the dependent shared libraries, which will work great on all versions
of OS X for 32 bit builds. However, it will only work with the yet-
unreleased 10.5 for 64 bit builds. On 10.4 (and I believe 10.3.9,
although I don't have access to a machine running 10.3.9 right now),
you have to use otool64 to poke at a 64 bit library. The best way I
could find to solve this issue was to look at the result of poking at
a library with otool and if we got an empty string, poke at otool64.
As far as I know, there should always be the location line if otool
works, so this should be sufficient.
I've attached a patch against last night's libtool 2.1 snapshot that
fixes this issue for Open MPI.
Thanks,
Brian
if /bin/sh ../../../../libtool --tag=CC --mode=compile gcc -
DHAVE_CONFIG_H -I. -I. -I../../../../opal/include -I../../../../orte/
include -I../../../../ompi/include -I../../../../ompi/include -
I../../../.. -D_REENTRANT -m64 -g -Wall -Wundef -Wno-long-long -
Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wcomment -
pedantic -Wno-long-double -Werror-implicit-function-declaration -
finline-functions -fno-strict-aliasing -MT errmgr_hnp.lo -MD -MP -MF
"$depbase.Tpo" -c -o errmgr_hnp.lo errmgr_hnp.c; \then mv -f
"$depbase.Tpo" "$depbase.Plo"; else rm -f "$depbase.Tpo"; exit 1;
filibtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I../../../../opal/
include -I../../../../orte/include -I../../../../ompi/include -
I../../../../ompi/include -I../../../.. -D_REENTRANT -m64 -g -Wall -
Wundef -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wstrict-
prototypes -Wcomment -pedantic -Wno-long-double -Werror-implicit-
function-declaration -finline-functions -fno-strict-aliasing -MT
errmgr_hnp.lo -MD -MP -MF .deps/errmgr_hnp.Tpo -c errmgr_hnp.c -fno-
common -DPIC -o .libs/errmgr_hnp.o/bin/sh ../../../../libtool --
tag=CC --mode=link gcc -m64 -g -Wall -Wundef -Wno-long-long -Wsign-
compare -Wmissing-prototypes -Wstrict-prototypes -Wcomment -pedantic -
Wno-long-double -Werror-implicit-function-declaration -finline-
functions -fno-strict-aliasing -export-dynamic -Wl,-u,_munmap -
Wl,-multiply_defined,suppress -o mca_errmgr_hnp.la -rpath /u/brbarret/
Software/powerpc-apple-darwin8/ompi/devel/lib/openmpi -module -avoid-
version errmgr_hnp_component.lo errmgr_hnp.lo /u/brbarret/wotan/ompi/
trunk/orte/libopen-rte.la /u/brbarret/wotan/ompi/trunk/opal/libopen-
pal.la libtool: link: gcc -Wl,-flat_namespace -Wl,-undefined -
Wl,suppress -o .libs/mca_errmgr_hnp.so -bundle .libs/
errmgr_hnp_component.o .libs/errmgr_hnp.o /u/brbarret/wotan/ompi/
trunk/orte/.libs/libopen-rte.dylib /u/brbarret/wotan/ompi/trunk/
opal/.libs/libopen-pal.dylib -m64 -Wl,-u -Wl,_munmap -Wl,-
multiply_defined -Wl,suppress -Wl,-dylib_file -Wl,:/u/brbarret/
wotan/ompi/trunk/opal/.libs/libopen-pal.dylib /usr/bin/ld: -
dylib_file argument: :/u/brbarret/wotan/ompi/trunk/opal/.libs/libopen-
pal.dylib must have a ':' between its file namescollect2: ld returned
1 exit status
--
Brian Barrett
Open MPI Team, CCS-1
Los Alamos National Laboratory
libtool_otool64.diff
Description: Binary data
- (no subject),
Brian W. Barrett <=