Re: Error building 32 bit on 64 bit linux system

From: Doug Knight <dknight(at)wsi(dot)com>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Error building 32 bit on 64 bit linux system
Date: 2008-02-18 14:57:53
Message-ID: 1203346673.25327.3.camel@arc-dknightlx.wsicorp.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thanks Andrew, I missed the little -o in front of the SUBSYS.o. I did
find that if I did "export LDEMULATION=elf_i386" I was able to link
successfully. Now I just need to tell configure that I want to use the
32 bit perl libs, not the 64 bit ones it keeps finding by using:

$PERL -MConfig -e 'print $Config{archlibexp}'

Both 32 and 64 bit libraries are installed on my system, but the return
from the above command within configure points to the 64 bit libs, as
the perl executable is a 64 bit file. I think my better option is to
build my 32 bit versions on a 32 bit CentOS VM I have setup.

Doug

On Mon, 2008-02-18 at 09:48 -0500, Andrew Dunstan wrote:

>
> Doug Knight wrote:
> > All,
> > I am trying to build 8.2.5, forcing to a 32 bit build on a 64 bit
> > system. I have set CFLAGS=-m32, and I run the configure and make/make
> > install as follows:
> >
> > setarch i386 ./configure
> > setarch i386 make
> > setarch i386 make install
> >
> > However, I get the following error (using timezone for example):
> >
> > $ make
> > gcc -m32 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
> > -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
> > -I../../src/include -D_GNU_SOURCE -c -o localtime.o localtime.c
> > gcc -m32 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
> > -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
> > -I../../src/include -D_GNU_SOURCE -c -o strftime.o strftime.c
> > gcc -m32 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
> > -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
> > -I../../src/include -D_GNU_SOURCE -c -o pgtz.o pgtz.c
> > /usr/bin/ld -r -o SUBSYS.o localtime.o strftime.o pgtz.o
> > /usr/bin/ld: Relocatable linking with relocations from format
> > elf32-i386 (localtime.o) to format elf64-x86-64 (SUBSYS.o) is not
> > supported
> > make: *** [SUBSYS.o] Error 1
> >
> > Funny thing is, there is no SUBSYS.o in my current directory. If I
> > build from the top, I see this same error in each dirctory/makefile
> > where a SUBSYS.o is linked with. If I search my build tree after a
> > top-down build, I do not see any SUBSYS.O files at all. Where is this
> > SUBSYS.o getting created, and why isn't it being created as a 32 bit
> > file instead of 64 bit?
> >
>
> "man ld" IYF.
>
> It looks like you need the --oformat option to tell the linker you want
> 32bit output.
>
> Of course you won't find the SUBSYS.o files - it it the creation of
> those that is failing.
>
> cheers
>
> andrew
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2008-02-18 18:13:24 Re: CVS repository invalid revision
Previous Message Andrew Dunstan 2008-02-18 14:52:46 Re: [HACKERS] Error"Failed to run initdb: 128!"