Forum: Mikrocontroller und Digitale Elektronik No Rule To Make Target?!


von Dennis (Gast)


Angehängte Dateien:

Lesenswert?

Moin zusammen,
AVR-Studio meldet mir mit dieser angehängten Makefile
"make: *** No rule to make target `../Netzteil.c', needed by 
`Netzteil.o'.  Stop."

Ich hab mich mal an den Suchergebnissen hier im Forum entlang gehangelt, 
aber trotzdem kann ich dn Fehler nicht finden.

Könnt Ihr mir helfen?!

Vielleicht noch die Info: Das Problem besteht erst, seit dem ich die 
Makefile mal in AVRStudio abgehängt habe, und dieselbe Datei 
(unverändert) wieder einhängen wollte.

Grüße,

Dennis

von Εrnst B. (ernst)


Lesenswert?

Das Makefile schaut so aus, als würde es in ein Unterverzeichnis 
gehören.

Leg mal da, wo dein Netzteil.c liegt, ein neues Verzeichnis an (z.b. 
"build"), verschieb das Makefile da rein, und versuchs nochmal.

Oder lass das Makefile "neben" dem "Netzteil.cc", nimm dafür das "../" 
in Zeile 47 raus.

von Dennis (Gast)


Lesenswert?

okay, nun habe ich das hier:

gcc plug-in: Error: Object file not found on expected location D:\Eigene 
Dateien\Elektronikzeugs\Projekte\Netzteil\C\Netzteil.elf
Make sure your makefile specifies the output .elf file as Netzteil.elf

gcc plug-in: Error: Object file not found on expected location D:\Eigene 
Dateien\Elektronikzeugs\Projekte\Netzteil\C\Netzteil.elf
Make sure your makefile specifies the output .elf file as Netzteil.elf

Zwei Mal die gleiche Meldung?!

von Dennis (Gast)


Lesenswert?

okay, ich habe das Problem für die letzte Meldung gefunden...irgendwas 
ist mit einer .h-Datei nicht richtig.

#include<avr\stdlib.h>

Compiler meldet:

../Netzteil.c:6:23: error: avr\stdlib.h: No such file or directory
../Netzteil.c: In function 'print_voltage':
../Netzteil.c:210: warning: implicit declaration of function 'itoa'

Aber ich habe das überprüft: Die Datei liegt in dem genannten 
Verzeichnis.

Was ist das denn nun?!

von Εrnst B. (ernst)


Lesenswert?

Schreib besser:

#include <avr/stdlib.h>

('/' statt '\')


ausserdem liegt die "stdlib.h" (bei mir) nicht im avr-Unterverzeichnis.

von Dennis (Gast)


Lesenswert?

>Schreib besser:

>#include <avr/stdlib.h>

>('/' statt '\')

Ich habe alle #includes so. Wenn ich Deinem Rat folge, dann versteht das 
Ding gar nichts mehr.

<ausserdem liegt die "stdlib.h" (bei mir) nicht im avr-Unterverzeichnis.

Keine Ahnung, warum das bei mir so ist. Aber die ist ganz sicher da.

von Εrnst B. (ernst)


Lesenswert?

Dennis schrieb:

> Keine Ahnung, warum das bei mir so ist. Aber die ist ganz sicher da.

Dann ist das Falsch. Der C-Standard schreibt vor, dass das
#include <stdlib.h>
heißen muss.
Versuchs einfach mal, vermutlich ist dein "avr"-Verzeichnis im Suchpfad.

von Dennis (Gast)


Lesenswert?

okay, das hab ich gemacht. Und das funktioniert auch. Danke!
Das sieht nun aber bei mir so aus:


#include<avr\io.h>
#include<avr\interrupt.h>
#include<avr\portpins.h>
#include<stdlib.h>

stdlib.h liegt im gleichen Verzeichnis wie die anderen .h auch ... Das 
Programm wird nun einwandfrei compiliert. Wurde es bis vor 2 Stunden 
aber auch. Und ich habe an dem Programm nix geändert, ausser, dass ich 
versehentlich die Makefile vom Projekt entfernt habe. Nachdem ich diese 
wieder eingebunden hatte, ging das los. Und an den #includes habe ich 
nichts verändert.

Kann mir das jemand erklären?!

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.