Thread View: es.comp.os.linux.programacion
2 messages
2 total messages
Started by heltena
Tue, 18 Jul 2006 14:01
Makefile me usa CC ¿por defecto?
Author: heltena
Date: Tue, 18 Jul 2006 14:01
Date: Tue, 18 Jul 2006 14:01
62 lines
2957 bytes
2957 bytes
Hola grupo,
Tengo los siguientes tipos de ficheros en el proyecto:
*asm.asm -> ficheros en ensamblador (para PIC16f876)
*.inc -> includes de ensamblador
*.h -> versión C de los includes
*.c -> codigo C que se debe compilar para PIC (usando SDCC)
Y tengo el siguiente Makefile:
<<BEGIN>>
OBJS=spi.o spiasm.o pral.o global.o globalasm.o fat32.o fat32asm.o
usart.o usartasm.o
PRJ=enric3
$(PRJ).hex: $(OBJS)
gplink -o $(PRJ) $(OBJS)
%.asm: %.c
sdcc -S -V -mpic14 -p16f877 -c $<
%.o: %.asm *.inc
gpasm -p 16f876 -c $< -D$<
<<END>>
Bien, los pasos deberían ser:
los fichero spi.o, pral.o, global.o fat32.o y usart.o están en C, así
que:
sdcc -mpic14 -p16f877 -c spi.c
...
y me deben generar los ficheros: spi.asm pral.asm ...
Después se ensamblan:
gpasm -p 16f876 -c spi.asm -Dspi.asm
(el -D es un define)
Y después, lo enlazo todo:
gplink -o enric3.hex spi.o spiasm.o ...
Lo que pasa es que, en vez de usar el sdcc que tengo en la regla al
compilar los ficheros C, me ejecuta el cc. Sacado de la shell:
heltena@integer:~/src/pic/enric3$ make
cc -c -o pral.o pral.c
In file included from pral.c:1:
p16f876.h:198: error: syntax error before 'at'
pral.c:3: error: syntax error before numeric constant
pral.c: In function 'main':
pral.c:17: warning: return type of 'main' is not 'int'
make: *** [pral.o] Error 1
Y no solo eso, sino que me pone un "-o pral.o" que no debería ser
así.
Mi prueba ha sido: "bueno, si quieres usar cc, usarás cc" y he puesto
encima del Makefile:
CC=sdcc -S -V -mpic14 -p16f877 -c
Y claro, me lo compila usando el sdcc, pero me lo guarda en, por
ejemplo, "spi.o" y debería ser "spi.asm".
¿qué hago mal en el Makefile?
Re: Makefile me usa CC ¿por defecto?
Author: heltena
Date: Tue, 18 Jul 2006 15:06
Date: Tue, 18 Jul 2006 15:06
89 lines
3710 bytes
3710 bytes
heltena ha escrito:
> Hola grupo,
>
> Tengo los siguientes tipos de ficheros en el proyecto:
> *asm.asm -> ficheros en ensamblador (para PIC16f876)
> *.inc -> includes de ensamblador
> *.h -> versión C de los includes
> *.c -> codigo C que se debe compilar para PIC (usando SDCC)
>
> Y tengo el siguiente Makefile:
> <<BEGIN>>
> OBJS=spi.o spiasm.o pral.o global.o globalasm.o fat32.o fat32asm.o
> usart.o usartasm.o
> PRJ=enric3
>
> $(PRJ).hex: $(OBJS)
> gplink -o $(PRJ) $(OBJS)
>
> %.asm: %.c
> sdcc -S -V -mpic14 -p16f877 -c $<
>
> %.o: %.asm *.inc
> gpasm -p 16f876 -c $< -D$<
> <<END>>
>
> Bien, los pasos deberían ser:
> los fichero spi.o, pral.o, global.o fat32.o y usart.o están en C, así
> que:
> sdcc -mpic14 -p16f877 -c spi.c
> ...
> y me deben generar los ficheros: spi.asm pral.asm ...
>
> Después se ensamblan:
> gpasm -p 16f876 -c spi.asm -Dspi.asm
> (el -D es un define)
>
> Y después, lo enlazo todo:
> gplink -o enric3.hex spi.o spiasm.o ...
>
> Lo que pasa es que, en vez de usar el sdcc que tengo en la regla al
> compilar los ficheros C, me ejecuta el cc. Sacado de la shell:
>
> heltena@integer:~/src/pic/enric3$ make
> cc -c -o pral.o pral.c
> In file included from pral.c:1:
> p16f876.h:198: error: syntax error before 'at'
> pral.c:3: error: syntax error before numeric constant
> pral.c: In function 'main':
> pral.c:17: warning: return type of 'main' is not 'int'
> make: *** [pral.o] Error 1
>
> Y no solo eso, sino que me pone un "-o pral.o" que no debería ser
> así.
>
> Mi prueba ha sido: "bueno, si quieres usar cc, usarás cc" y he puesto
> encima del Makefile:
> CC=sdcc -S -V -mpic14 -p16f877 -c
>
> Y claro, me lo compila usando el sdcc, pero me lo guarda en, por
> ejemplo, "spi.o" y debería ser "spi.asm".
>
>
> ¿qué hago mal en el Makefile?
He conseguido compilar con el siguiente Makefile:
<<BEGIN>>
OBJS=spi.o spiasm.o pral.o global.o globalasm.o fat32.o fat32asm.o
usart.o usartasm.o
PRJ=enric3
.SUFFIXES: .c .asm .o
$(PRJ).hex: $(OBJS)
gplink -o $(PRJ) $(OBJS)
.c.o:
sdcc -S -mpic14 -p16f877 -c $<
gpasm -p 16f876 -c $*.asm -D$*.asm
.asm.o:
gpasm -p 16f876 -c $< -D$<
.PHONY: program clean
program: $(PRJ).hex
picp /dev/ttyS0 16f876 -wp $(PRJ).hex
<<END>>
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads