Re: Help cross-compiling kernel from x86
On Sun, Jul 14, 2002 at 01:50:00PM -0400, Matt Zimmerman wrote:
> I am trying to cross-compile Sharp's kernel for the Zaurus, and the build
> fails here:
>
> arm-linux-ld -r -o sa1100.o generic.o irq.o dma-sa1100.o collie.o m62332.o collie_battery.o collie_led.o collie_buzzer.o collie_apm.o power.o suspend.o
> arm-linux-ld: ERROR: suspend.o uses hardware FP, whereas sa1100.o uses software FP
> File format not recognized: failed to merge target specific data of file suspend.o
>
> This makes no sense to me, since ld seems to be complaining about software FP
> in sa1100.o, which doesn't even exist yet (it is the output). Most of the
> objects being linked were compiled like this:
>
> arm-linux-gcc -D__KERNEL__ -I/space/tmp/mdz/zaurus/debian/kernel/linux-sharp/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mapcs-32 -march=armv4 -mtune=strongarm1100 -mshort-load-bytes -msoft-float -c -o power.o power.c
>
> while suspend.o came from assembler:
>
> arm-linux-gcc -D__ASSEMBLY__ -D__KERNEL__ -I/space/tmp/mdz/zaurus/debian/kernel/linux-sharp/include -mapcs-32 -march=armv4 -mno-fpu -c -o suspend.o suspend.S
It looks like -msoft-float works, and does the right thing, while -mno-fpu
is ignored (not passed to the assembler). Changing -mno-fpu to -msoft-float
caused -msoft-float to be passed to the assembler, and this stage worked.
Now, I get this:
arm-linux-ld -p -X -T arch/arm/vmlinux.lds arch/arm/kernel/head-armv.o arch/arm/kernel/init_task.o init/main.o init/version.o \
--start-group \
arch/arm/kernel/kernel.o arch/arm/mm/mm.o arch/arm/mach-sa1100/sa1100.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o \
drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/ide/idedriver.o drivers/sound/sounddrivers.o drivers/mtd/mtdlink.o drivers/pcmcia/pcmcia.o drivers/net/pcmcia/pcmcia_net.o drivers/video/video.o drivers/net/irda/irda.o \
net/network.o \
arch/arm/nwfpe/math-emu.o arch/arm/lib/lib.a /space/tmp/mdz/zaurus/debian/kernel/linux-sharp/lib/lib.a /usr/lib/gcc-lib/arm-linux/3.1/libgcc.a \
--end-group \
-o vmlinux
arm-linux-ld: ERROR: /usr/lib/gcc-lib/arm-linux/3.1/libgcc.a(_udivsi3.oS) uses hardware FP, whereas vmlinux uses software FP
[a whole bunch more errors with libgcc)
Fine, so I need to build gcc for software FP. But I can't seem to get it to
cooperate. I see --without-fp in several places, but it doesn't seem to do
anything. Same with --nofp. I get the same errors after rebuilding gcc
with these options.
Hints?
--
- mdz
--
To UNSUBSCRIBE, email to debian-arm-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Reply to: