Forum: Mikrocontroller und Digitale Elektronik Makefile: No rule to make target


von mr-unbekannt (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Mein nächstes Projekt wäre ein MP3 Player mittels mega8 und VS1001...
als Vorlage dient das großartige Projekt von 
http://members.liwest.at/dobretsb/stephan/mp3player.html

Ich habe versucht seine Dateien zu kompilieren (mittels WinAVR, also PN 
als Editor) aber ich bekomme immer denselben Fehler:

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 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.

make.exe: *** No rule to make target `*.o', needed by `mp3.elf'.  Stop.

> Process Exit Code: 2

Der Error wird wahrscheinlich vom Makefile ausgelöst, aber ich habe 
keine Ahnung was am Makefile falsch sein soll, außerdem bin ich in 
diesem Gebiet leider nicht so bewandert...

Könnte mir bitte jemand helfen den Fehler im Makefile zu finden?

Danke!

PS: Habe Suchfunktion bereits genutzt -> keine Hilfe

von Stefan B. (stefan) Benutzerseite


Lesenswert?

In dem Makefile (hier lohnt sich dein Anhang!) ist diese Zeile drin:

# List C source files here. (C dependencies are automatically 
generated.)
SRC = *.c

ändere das *.c zu dem oder wahrscheinlicher den Dateinamen deiner Source

Beispiel:

# List C source files here. (C dependencies are automatically 
generated.)
SRC = main.c datei1.c datei2.c datei3.c

Scheinbar kann das make-Programm des Originalautors das * selbstständig 
erweitern und dein make.exe kann das nicht.

von mr-unbekannt (Gast)


Lesenswert?

puhh ;-) hab ich schon mal gemacht, aber da sind so viele 
Fehlermeldungen gekommen dass ich das sofort wieder sein ließ

aber danke!

wenn mir vl jetzt noch wer helfen könnte:

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 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: mp3.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=mp3.lst  -std=gnu99 
-Wp,-M,-MP,-MT,mp3.o,-MF,.dep/mp3.o.d mp3.c -o mp3.o
mp3.c: In function 'setup_buttons':
mp3.c:116: warning: implicit declaration of function 'cbi'
mp3.c:123: warning: implicit declaration of function 'sbi'
mp3.c: In function 'process_buttons':
mp3.c:171: warning: implicit declaration of function 'inp'
mp3.c: In function 'main':
mp3.c:254: warning: pointer targets in passing argument 3 of 'fopenc' 
differ in signedness

Compiling: config.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=config.lst  -std=gnu99 
-Wp,-M,-MP,-MT,config.o,-MF,.dep/config.o.d config.c -o config.o

Compiling: delay.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=delay.lst  -std=gnu99 
-Wp,-M,-MP,-MT,delay.o,-MF,.dep/delay.o.d delay.c -o delay.o

Compiling: fat.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=fat.lst  -std=gnu99 
-Wp,-M,-MP,-MT,fat.o,-MF,.dep/fat.o.d fat.c -o fat.o
fat.c: In function 'fplay_sector':
fat.c:797: warning: implicit declaration of function 'inp'
fat.c:798: warning: implicit declaration of function 'sbi'
fat.c:799: warning: implicit declaration of function 'outp'
fat.c:803: warning: implicit declaration of function 'cbi'

Compiling: mmc.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=mmc.lst  -std=gnu99 
-Wp,-M,-MP,-MT,mmc.o,-MF,.dep/mmc.o.d mmc.c -o mmc.o
mmc.c: In function 'MMC_enable':
mmc.c:146: warning: implicit declaration of function 'cbi'
mmc.c: In function 'MMC_disable':
mmc.c:152: warning: implicit declaration of function 'sbi'

Compiling: spi.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=spi.lst  -std=gnu99 
-Wp,-M,-MP,-MT,spi.o,-MF,.dep/spi.o.d spi.c -o spi.o
spi.c: In function 'spi_init':
spi.c:31: warning: implicit declaration of function 'sbi'
spi.c:33: warning: implicit declaration of function 'cbi'
spi.c:35: warning: implicit declaration of function 'outp'
spi.c: In function 'spi_io':
spi.c:41: warning: implicit declaration of function 'inp'

Compiling: test.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=test.lst  -std=gnu99 
-Wp,-M,-MP,-MT,test.o,-MF,.dep/test.o.d test.c -o test.o
test.c: In function 'dot':
test.c:17: warning: implicit declaration of function 'cbi'
test.c:19: warning: implicit declaration of function 'sbi'

Compiling: vs1001.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=vs1001.lst  -std=gnu99 
-Wp,-M,-MP,-MT,vs1001.o,-MF,.dep/vs1001.o.d vs1001.c -o vs1001.o
vs1001.c: In function 'VS1001_send_SCI':
vs1001.c:34: warning: implicit declaration of function 'cbi'
vs1001.c:42: warning: implicit declaration of function 'sbi'
vs1001.c: In function 'VS1001_send_SDI':
vs1001.c:62: warning: implicit declaration of function 'outp'
vs1001.c:68: warning: implicit declaration of function 'inp'

Linking: mp3.elf
avr-gcc -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=mp3.o  -std=gnu99 
-Wp,-M,-MP,-MT,mp3.o,-MF,.dep/mp3.elf.d mp3.o config.o delay.o fat.o 
mmc.o spi.o test.o vs1001.o  --output mp3.elf -Wl,-Map=mp3.map,--cref 
-lm
test.o: In function `blink_error':
test.c:49: undefined reference to `cbi'
test.c:51: undefined reference to `sbi'
test.o: In function `blink_end':
test.c:39: undefined reference to `cbi'
test.c:41: undefined reference to `sbi'
test.o: In function `blink_start':
test.c:31: undefined reference to `sbi'
test.o: In function `dash':
test.c:24: undefined reference to `cbi'
test.c:26: undefined reference to `sbi'
test.o: In function `dot':
test.c:17: undefined reference to `cbi'
test.c:19: undefined reference to `sbi'
mp3.o: In function `setup_buttons':
mp3.c:116: undefined reference to `cbi'
mp3.c:117: undefined reference to `cbi'
mp3.c:118: undefined reference to `cbi'
mp3.c:119: undefined reference to `cbi'
mp3.c:120: undefined reference to `cbi'
mp3.c:123: undefined reference to `sbi'
mp3.c:124: undefined reference to `sbi'
mp3.c:125: undefined reference to `sbi'
mp3.c:126: undefined reference to `sbi'
mp3.c:127: undefined reference to `sbi'
mp3.o:mp3.c:130: more undefined references to `sbi' follow
mp3.o: In function `setup_buttons':
mp3.c:131: undefined reference to `cbi'
mp3.o: In function `process_buttons':
mp3.c:171: undefined reference to `inp'
mp3.c:195: undefined reference to `sbi'
mp3.o: In function `main':
mp3.c:235: undefined reference to `sbi'
mp3.c:252: undefined reference to `cbi'
mp3.c:269: undefined reference to `sbi'
fat.o: In function `fplay_sector':
fat.c:797: undefined reference to `inp'
fat.c:798: undefined reference to `sbi'
fat.c:799: undefined reference to `outp'
fat.c:803: undefined reference to `cbi'
fat.c:805: undefined reference to `inp'
fat.c:806: undefined reference to `inp'
mmc.o: In function `MMC_CS_deselect':
mmc.c:165: undefined reference to `sbi'
mmc.o: In function `MMC_disable':
mmc.c:152: undefined reference to `sbi'
mmc.c:153: undefined reference to `sbi'
mmc.o: In function `MMC_CS_select':
mmc.c:159: undefined reference to `cbi'
mmc.o: In function `MMC_enable':
mmc.c:146: undefined reference to `cbi'
mmc.c:147: undefined reference to `cbi'
mmc.o: In function `MMC_hw_init':
mmc.c:290: undefined reference to `sbi'
mmc.c:291: undefined reference to `sbi'
spi.o: In function `spi_io':
spi.c:40: undefined reference to `outp'
spi.c:41: undefined reference to `inp'
spi.c:42: undefined reference to `inp'
spi.o: In function `spi_init':
spi.c:31: undefined reference to `sbi'
spi.c:32: undefined reference to `sbi'
spi.c:33: undefined reference to `cbi'
spi.c:34: undefined reference to `cbi'
spi.c:35: undefined reference to `outp'
vs1001.o: In function `VS1001_HW_reset':
vs1001.c:105: undefined reference to `cbi'
vs1001.c:109: undefined reference to `sbi'
vs1001.o: In function `VS1001_send_SDI':
vs1001.c:61: undefined reference to `sbi'
vs1001.c:62: undefined reference to `outp'
vs1001.c:66: undefined reference to `cbi'
vs1001.c:68: undefined reference to `inp'
vs1001.o: In function `VS1001_send_SDI_32':
vs1001.c:73: undefined reference to `inp'
vs1001.o: In function `VS1001_read_SCI':
vs1001.c:48: undefined reference to `cbi'
vs1001.c:56: undefined reference to `sbi'
vs1001.o: In function `VS1001_send_SCI':
vs1001.c:34: undefined reference to `cbi'
vs1001.c:42: undefined reference to `sbi'
vs1001.o: In function `VS1001_SW_reset':
vs1001.c:95: undefined reference to `inp'
vs1001.o: In function `VS1001_init':
vs1001.c:116: undefined reference to `cbi'
vs1001.c:117: undefined reference to `sbi'
vs1001.c:120: undefined reference to `sbi'
vs1001.c:121: undefined reference to `cbi'
vs1001.c:124: undefined reference to `sbi'
vs1001.c:125: undefined reference to `sbi'
vs1001.c:129: undefined reference to `cbi'
vs1001.c:130: undefined reference to `sbi'
make.exe: *** [mp3.elf] Error 1

> Process Exit Code: 2

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Das sind im wesentlichen Warnungen, die davon kommen, dass du wohl eine 
neuere WinAVR Version hast als der Originalautor (OA).

Die echten Fehler mit der undefinierten Referenz sind auch auf eine 
ältere WinAVR Version beim OA zurückzuführen. Die vermissten Funktionen 
sind in neueren WinAVR Versionen bzw. der avr-libc nicht mehr da. Du 
hast jetzt mehrere Möglichkeiten.

Du kannst versuchen einen älteren WinAVR zu installieren und den zu 
benutzen. Ideal ist die Version die der OA hatte. Dazu den jetzigen 
WinAVR Ordner vor der Neuinstallation des älteren WinAVR umbenennen! DIe 
ältere Version(en) kannst du bei Sourceforge bekommen.

Oder du beisst in den sauren Apfel und passt die Source auf den neuen 
WiNAVR an. Die wenigen Funktionen oben sind schnell z.B. per Makro 
angepasst. Hinweise dazu findest du in der Anleitung zu der C-Library 
avr-libc bzw. wahrscheinlich auch in der Artikelsammlung dieser Seite.

Ich würde den zweiten Weg bevorzugen, verstehe aber, wenn ein C oder µC 
Anfänger davor zurückschreckt. Für den ist aber auch ein MP3 Player ein 
extrem herausforderndes Projekt.

von holger (Gast)


Lesenswert?

#include <compat/deprecated.h>

in der einen oder anderen Datei könnte helfen.

von mr-unbekannt (Gast)


Lesenswert?

@holger: hat leider keine Auswirkungen

danke stefan b.

Jetzt habe ich noch eine Frage:
Was bedeuten die vielen .o files?
zum schluss will ich ja eine mp3.hex haben?!
Oder wird die dann aus den .o files erzeugt, wenn keine Fehler mehr 
sind?

Danke

von holger (Gast)


Lesenswert?

>@holger: hat leider keine Auswirkungen

Kann ich nicht nachvollziehen. Die Fehlermeldungen
zu sbi,cbi,inp,outp sollten damit alle verschwinden.

#include <compat/deprecated.h>

einfach in types.h eingetragen und eine wunderschöne
HEX Datei ist das Resultat.

von mr-unbekannt (Gast)


Lesenswert?

DANKE! Hat doch geklappt!

Vielen Dank!

von eProfi (Gast)


Lesenswert?

Die Meldung "no rule to make target" kommt bei mir auch, sie kommt aber 
nicht, wenn das Makefile das Aktive Editorfile ist.

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.