Forum: Mikrocontroller und Digitale Elektronik avr-gcc Makefile


von student (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe nach längerer Abstinenz wieder meinen AVR-ISP (für den 
Parallelport) aus dem Schrank geholt. Leider klappt das kompilieren 
unter Linux mit der frisch aufgesetzten Toolchain nicht.
Alles außer mfile ist aus der Packetverwaltung von Debian Sid (Aptosid).

Ein einfaches Programm für einen Atmega 8 mit blinkender LED ist im 
Anhang.
Denke der Fehler liegt in dem Makefile das mit mfile erstellt wurde.

Hier die Fehlermeldungen:
1
student@siduxbox:~/111temp$ make
2
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -Wall -Wstrict-prototypes -std=gnu99  temp.c -o temp.o 
3
temp.c:17:6: warning: return type of ‘main’ is not ‘int’
4
avr-gcc -mmcu=atmega8 -I. -gstabs   -Os -Wall -Wstrict-prototypes -std=gnu99  temp.o /home/lomba/111temp/temp.o   --output temp.elf     -lm
5
/home/lomba/111temp/temp.o: In function `sleep':
6
temp.c:8: multiple definition of `sleep'
7
temp.o:temp.c:8: first defined here
8
/home/lomba/111temp/temp.o: In function `main':
9
temp.c:19: multiple definition of `main'
10
temp.o:temp.c:19: first defined here
11
collect2: ld returned 1 exit status
12
make: *** [temp.elf] Fehler 1

Ich verstehe nur, dass die Funktionen doppelt vorhanden sein sollen. Wo 
liegt mein Fehler?

von Oliver J. (skriptkiddy)


Lesenswert?

Dein Makefile
1
TARGET = temp
2
SRC = $(TARGET).c  /home/lomba/111temp/temp.c

Daraus folgt:
1
SRC = temp.c  /home/lomba/111temp/temp.c

somit bekommt der linker dann als object files:
1
temp.o /home/lomba/111temp/temp.o

Also 2 mal die selbe Objekt-Datei. Da tauchen natürlich alle 
Definitionen doppelt auf.

Gruß Oliver

von student (Gast)


Lesenswert?

Danke.

Problem gelöst

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.