Ich nutze avrdude mit makefile. Hier habe ich ein Target namens flash. Ich mach einfach ein "make flash" und alles wird übersetzt und anschliessend in den Atmega mittels avrdude reingepumpt

Code:
CC=avr-gcc-4.5.3
RM=rm -f
OBJCOPY=avr-objcopy
AVRDUDE=sudo avrdude -p m168 -c avrispmkii -P USB -e -U flash:w:
AVRSIZE=avr-size

MCU=atmega168
F_CPU=16000000

CFLAGS=-g -DF_CPU=$(F_CPU) -Wall -Os -mcall-prologues

OBJ = main.o uart.o twimaster.o
BIN = fgcontrol.bin
HEX = fgcontrol.hex
MAP = fgcontrol.map

.phony: all

all:	$(OBJ)
	$(RM) $(HEX) $(BIN) $(MAP)
	$(CC) -mmcu=$(MCU) $(CFLAGS) -o $(BIN) -Wl,-Map,$(MAP) $(OBJ)
	$(OBJCOPY) -R .eeprom -O ihex $(BIN) $(HEX)

%.o: %.cpp
	$(CC) -mmcu=$(MCU) $(CFLAGS) -c $<
 
clean:
	$(RM) $(OBJ) $(BIN) $(HEX) $(MAP)

flash: $(OBJ)
	$(AVRDUDE)$(HEX)	

size:	$(BIN)
	$(AVRSIZE) -C --mcu=$(MCU) $(BIN)
Hoffe dass dir das hilft

Gruß
Georg