A IDE do Arduino usa o avr-gcc e o avrdude para compilar e fazer a carga no microcontrolador, facilitando a vida e poupanda diversos parametros.
Eu ja encontrei como compilar e gerar o .HEX usando o avr-gcc, mas nada (que entende-se) de como transferir usando o avrdude, acredito que quem programa direto para um microcontrolador PIC, AtMega etc possa saber como fazer isso.