Warum sagst du -O binary, wenn du ihex willst...? Evtl musst du sagen, welche Sections du im hex haben willst (hex ist zu dumm um Sections zu kennen). Das ich wichtig, demit eeprom-Info nicht ins Flash kommt und debug-Infos und so gefiltert werden.

Hier ein Makefile-Snipp, machs analog
Code:
%.hex: %.elf
	$(OBJCOPY) -j .text -j .data -O ihex $< $@

%_eeprom.hex: %.elf
	$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@
avr-objcopy