galdo
24.03.2007, 11:50
Hallo,
ich habe folgendes Problem beim compilieren mit dem SDCC. Es geht um Code für den PIC 18F2550. Ich habe den SDCC ohne irgendwelche Flags (aktuelle SVN-Version) auf einer SuSE-Linux Kiste compiliert. Beim Aufruf von make erhalte ich folgende Fehlermeldung:
galdo@linux-92dg:~/repository/rob_galdo/cam_modul> make
/usr/local//bin/sdcc -DUSB_USE_UART -DRIGHT -DDEBUG_UART -DDEBUG -DDEBUG_PRINT --use-crt=crt0.o -V -Wl-s18f2550.lkr,-m -mpic16 -p18f2550 mod_i2c.o mod_pwm.o cam_slave.o -o cam_modul.hex -llibio18f2550.lib -llibc18f.lib
+ "/usr/local//bin/gplink" -I"/usr/local//bin/../share/sdcc/lib/pic16" -I"/usr/local/share/sdcc/lib/pic16" -s18f2550.lkr -m -w -r -o cam_modul.hex mod_i2c.o mod_pwm.o cam_slave.o crt0.o libio18f2550.lib libc18f.lib pic18f2550.lib libsdcc.lib
crt0.o: No such file or directory
make: *** [cam_modul.hex] Fehler 1
So sieht mein Makefile aus, und auf anderen Rechner funktioniert das eigentlich auch so:
# change this to your program name
PROG_NAME = cam_modul.hex
# list your object files
OBJS = mod_i2c.o mod_pwm.o cam_slave.o
DEBUG = -DUSB_USE_UART -DRIGHT -DDEBUG_UART -DDEBUG -DDEBUG_PRINT
PIC_TYPE = PIC18F2550
sdcc_PIC_TYPE = 18f2550
lkr_PIC_TYPE = 18f2550
TOOLSDIR = /usr/local/
CC = $(TOOLSDIR)/bin/sdcc
CFLAGS = -mpic16 -V -p$(sdcc_PIC_TYPE) $(DEBUG)
LNK = $(TOOLSDIR)/bin/sdcc
INC = -I.
LDFLAGS =
CRT = --use-crt=crt0.o -V
#DEBUG = --denable-peeps --obanksel=9 --opt-code-size --optimize-cmp --optimize-df --fstack
all: cam_modul.hex
.c.o:
$(CC) $(CFLAGS) $(INC) -c $<
#rule to link the final executable
$(PROG_NAME): $(OBJS)
$(LNK) $(DEBUG) $(LDFLAGS) $(CRT) -Wl-s$(lkr_PIC_TYPE).lkr,-m -mpic16 -p$(sdcc_PIC_TYPE) $+ -o $(@) -llibio$(sdcc_PIC_TYPE).lib -llibc18f.lib
#
prog: $(PROG_NAME)
piklab-prog --programmer=direct --port=/dev/parport0 --device=$(sdcc_PIC_TYPE) --command=program $(PROG_NAME)
clean:
rm -f *.o *.rel *.lst *.cod *.hex *.map *.asm
Habt ihr irgendwelche Ideen? Vielen Dank
GALDO
ich habe folgendes Problem beim compilieren mit dem SDCC. Es geht um Code für den PIC 18F2550. Ich habe den SDCC ohne irgendwelche Flags (aktuelle SVN-Version) auf einer SuSE-Linux Kiste compiliert. Beim Aufruf von make erhalte ich folgende Fehlermeldung:
galdo@linux-92dg:~/repository/rob_galdo/cam_modul> make
/usr/local//bin/sdcc -DUSB_USE_UART -DRIGHT -DDEBUG_UART -DDEBUG -DDEBUG_PRINT --use-crt=crt0.o -V -Wl-s18f2550.lkr,-m -mpic16 -p18f2550 mod_i2c.o mod_pwm.o cam_slave.o -o cam_modul.hex -llibio18f2550.lib -llibc18f.lib
+ "/usr/local//bin/gplink" -I"/usr/local//bin/../share/sdcc/lib/pic16" -I"/usr/local/share/sdcc/lib/pic16" -s18f2550.lkr -m -w -r -o cam_modul.hex mod_i2c.o mod_pwm.o cam_slave.o crt0.o libio18f2550.lib libc18f.lib pic18f2550.lib libsdcc.lib
crt0.o: No such file or directory
make: *** [cam_modul.hex] Fehler 1
So sieht mein Makefile aus, und auf anderen Rechner funktioniert das eigentlich auch so:
# change this to your program name
PROG_NAME = cam_modul.hex
# list your object files
OBJS = mod_i2c.o mod_pwm.o cam_slave.o
DEBUG = -DUSB_USE_UART -DRIGHT -DDEBUG_UART -DDEBUG -DDEBUG_PRINT
PIC_TYPE = PIC18F2550
sdcc_PIC_TYPE = 18f2550
lkr_PIC_TYPE = 18f2550
TOOLSDIR = /usr/local/
CC = $(TOOLSDIR)/bin/sdcc
CFLAGS = -mpic16 -V -p$(sdcc_PIC_TYPE) $(DEBUG)
LNK = $(TOOLSDIR)/bin/sdcc
INC = -I.
LDFLAGS =
CRT = --use-crt=crt0.o -V
#DEBUG = --denable-peeps --obanksel=9 --opt-code-size --optimize-cmp --optimize-df --fstack
all: cam_modul.hex
.c.o:
$(CC) $(CFLAGS) $(INC) -c $<
#rule to link the final executable
$(PROG_NAME): $(OBJS)
$(LNK) $(DEBUG) $(LDFLAGS) $(CRT) -Wl-s$(lkr_PIC_TYPE).lkr,-m -mpic16 -p$(sdcc_PIC_TYPE) $+ -o $(@) -llibio$(sdcc_PIC_TYPE).lib -llibc18f.lib
#
prog: $(PROG_NAME)
piklab-prog --programmer=direct --port=/dev/parport0 --device=$(sdcc_PIC_TYPE) --command=program $(PROG_NAME)
clean:
rm -f *.o *.rel *.lst *.cod *.hex *.map *.asm
Habt ihr irgendwelche Ideen? Vielen Dank
GALDO