Forum: Mikrocontroller und Digitale Elektronik Mal wieder undefined reference to


von Roman S. (kadege)


Angehängte Dateien:

Lesenswert?

Hallo,
bin mit dem Einbinden von Headern und dem Linken mehrerer .c-sourcen 
noch nicht sehr bewandert; habe einige Zeit mit threads zu meinem Thema 
verbracht und komme leider dennoch nicht zu einer Lösung.

Beim Compilieren der angehängten Dateien gibt es kein Problem, aber beim 
Linken der .o-files kommt folgende Meldung (undefined reference):

Bin für jede Hilfe dankbar!
Roman


-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
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: Beispiel.c
avr-gcc -c -mmcu=atmega328p -I. -gdwarf-2 -DF_CPU=16000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wundef -Wa,-adhlns=obj/Beispiel.lst  -std=gnu99 
--combine -fwhole-program -Wundef -MD -MP -MF .dep/Beispiel.o.d 
Beispiel.c -o obj/Beispiel.o

Linking: main.elf
avr-gcc -mmcu=atmega328p -I. -gdwarf-2 -DF_CPU=16000000UL -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/Beispiel.o --output main.elf -Wl,-Map=main.map,--cref    -lm
obj/main.o: In function `__vector_16':
C:\WinAVR-20100110\sample/main.c:62: undefined reference to 
`Beispiel_Zahluebergabe'
C:\WinAVR-20100110\sample/main.c:63: undefined reference to 
`Beispiel_Multiplexer'
obj/main.o: In function `main':
C:\WinAVR-20100110\sample/main.c:25: undefined reference to 
`Beispiel_Init'
make: *** [main.elf] Error 1
<<< Process finished. (Exit code 2)
================ READY ================

von Oliver J. (skriptkiddy)


Lesenswert?

Das Compilerflag "-fwhole-program" sorgt dafür, dass keine Symbole 
exportiert werden müssen und somit der komplette Inhalt von Beispiel.c 
wegoptimiert werden kann. Sollte man nur nehmen, wenn das Programm aus 
einem c-file besteht.


Außerdem solltest Du mal nach dem Begriff "Include-Lock" googeln. Du 
hast da zwar initiative ergriffen, aber das macht so nicht wirklich 
Sinn.


Grüße Oliver

von Roman S. (kadege)


Lesenswert?

Oliver,
vielen Dank, das war der Fehler! Und danke für den Hinweis mit dem 
include lock.

Gruß,
Roman

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.