Ok, entonces reinstalé mi entorno de desarrollo en el mac usando la última compilación de avr-gcc (4.4.2), avr-libc y avrdude del proyecto Fink.
El problema es cuando compilo, sigo obteniendo un problema de vinculador "definición múltiple de ...".
Lo he reducido a un problema de punto flotante asociado con "libm.a" (usando strtod ()). Todas las indicaciones dicen que solo debe incluir esta biblioteca, pero no estoy seguro de cómo hacerlo en mi archivo Make (a continuación).
DEVICE = atmega128
CLOCK = 8000000
PROGRAMMER = -c stk600 -P usb
OBJECTS = main.o a2d.o buffer.o gps.o nmea.o uart2.o vt100.o rprintf.o timer128.o tsip.o
FUSES = -U hfuse:w:0x99:m -U lfuse:w:0xC2:m
AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE)
COMPILE = avr-gcc -std=gnu99 -Wall -Os -DF_CPU=$(CLOCK) -mmcu=$(DEVICE)
all: main.hex
.c.o:
$(COMPILE) -c $< -lm -o $@
.S.o:
$(COMPILE) -c $< -lm -o $@
.c.s:
$(COMPILE) -S $< -lm -o $@
flash: all
$(AVRDUDE) -U flash:w:main.hex:i
fuse:
$(AVRDUDE) $(FUSES)
install: flash fuse
load: all
bootloadHID main.hex
clean:
rm -f main.hex main.elf $(OBJECTS)
main.elf: $(OBJECTS)
$(COMPILE) -lm -o main.elf $(OBJECTS)
main.hex: main.elf
rm -f main.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
disasm: main.elf
avr-objdump -d main.elf
cpp:
$(COMPILE) -E main.c