[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.



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 -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/ /u/brbarret/wotan/ompi/trunk/opal/libopen- libtool: link: gcc -Wl,-flat_namespace -Wl,-undefined - Wl,suppress -o .libs/ -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

Attachment: libtool_otool64.diff
Description: Binary data

reply via email to

[Prev in Thread] Current Thread [Next in Thread]