gcc -m32 option on amd64.

Sharad Chandra sharadc at in.niksun.com
Thu Aug 9 21:44:31 PDT 2007

On Friday 27 Jul 2007 3:50 pm, Peter Jeremy wrote:
> On 2007-Jul-27 15:13:48 +0530, Sharad Chandra <sharadc at niksun.com> wrote:
> >I am trying gcc -m32 on freebsd 6.1 amd64 env, but it does not seems to be
> >working. i also installed /usr/port/lang/linux-libgcc/ but did not help
> >what i did is=>
> >echo "main () {}" > t.c; gcc -m32 t.c
> >/usr/bin/ld: skipping
> >incompatible
> > /usr/local/lib/gcc/x86_64-portbld-freebsd6.1/4.2.0/gcc/x86_64-portbld-fre
> >ebsd6.1/4.2.0/libgcc.a when searching for -lgcc
> >/usr/bin/ld: cannot find -lgcc
> >collect2: ld returned 1 exit status
> >
> >how can we make this working?
> You are using gcc 4.2 from ports.  I suspect this only includes the
> 64-bit libraries.  gcc in the base system includes both 32-bit and
> 64-bit libraries by default but it still suffers the same problem.

Yes, gcc looks for library in /usr/lib, whereas libraries for 32 is 
in /usr/lib32, and there is a switch -B in gcc which tells from where to pick 
the library, I did 
gcc -m32 -B /usr/lib32 t.c
and this is working now.

> I had a go at fixing the problem in amd64/112215 but this has other
> problems and needs more work.  Note that non-trivial code will break
> because <machine/XXXX.h> points at amd64 headers whilst the -m32
> compiler needs i386 headers in many cases.  There's a non-trivial
> amount of work needed to actually get cross-building working.  I
> suggest you look throught the FreeBSD-amd64 archives.

Sharad Chandra

More information about the freebsd-hackers mailing list