Fehler beim Linken (WinAVR)

OP Persönliche Seite #363523
Lesenswert?

Hallo,

beim Linken bekomme ich den folgenden Fehler:


Linking: main.elf
avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=14745600UL  -Os
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 -MD -MP -MF
.dep/main.elf.d main.o lcd.o befehle.o ISR.o ports.o sm.o timer.o
timer1.o tools.o uart.o variables.o --output main.elf
-Wl,-Map=main.map,--cref    -lm
befehle.o: In function `Befehlauswertung':
C:\Dokumente und
Einstellungen\Administrator\Desktop\SM\SM-WinAVR/befehle.c:190:
multiple definition of `bSmdState'
main.o:C:\Dokumente und
Einstellungen\Administrator\Desktop\SM\SM-WinAVR/main.c:67: first
defined here
ISR.o: In function `__vector_19':
C:\Dokumente und
Einstellungen\Administrator\Desktop\SM\SM-WinAVR/ISR.c:26: multiple
definition of `bSmdState'
main.o:C:\Dokumente und
Einstellungen\Administrator\Desktop\SM\SM-WinAVR/main.c:67: first
defined here
ports.o: In function `portinit':
C:\Dokumente und
Einstellungen\Administrator\Desktop\SM\SM-WinAVR/ports.c:25:
multiple definition of `bSmdState'
main.o:C:\Dokumente und
Einstellungen\Administrator\Desktop\SM\SM-WinAVR/main.c:67: first
defined here
sm.o: In function `SMD_vStart':
C:\Dokumente und
Einstellungen\Administrator\Desktop\SM\SM-WinAVR/sm.c:26: multiple
definition of `bSmdState'
main.o:C:\Dokumente und
Einstellungen\Administrator\Desktop\SM\SM-WinAVR/main.c:67: first
defined here
make.exe: *** [main.elf] Error 1


Kann mir jemand sagen woran das liegt? Die Variable ist definitiv nicht
mehrfach definiert ?!?!
Das Makefile habe ich mal mit angehängt.

Danke,

Thomas
Angehängte Dateien:
Persönliche Seite #363525
Lesenswert?

Die Variable wirst Du wohl in einer Headerdatei definiert haben, die Du
in die verschiedenen Module eingebunden hast.

Damit ist sie mehrfach definiert und der Linker nörgelt zu Recht.

Diesen Fehler kann gcc verbergen/zudecken, wenn nicht -fno-common als
Option gesetzt ist.

Besser ist es aber, den Fehler nicht zu machen und in die Headerdatei
das Schlüsselwort "extern" einzubauen,

siehe auch
http://www.mikrocontroller.net/forum-extern/read-2-305525.html#305525

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren