Cross compilation

Nigel Wade nmw at ion.le.ac.uk
Thu Dec 7 13:18:05 UTC 2006


Fernando Apesteguía wrote:
> Ok, finally I found the solution.
> 
> First I compiled the .c files into .o objects and then I needed to run
> gcc to link in this way:
> 
> gcc -o prog -m32 -march=i386 -L/usr/lib -L/lib $obj -lreadline -lncurses
> 
> with obj=`ls *.o`
> 
> I don't know why I need two steps because I couldn't do this in one
> single step (it seems like if gcc doesn't bypass the proper
> flags/options to ld to compile agains the 32 bit libraries)
> 
> HTH to another one,
> 

It sounds like there is something wrong with the setup of your development 
environment. It all works perfectly well here. I am using RHEL, not Fedora, but 
I'd expect them both to behave the same in this respect.

$ gcc -m32 -o abc abc.c def.c -lm
$ file abc
abc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 
2.2.5, dynamically linked (uses shared libs), not stripped
$ ldd abc
         linux-gate.so.1 =>  (0xffffe000)
         libm.so.6 => /lib/tls/libm.so.6 (0x002ed000)
         libc.so.6 => /lib/tls/libc.so.6 (0x001c0000)
         /lib/ld-linux.so.2 (0x001a7000)

gcc has built a 32-bit executable, linked against the 32-bit libraries.

If I don't specify -m32:

$ gcc -o abc abc.c def.c -lm
$ file abc
abc: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 
2.4.0, dynamically linked (uses shared libs), not stripped
$ ldd abc
         libm.so.6 => /lib64/tls/libm.so.6 (0x000000398f300000)
         libc.so.6 => /lib64/tls/libc.so.6 (0x000000398f000000)
         /lib64/ld-linux-x86-64.so.2 (0x000000398ee00000)

I get a 64-bit application linked against the 64-bit libraries.


So, what you are trying to do *should* work.

What commands did you use to compile and link the executable before? Of course, 
there could be something broken in the 32-bit development environment in 64-bit 
Fedora...

-- 
Nigel Wade, System Administrator, Space Plasma Physics Group,
             University of Leicester, Leicester, LE1 7RH, UK
E-mail :    nmw at ion.le.ac.uk
Phone :     +44 (0)116 2523548, Fax : +44 (0)116 2523555




More information about the fedora-list mailing list