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