Habe das STK525 mit At90USB, benutze Atmel's Beispielanwendung template und möchte den Poti-Wert einlesen, hänge aber seit Tagen an diesem Problem fest: " device_template_task.o: In function `device_template_task': ../device_template_task.c:91: undefined reference to `Get_adc_pot_val' make: *** [template.elf] Error 1 Build failed with 1 errors and 1 warnings... " USE_ADC habe ich "#defined", .h und .c Datei mit eingebunden, die die Funktion beschreiben. Dieser Fehler tritt recht häufig auf, habe auch viele Beiträge gefunden und befolgt, aber es hat noch nichts richtig weiter geholfen. Zuletzt habe ich die .c Datei ins Makefile eingefügt bei: ## Objects that must be built in order to link und ## Compile half aber nix. Weiß jemand Rat? Nutze AVRStudio mit AVRGCC von WinAVR! MfG Lisa
> undefined reference to `Get_adc_pot_val' Das heist nichts anderes, als keine Funktion mit dem Namen Get_adc_pot_val gefunden werden konnte. Das kann mehrere Ursachen haben * Ein simpler Tippfehler. Häufig ist es einfach nur die Gross/Kleinschreibung die einen einen Strich durch die Rechnung macht * Beim Linken wurden nicht alle Bestandteile, die das fertige Programm ausmachen, angegeben. Jedes *.c File wird einzeln compiliert um daraus eine sog. Objectdatei zu machen. Die Summe aller Objectdateien, die zu dem Projekt gehören, werden dann zum eigentlichen Programm zusammen-gelinkt (miteinander verbunden). Ist dort eine Objectdatei nicht angegeben, so fehlen natürlich die dort enthaltenen Funktionen, der Linker kann sie nicht finden und meldet 'undefined reference' > Nutze AVRStudio mit AVRGCC von WinAVR! Wenn du AVR Studio benutzt, dann brauchst du dich ums Makefile nicht selbst kümmern, du kannst das alles über das AVR Studio erledigen http://www.mikrocontroller.net/articles/FAQ#Ich_hab_da_mehrere_.2A.c_und_.2A.h_Dateien._Was_mache_ich_damit.3F
Fehler gefunden! Hab das falsche Source-/Header- File benutzt. Hat aber erst funktioniert, nachdem ich wieder alles zum Makefile hinzugefügt habe!???? Wenn ich die Objekt-Datei wieder rausnehm aus ## Objects that must be built in order to link geht's nicht. Oder muss bevor "Build" ausgeführt wird noch eine andere Funktion aufrufen, die das Mekefile neu generiert?
Lisa Kunze wrote: > Fehler gefunden! > Hab das falsche Source-/Header- File benutzt. > Hat aber erst funktioniert, nachdem ich wieder alles zum Makefile > hinzugefügt habe!???? > Wenn ich die Objekt-Datei wieder rausnehm aus > ## Objects that must be built in order to link > geht's nicht. > > Oder muss bevor "Build" ausgeführt wird noch eine andere Funktion > aufrufen, die das Mekefile neu generiert? Nein. Überlass das Makefile dem AVR-Studio. Du musst lediglich das besagte File ins Projekt einfügen: http://www.mikrocontroller.net/articles/FAQ#Ich_hab_da_mehrere_.2A.c_und_.2A.h_Dateien._Was_mache_ich_damit.3F
..den Link hab' ich mir schon angeschaut! Da steht ja auch, dass die .o gelinkt werden. Aber wenn's doch so nicht funktioniert! Einstellungen zum Makefile gibt's bei AVRStudio nich, oder?
Lisa Kunze wrote: > ..den Link hab' ich mir schon angeschaut! Da steht ja auch, dass die .o > gelinkt werden. > Aber wenn's doch so nicht funktioniert! Hast du auch ganz unten den Abschnitt gesehen, wie man dem AVR-Studio klar macht, welche Dateien zum Projekt gehören? Das ist das um und auf: Im AVR-Studio alle Source Code Files eintragen und alles wird compiliert und vollständig gelinkt. > Einstellungen zum Makefile gibt's bei AVRStudio nich, oder? Durch Hinzufügen von Source Code Files zum Projekt veränderst du implizit das Makefile. Die anderen Dinge die im Makefile eingestellt werden sind in den Projekt-Optionen enthalten. Mit AVR-Studio gibt es keinen Grund sich selbst mit dem Makefile herumzuschlagen.
Wenn mit aktivieren des Knoten "Source File" das markieren gemeint ist, hab' ich's so gemacht, werd noch ein bißchen rumprobieren woran es denn liegt. Wenn ich ein Source File compiliere gibt es auch schon eine Message: "gcc plug-in: Making arbitrary targets when using external makefile may fail"
Lisa Kunze wrote: > Wenn mit aktivieren des Knoten "Source File" das markieren gemeint ist, > hab' ich's so gemacht, werd noch ein bißchen rumprobieren woran es denn > liegt. > > Wenn ich ein Source File compiliere gibt es auch schon eine Message: > "gcc plug-in: Making arbitrary targets when using external makefile may > fail" Nochmal: Schalte das externe Makefile endlich ab! AVR-Studio kümmert sich um dein Makefile. Das macht das zwar nicht perfekt, aber gut genug.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.