Normalerweise benutzt man dazu ein Makefile (s. komplettes leeres
Testprojekt im Anhang, aufzurüfen mit make all), in dem
1/ die Abhängigkeiten der einzelnen Dateien untereinander
2/ die Art und Konfiguration, Taktrate des µC
3/ die gewünschte Art der Übersetzung (Optimierung) und Ausgabeformat
(Zieldatei)
4/ die Befehlsfolgen für den Übersetzungsprozess
stehen.
Man kann das von Hand zu Fuss eintippen. Dann sind die Befehle so
einzugeben (Beispiel atmega128, 8 MHz, platzsparende Optimierung):
Compiling C: test.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=8000000UL -Os
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=./test.lst -std=gnu99 -Wundef -MMD -MP
-MF .dep/test.o.d test.c -o test.o
Linking: test.elf
avr-gcc -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=8000000UL -Os
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=test.o -std=gnu99 -Wundef -MMD -MP -MF
.dep/test.elf.d test.o --output test.elf -Wl,-Map=test.map,--cref
-lm
Creating load file for Flash: test.hex
avr-objcopy -O ihex -R .eeprom test.elf test.hex
Creating load file for EEPROM: test.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 --no-change-warnings -O ihex test.elf
test.eep || exit 0
Creating Extended Listing: test.lss
avr-objdump -h -S test.elf > test.lss
Creating Symbol Table: test.sym
avr-nm -n test.elf > test.sym
Wie geschrieben, man kann das von Hand zu Fuss machen - du wärst dann
allerdings der erste den ich kenne, der das auch macht ;-)