mikrocontroller.net

Forum: Compiler & IDEs Fehler beim Linken (WinAVR)


Autor: Thomas Finke (thomas-hn) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne Code keine chance...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.