Forum: Compiler & IDEs Makefile Probleme AVR-GCC


von Steve M. (jodziste)


Angehängte Dateien:

Lesenswert?

Hallo,
ich probiere die angehänge Datei blink.c im Terminal unter Ubuntu zu 
kompilieren. Dafür habe ich mir avr-libc, avr-binutils, avrdude und 
avr-gcc runtergeladen und installiert. Als Makefile habe ich das 
Template aus dem AVR-GCC Tutorial genommen.
blink.c und die Makefile sind im selber Ordner und wenn ich make all 
aufrufe kommt das:
-------- begin --------
avr-gcc (GCC) 4.9.2
Copyright (C) 2014 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.


Linking: main.elf
avr-gcc -mmcu=atmega328p -I. -gdwarf-2   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=.o  -std=gnu99 -DF_OSC=16000000 -MD -MP 
-MF .dep/main.elf.d .o   --output main.elf -Wl,-Map=main.map,--cref 
-lm
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o:(.init9+0x0 
):  undefined reference to `main'
collect2: error: ld returned 1 exit status
Makefile:378: recipe for target 'main.elf' failed
make: *** [main.elf] Error 1

Die main.map enstand durch das versuchte kompilieren.
Was läuft da schief?
MfG,
Steven

: Verschoben durch User
von Lunar (Gast)


Lesenswert?

Du kompilierst dein Programm nicht.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Anstatt ".o" sollte da wohl "main.o" stehen.  Ein Fehler im Makefile / 
Kommandozeile weil $(blink) leer auswertet.

: Bearbeitet durch User
von Steve M. (jodziste)


Lesenswert?

Wo müsste ich da sin der Makefile ändern?
Hier?:(zeile 256)
# Define all object files.
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)

und das zu

# Define all object files.
OBJ = $(SRC:blink.c=main.o) $(ASRC:.S=.o)

machen hilft nicht

von Thomas Beck (Gast)


Lesenswert?

Die SRC Zeile im Makefile so ändern:

# List C source files here. (C dependencies are automatically 
generated.)
SRC = blink.c

Alternativ könnte man auch in der Kommandozeile
make all blink=blink
eingeben, damit $(blink) korrekt aufgelöst werden kann.

von Steve M. (jodziste)


Lesenswert?

Vielen Dank,
jetzt funktioniert es

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.