How to compile an a.out Linux 2.0 kernel?

David L. Oppenheimer (davido@cs.princeton.edu)
Sat, 26 Oct 1996 11:08:32 -0400


I am trying to compile Linux 2.0.23 in a.out format. I am compiling on a
2.0.19 system running gcc version 2.7.2. When I compile, things look fine
until the very end, when I get:

ld -qmagic -Ttext 0xfffe0 arch/i386/kernel/head.o init/main.o init/version.o \
arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o
fs/fs.o ipc/ipc.o net/network.a \
fs/filesystems.a \
drivers/block/block.a drivers/char/char.a drivers/net/net.a
drivers/scsi/scsi.a drivers/pci/pci.a \
/home/davido/work/linux/arch/i386/lib/lib.a
/home/davido/work/linux/lib/lib.a /home/davido/work/linux/arch/i386/lib/lib.a
-o vmlinux
ld: warning: cannot find entry symbol _start; defaulting to 000fffe0
[...]
./xtract /home/davido/work/linux/vmlinux | gzip -9 | ./piggyback > piggy.o
Non-GCC header of 'system'
Compressed size 20.
gcc -D__KERNEL__ -I/home/davido/work/linux/include -traditional -c head.S
gcc -D__KERNEL__ -I/home/davido/work/linux/include -O2 -DSTDC_HEADERS -c
misc.c -o misc.o
ld -qmagic -Ttext 0xfe0 -o vmlinux head.o misc.o piggy.o
ld: warning: cannot find entry symbol _start; defaulting to 00000fe0
misc.o: In function `fill_inbuf':
misc.o(.text+0x1c18): undefined reference to `input_data'
misc.o(.text+0x1c1d): undefined reference to `input_len'
misc.o(.text+0x1c33): undefined reference to `input_data'
make[2]: *** [vmlinux] Error 1

I'm not sure if the "cannot find entry symbol _start; defaulting to 000fffe0",
"cannot find entry symbol _start; defaulting to 00000fe0", and "Non-GCC header
of 'system'" messages indicate a problem (do they?), but certainly the
"undefined reference" in misc.o is bad news.

Does anyone know what's going wrong here?

Many thanks for any suggestions.

David Oppenheimer
davido@CS.Princeton.EDU