AVR-GCC: *.C und *.H aus Unterverzeichnis einbinden
Hallo,
habe eine Frage zu WinAVR, bzw. Programmers Notepad und dessen Umgang mit Unterverzeichnissen beim kompilieren.
Habe mir eine LCD Library (von euch) heruntergeladen und möchte die mal testweise ausprobieren. Habe erst ein neues Projekt begonnen, LCD angeschlossen: haut hin => für gut befunden :=)
Nun habe ich einfach das Unterverzeichnis in mein "richtiges" Projekt kopiert und würde darin gerne das Unterverzeichnis (libs) mit den Dateien lcd_lib.c und lcd_lib.h einbinden. Dazu habe ich in meine main.c am Anfang ein
Code:
#include "libs/lcd_lib.h"
eingefügt und im Makefile ein
Code:
SRC = $(TARGET).c lcd_lib.c
Komischerweise greift er aber gar nicht auf die lcd_lib.c zu:
Code:
> "make.exe" all
-------- begin --------
avr-gcc (GCC) 3.4.6
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiling C: Testboard.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=/Testboard.lst -std=gnu99 -Wundef -MD -MP -MF .dep/Testboard.o.d Testboard.c -o /Testboard.o
Linking: Testboard.elf
avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=/Testboard.o -std=gnu99 -Wundef -MD -MP -MF .dep/Testboard.elf.d /Testboard.o /pflib_lcd.o --output Testboard.elf -Wl,-Map=Testboard.map,--cref -lm
Creating load file for Flash: Testboard.hex
avr-objcopy -O ihex -R .eeprom Testboard.elf Testboard.hex
Creating load file for EEPROM: Testboard.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O ihex Testboard.elf Testboard.eep
Creating Extended Listing: Testboard.lss
avr-objdump -h -S Testboard.elf > Testboard.lss
Creating Symbol Table: Testboard.sym
avr-nm -n Testboard.elf > Testboard.sym
Size after:
Testboard.elf :
section size addr
.text 1030 0
.data 42 8388704
.bss 0 8388746
.noinit 0 8388746
.eeprom 0 8454144
.stab 876 0
.stabstr 132 0
.debug_aranges 40 0
.debug_pubnames 210 0
.debug_info 1480 0
.debug_abbrev 728 0
.debug_line 1332 0
.debug_str 454 0
.debug_ranges 12 1030
Total 6336
Flash SRAM EEPROM
----- ---- ------
17% 4% 0%
-------- end --------
> Process Exit Code: 0
> Time Taken: 00:02
Wie kann ich im Makefile/in der main.c also dem AVR-GCC klar machen, das er gewisse Dinge aus "meinen" Unterverzeichnis libs holen soll? Was für Änderungen sind notwendig und wo?
Gruß,
Hans
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
danke für deine ständigen Antworten und Geduld mit mir :=)
Das Problem mit den Makefiles ist, dass ich damit vorher noch nie "wirklich" gearbeitet habe, d.h. die ganzen netten Optionen nicht kenne. Insofern habe ich halt das automatisch generierte von mfile genutzt und das angepasst. Von der PC Programmierung bin ich es gewohnt ein wenig Ordnung zu halten, insofern würde ich halt gerne alles ein wenig sortieren.
Wie baut ihr die Makefiles auf? Komplett von Hand? Fertiges Template/Vorlage ein wenig ändern/erweitern/anpassen?
Ansonsten: wodurch wird eine ASM Ausgabe erzeugt? Wenn du Vorlagen von einem (recht) universellen Makefile hast, würde ich mich freuen (ja ich weiß, es muss immer angepasst werden). Anbei noch mal mein Makefile (.txt nur fürs Forum).
Björn