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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.