Makefile del otheros demo

Buenas, alguien me puede explicar una cosa del Makefile?
CC=gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector
AS=$(CC)

#CFLAGS = -DDEBUG

OBJS = start.o hv.o mmu.o time.o vuart.o sysmgr.o av.o flash.o fb.o font_8x8.o debug.o demo.o

otheros.bld: demo.bin
gzip -c9v $^ > $@

demo.bin : demo.elf
objcopy -O binary $^ $@

demo.elf : $(OBJS) script.lds
$(CC) -static -nostdlib -Wl,-T,script.lds -o $@ $(OBJS)

clean :
-rm -f $(OBJS) demo.elf demo.bin otheros.bld *~


kjuanlu@eudytes:~/ps3/otherOS/source$ ls
acid.c debug.c demo.c flash.c hv.S lv1calltab.h mmu.c script.lds start.S time.c
av.c debug.h fb.c font_8x8.c lv1callarg.h Makefile proto.h sintab.c sysmgr.c vuart.

Bien, no veo por ningun lado donde compila los object. Es decir, creo quedebería haber una lina por cada object de este modo:

demo.o: demo.c
gcc -c demo.c

¿El Makefile es listo y los compila el solito si no los encuentra?

Saludos
Fíjate en las macros que crea al principio:

CC=gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector
(Esta macro invoca a gcc con esos parámetros)

OBJS = start.o hv.o mmu.o time.o vuart.o sysmgr.o av.o flash.o fb.o font_8x8.o debug.o demo.o
(Esta macro hace referencia a todos los .o)

y cómo al final las utiliza para crear el código objeto:
$(CC) -static -nostdlib -Wl,-T,script.lds -o $@ $(OBJS)
luego al compilar sale esto:
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o start.o start.S

para cada archivo objeto. Pero sin saber como pone start.S, o
-c -o demo.o demo.c
-c -o flash.o flash.c

PD:
kjuanlu@ps3:~/Desktop/ps3/otherOS/source$ make
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o start.o start.S
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o hv.o hv.S
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o mmu.o mmu.c
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o time.o time.c
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o vuart.o vuart.c
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o sysmgr.o sysmgr.c
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o av.o av.c
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o flash.o flash.c
gcc -O -m64 -mregnames -mfull-toc -G0 -ffreestanding -fno-stack-protector -c -o fb.o fb.c
En el fichero incluído de /usr/include/features.h:346,
de /usr/include/stdint.h:26,
de fb.c:1:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: No existe el fichero ó directorio
make: *** [fb.o] Error 1

¿alguien sabe que herramientas me faltan para compilar? Tengo ubuntu
kjuanlu@ps3:~/Desktop/ps3/otherOS/source$ cat /usr/include/gnu/stubs
stubs-32.h stubs.h
2 respuestas