Forum: Compiler & IDEs Fehler beim Linken (WinAVR)


von Thomas F. (thomas-hn) Benutzerseite


Angehängte Dateien:

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

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Ohne Code keine chance...

von Rufus Τ. F. (rufus) Benutzerseite


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

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.