PDA

View Full Version : Make configure script use lib32


stair314
April 6th, 2008, 11:17 PM
I'm trying to build a 32 bit version of OpenCV on a 64 bit machine. I don't really know how to go about this properly. I tried setting both CFLAGS and CXXFLAGS to -m32 and setting LDFLAGS to -L/usr/lib32 then running
./configure --libdir=/usr/lib32 --host="i686-pc-linux-gnu"

This does not work; the makefile still refers to all sorts of things in /usr/lib, which contains 64 bit libraries and thus doesn't work. As an example:

g++ -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.1.3/../../../../lib32/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.1.3/32/crtbeginS.o .libs/dummy.o -Wl,--whole-archive ./.libs/lib_highgui.a -Wl,--no-whole-archive -Wl,--rpath -Wl,/home/ia3n/stair/libs/opencv-1.0.0/cxcore/src/.libs -Wl,--rpath -Wl,/home/ia3n/stair/libs/opencv-1.0.0/cv/src/.libs -Wl,--rpath -Wl,/usr/lib32 -L/home/ia3n/stair/libs/opencv-1.0.0/cxcore/src/.libs -L/usr/lib32 ../../cxcore/src/.libs/libcxcore.so ../../cv/src/.libs/libcv.so /usr/lib/libgthread-2.0.so -L/usr/lib -lrt /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libatk-1.0.so /usr/lib/libpangocairo-1.0.so -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage /usr/lib/libpango-1.0.so /usr/lib/libcairo.so -lX11 -lXfixes /usr/lib/libgdk_pixbuf-2.0.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libglib-2.0.so -lpthread -ldl -L/usr/lib/gcc/x86_64-linux-gnu/4.1.3/32 -L/usr/lib/gcc/x86_64-linux-gnu/4.1.3/../../../../lib32 -L/lib/../lib32 -L/usr/lib/../lib32 -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.1.3/32/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.1.3/../../../../lib32/crtn.o -march=i686 -m32 -pthread -Wl,-soname -Wl,libhighgui.so.1 -o .libs/libhighgui.so.1.0.0
/usr/lib/libgthread-2.0.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status


Note that the -L/usr/lib32 makes it in there, but that the offending file, /usr/lib/libgthread-2.0.so, is referred to explicitly in the call to g++ generated by the makefile.
Does anyone know of some way that I can force the configure script to use /usr/lib32 instead?