www.mikrocontroller.net

Forum: Compiler & IDEs Makefile produziert undefined reference to


Autor: Patrick Weggler (pw-sys) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Problem mit meinem Makefile:

Solange ich alle *.c files mit #include in die main.c einbinde läuft 
alles wunderbar. sobald ich jedoch die selben files in der Makefile als 
Source einschreibe und in der main rausnehme erzeugt mir der linker in 
jeder ausgelagerten Funktion ein undefined reference.

die .o Dateien werde erzeugt...

Die Makefile entspricht zu größten Teilen der aus dem Wikibeitrag zu den 
Beispielmakefiles.

Dank i.V.

Gruß
Patrick

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick Weggler schrieb:

> Solange ich alle *.c files mit #include in die main.c einbinde läuft
> alles wunderbar. sobald ich jedoch die selben files in der Makefile als
> Source einschreibe und in der main rausnehme

Im angehängten Makefile gibt es nur eine Source-Datei.

> erzeugt mir der linker in
> jeder ausgelagerten Funktion ein undefined reference.

"undefined reference" zu was?
Poste mindestens eine dieser C-Dateien und die dazugehörigen 
Fehlermeldungen.

Autor: Patrick Weggler (pw-sys) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe nun mal ein alles angehängt was notwendig ist...

Mit Make all kommt folgende Ausgabe:
> "make.exe" all

-------- begin --------
avr-gcc (WinAVR 20081205) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: main.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=11059200UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/main.lst  -std=gnu99 --combine -fwhole-program -Wundef -MD -MP -MF .dep/main.o.d main.c -o obj/main.o
main.c:224: warning: return type of 'main' is not 'int'

Compiling C: lcd.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=11059200UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/lcd.lst  -std=gnu99 --combine -fwhole-program -Wundef -MD -MP -MF .dep/lcd.o.d lcd.c -o obj/lcd.o

Linking: main.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=11059200UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/main.o  -std=gnu99 --combine -fwhole-program -Wundef -MD -MP -MF .dep/main.elf.d obj/main.o obj/lcd.o   --output main.elf -Wl,-Map=main.map,--cref    -lm
obj/main.o: In function `main':
C:\C\AVR\NEC IR/main.c:230: undefined reference to `lcd_init'
C:\C\AVR\NEC IR/main.c:231: undefined reference to `lcd_clrscr'
C:\C\AVR\NEC IR/main.c:256: undefined reference to `lcd_clrscr'
C:\C\AVR\NEC IR/main.c:259: undefined reference to `lcd_gotoxy'
C:\C\AVR\NEC IR/main.c:359: undefined reference to `lcd_puts'
make.exe: *** [main.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:01

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die Makefile entspricht zu größten Teilen der aus dem Wikibeitrag zu den
>Beispielmakefiles.

Tja, das sollte man dann auch an sein Projekt anpassen. Sonst passt das 
halt auch nur für das Beispielprojekt.

Im makefile findet sich folgendes:
# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c   

Hinter "$(TARGET).c"  musst du deine anderen sourcefiles auflisten, 
sonst kennt die das makefile nicht.

Oliver

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du mit einzelnen C-Dateien arbeitest und diese auch separat 
übersetzt, kannst du nicht "--combine -fwhole-program" benutzen.

Autor: Patrick Weggler (pw-sys) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Oliver Sorry hatte als erstes das falsche Makefile angehängt...

@Stefan hilft leider auch nichts

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick Weggler schrieb:

> @Stefan hilft leider auch nichts

"make clean" vergessen?

Autor: Patrick Weggler (pw-sys) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja jetzt klapts

DANKE!!

Gruß
Patrick

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.