Something (probably in configure.ac) is picking up your lib64 path and
adding it to your LIBS or LDFLAGS. This is typically done by (broken?)
autoconf m4 macros that get included (such as older sdl.m4 versions) or
from using the wrong PKG_CONFIG_PATH in your environment.

I'd suggest making sure that PKG_CONFIG_PATH points to pkgconfig
directories that are for the 32-bit versions of your packages.

You should scan config.log and the generated Makefile's in your project
to see where it is getting these paths from.

Libtool doesn't perform much low-level investigation of the library file
types, nor does it rewrite paths to accommodate the 20-million different
ways that vendors install 32/64-bit libraries on the same system. 

Additionally, there may be legitimate cases where you actually want to
link 32 and 64-bit objects together. You just don't want to do this in
your example case here.

I am not an expert on pathCC, however the -m32 option (or -m64) is
supposed to modify the default search paths that are used to #include
and to link libraries and executables, in addition to generating 32-bit
(or 64-bit) code. If you (the developer) add more -L or -I paths to your
command line that have 64-bit (or 32-bit) code that is not compatible,
then GCC typically considers this to be "your fault" and doesn't make an
attempt to recognize "user errors" such as this.

It isn't a bug in libtool (because we want libtool to "act" like the
compiler/linker to a great extent), but I think it warrants further
documentation because this problem comes up a lot for me (FreeBSD/amd64)
when I am not paying enough attention to my environment.

Specifically, you are linking in "/usr/lib64/libstdc++.so" by absolute
file name, which is considered to be in the categories of "user error".
You need to find out what package is adding that 64-bit static library
to your LDFLAGS, LIBS, or similar linker flags.

On Thu, 2009-03-12 at 11:25 -0500, Ethan Mallove wrote:
> Hello,
> 
> Libtool is trying to link in 64-bit libs on a -m32 compile with the
> Pathscale C++ compiler. E.g., 
> 
>   /bin/sh ../../../libtool --tag=CXX   --mode=link pathCC  -O3 -DNDEBUG -Wall 
> -m32 -Wundef -Wno-long-long -finline-functions -fexceptions -pthread  
> -export-dynamic  -fexceptions  -o libmpi_cxx.la -rpath 
> /opt/SUNWhpc/HPC8.2/pathscale/lib mpicxx.lo intercepts.lo comm.lo datatype.lo 
> win.lo file.lo ../../../ompi/libmpi.la -lnsl -lutil  -lm                 
> libtool: link: pathCC -shared -nostdlib   .libs/mpicxx.o .libs/intercepts.o 
> .libs/comm.o .libs/datatype.o .libs/win.o .libs/file.o   -Wl,-rpath 
> -Wl,/home/emallove/v1.3/ompi/.libs -Wl,-rpath 
> -Wl,/home/emallove/v1.3/orte/.libs -Wl,-rpath 
> -Wl,/home/emallove/v1.3/opal/.libs -Wl,-rpath 
> -Wl,/opt/SUNWhpc/HPC8.2/pathscale/lib -L/home/emallove/v1.3/orte/.libs 
> -L/home/emallove/v1.3/opal/.libs ../../../ompi/.libs/libmpi.so 
> /home/emallove/v1.3/orte/.libs/libopen-rte.so 
> /home/emallove/v1.3/opal/.libs/libopen-pal.so -ldl -lnsl -lutil 
> -L/ws/ompi-tools/pathscale/3.2/lib/3.2/32 
> -L/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/32 
> -L/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3 
> -L/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../../../x86_64-suse-linux/lib/../lib
>  
> -L/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../../../x86_64-suse-linux/lib
>  -L/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../../../lib 
> -L/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../.. -L/lib/../lib 
> -L/usr/lib/../lib -lpthread -lpscrt -lmv -lmpath /usr/lib64/libstdc++.so 
> -lgcc_s -lm -lc -lgcc_s_32 
> /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../../../lib/crti.o 
> /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/32/crtbeginS.o 
> /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/32/crtendS.o 
> /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../../../lib/crtn.o  -m32 
> -pthread   -pthread -Wl,-soname -Wl,libmpi_cxx.so.0 -o 
> .libs/libmpi_cxx.so.0.0.0
>   /usr/lib64/libstdc++.so: could not read symbols: Invalid operation
>   collect2: ld returned 1 exit status
>   make: *** [libmpi_cxx.la] Error 1
> 
>   $ pathCC --version
>   PathScale(TM) Compiler Suite: Version 3.2
>   Built on: 2008-06-16 16:45:36 -0700
>   Thread model: posix
>   GNU gcc version 3.3.1 (PathScale 3.2 driver)
>   $ uname -a
>   Linux burl-ct-v20z-13 2.6.5-7.308-smp #1 SMP Mon Dec 10 11:36:40 UTC 2007 
> x86_64 x86_64 x86_64 GNU/Linux
>   $ cat /etc/SuSE-release
>   SUSE LINUX Enterprise Server 9 (x86_64)
>   VERSION = 9
>   PATCHLEVEL = 4
> 
> Is this a bug?
> 
> -Ethan
> 

-- 
Coleman Kane



_______________________________________________
http://lists.gnu.org/mailman/listinfo/libtool

Reply via email to