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
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.
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
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.
#include <compat/deprecated.h> in der einen oder anderen Datei könnte helfen.
@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
>@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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.