Ich habe aus dem Netz von der Elektor einen C-Code gefunden und den wollte ich jetzt Compilieren. Das programm besteht aus ein paar .c und .h Files und einem Makefile. Mit den Makefiles habe ich noch nie gearbeitet. Das Makefile habe ich in meinem AVR Studio in der Projektstruktur unter "Other Files" eingetragen und unter Projekt Options habe ich "Use external Makefile" angeklickt und habe das Makefile von dem Projekt dort angegeben. Wenn ich dann den Code kompiliere kommt diese meldung " cc1.exe: error: missing argument to "-mmcu=" " Wenn ich garkein Makefile angebe dann findet er irgendwie ein paar funktionen nicht dann kommen solche meldungen ../AVR-Studio/cube.c:61: error: 'CLEAR_CUBE' undeclared (first use in this function) ../AVR-Studio/cube.c:64: warning: implicit declaration of function 'ani__blink_slow_to_fast' ../AVR-Studio/cube.c:66: error: 'NOT_INVERSE' undeclared (first use in this function) und noch 7 weitere ähnliche meldungen Ich habe das Makefile mal an den Beitrag gehangen weil da recht viel drin steht und dann muss man so im Forum scrollen. hätte jmd ne Idee woran das kompilieren scheitert `?
Ganz am Anfang deines Makefiles ### # Select microcontroller target ### # MCU = atmega16 # MCU = atmega32 ### # Select cpu frequency in herz and MHz ### # F_CPU = 1000000 # F_CPU_MHZ = 1 # F_CPU = 8000000 # F_CPU_MHZ = 8 Kommentiere jeweils die Zeile aus, die bei dir zutrifft. Im übrigen würde ich da kein externes Makefile nehmen. Ein neues Projekt für den gewünschten Prozessor anfangen, AVR-Studio machen lassen. Die 3 Source Code Files ( animations.c, graphics.c, draw.c ) zum Projekt hinzufügen und durchcompilieren. > Wenn ich garkein Makefile angebe dann findet er irgendwie > ein paar funktionen nicht dann kommen solche meldungen > > ../AVR-Studio/cube.c:61: error: 'CLEAR_CUBE' undeclared > (first use in this function) > ../AVR-Studio/cube.c:64: warning: implicit declaration of > function 'ani__blink_slow_to_fast' > ../AVR-Studio/cube.c:66: error: 'NOT_INVERSE' undeclared > (first use in this function) Das hat aber nichts mit dem Makefile zu tun. Das dürfte einfach nur der Hinweis sein, dass das besch... programmiert ist.
Moin, ein Hinweis um welches "Elektor" Projekt es sich handelt steigert die Schoße auf eine Antwort, vielleicht erinnert sich dann jemand daran. > cc1.exe: error: missing argument to "-mmcu=" da fehlt die Angabe zum verwendeten Prozessor. lass das externe Makefile mal weg und setze ein frisches Projekt im AVR Studio auf. MfG
sorry klar: es handelt sich um den 5x5x5 LED-Kubus: Wo gebe ich denn den Prozessor noch an ? ich habe das Projekt über AVR erstellt und hab den ATMEGA32 angegeben. und habe dann die .c und .h Files in das neue Projekt eingefügt. Das makefile hatte ich auch schon soweit geändert das sieht so aus jetzt
1 | ###
|
2 | # Select microcontroller target
|
3 | ###
|
4 | # MCU = atmega16
|
5 | MCU = atmega32 |
6 | |
7 | ###
|
8 | # Select cpu frequency in herz and MHz
|
9 | ###
|
10 | # F_CPU = 1000000
|
11 | # F_CPU_MHZ = 1
|
12 | |
13 | F_CPU = 8000000 |
14 | F_CPU_MHZ = 8 |
Fehler tritt aber weiterhin auf. ich erstelle nochmal ein projekt neu ohne make file
mhm mit einem Neuen Projekt erstellen und ohne Makefile ist es leider nicht getan :/
>mhm mit einem Neuen Projekt erstellen und ohne Makefile ist es leider >nicht getan :/ fehler?
huch irgendwie ist der halbe text verschwunden. Also es kommen immer noch die gleichen fehlermeldungen wie in dem ersten Projekt. Ohne Makefile meckert er an den Funktionen rum und mit Makefile kommt wieder der fehler mit cc1.exe: error: missing argument to "-mmcu=" selbst wenn ich im Makefile den Prozessor und die Frequenz angebe. wie könnte ich das noch überprüfen?
Zumimdest ist mir beim schnellen Drüberschauen im Makefile nichts aufgefallen, was AVR-Studio nicht auch hinkriegen würde. Wenn es also noch Fehler gibt (weiter oben ist ja schon so etwas angeklungen), so ist diesmal nicht die Entscheidung "Makefile/kein Makefile" der Übeltäter, sondern es handelt sich um ganz banale Fehler im Code. @Seb Auch wenn du dich jetzt wundern magst. Es ist beileibe kein Einzelfall und auch gar nicht so selten, dass insbesondere ältere Projekte/Programme nicht auf Anhieb compilierbar sind. Meistens sind es aber nur Kleinigkeiten, die ein C-Kenner schnell behoben hat.
Seb schrieb: > Ohne Makefile meckert er an den Funktionen rum und mit Makefile kommt > wieder der fehler mit cc1.exe: error: missing argument to "-mmcu=" Mit Makefile kommt er erst gar nicht zum compilieren :-) Da hängst du bereits in der Vorstufe fest.
Karl Heinz kann ich dir die Files einfachmal schicken? vieleicht findest du das ja auf anhieb oder vieleicht läufts bei dir direkt.
Hallo seb, vielleicht hast du auch bei der Konfiguration vom AVR Studio irgendetwas falsch gemacht und du suchst einfach nur den Fehler am falschen Ort. Versuche doch erst einmal mit "make" auf der Kommandozeile, ob das Makefile als solches funktioniert.
@All > Projekte/Programme nicht auf Anhieb compilierbar sind. Meistens sind es > aber nur Kleinigkeiten, die ein C-Kenner schnell behoben hat. Was denkt ihr? War der Hinweis zu subtil? Klartext: Die noch verbleibenden Fehler haben höchst wahrscheinlich nichts mit dem Makefile zu tun! Du musst in den C-Source Code hineinschauen, um dem auf die Schliche zu kommen, was da los ist. Wenn du dabei Hilfe brauchst, dann poste den Source-Code (Alle 3 *.c Files, zugehörige Header Files) Zippe alles zusammen und lade es hoch. (Du kannst auch ganz einfach das komplette Projektverzeichnis zippen und hochladen, dann muss man nicht lange nachfragen, wenn etwas unklar ist)
Ah ok Vielen Dank :) Hier ist das Zip-File mit allen Daten die zu dem Projekt gehören
Bei mir läuft das Makefile glatt durch nachdem ich am Anfang die entsprechenden Zeilen "ent-" kommentiert hatte.
wie lässt man das denn "durchlaufen" und was muss kommentiert werden ?
Die Lösung ist ganz einfach: cube.c gehört gar nicht mit zum Projekt dazu. Dein Projekt besteht aus den Dateien monocube.c animations.c draw.c monocube.h animations.h draw.h cube.c dürfte ein Überbleibsel aus der Entwicklungsgeschichte sein. Wirf es aus dem AVR-Studio Projekt raus und alles wird gut.
Hallo Seb, ich habe nur das Makefile so geändert, wie du oben schon beschrieben hast, und auf der Kommandozeile "make" + <enter> eingegeben. Ich habe avr-gcc Version 4.3.4 unter Ubuntu 10.4. Gruß, DetlevT
Mhm so ma grad ein bisschen rumgespielt. Sprich: Neues Projekt angelegt mit atmega 32 und dann die 6 dateien monocube.c animations.c draw.c monocube.h animations.h draw.h in das projekt eingefügt. nun gibt er mir 12 fehlermeldungen raus: diese wären:
1 | C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:120: undefined reference to `diagonal_lines' |
2 | animations.o: In function `ani__display_charset': |
3 | C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:152: undefined reference to `charset' |
4 | C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:152: undefined reference to `charset' |
5 | C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:159: undefined reference to `charset' |
6 | C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:159: undefined reference to `charset' |
7 | animations.o: In function `ani__big_bang': |
8 | C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:203: undefined reference to `line_retangles' |
9 | C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:203: undefined reference to `line_retangles' |
10 | animations.o: In function `_delay_ms': |
11 | c:/program files/winavr/lib/gcc/../../avr/include/util/delay.h:120: undefined reference to `line_retangles' |
12 | c:/program files/winavr/lib/gcc/../../avr/include/util/delay.h:120: undefined reference to `line_retangles' |
13 | c:/program files/winavr/lib/gcc/../../avr/include/util/delay.h:120: undefined reference to `line_retangles' |
14 | animations.o:c:/program files/winavr/lib/gcc/../../avr/include/util/delay.h:120: more undefined references to `line_retangles' follow |
irgendwie sind die Funktionnen noch nicht richtig verknüpft. oder ?
Irgendwie hast du graphics.c vergessen, oder? Was willst du eigentlich? Das Projekt compilieren oder dich in AVR Studio einarbeiten?
Detlev T. schrieb: > Irgendwie hast du graphics.c vergessen, oder? Das war mein Fehler :-) Die hab ich übersehen als ich ihm die Aufstellung der Files gegeben habe. > Was willst du eigentlich? Das Projekt compilieren oder dich in AVR > Studio einarbeiten? Es schadet nichts, wenn er lernt wie man fremden Code übernimmt und zumindest soweit abklappert, um aus einem Wust von Files diejenigen herauszusuchen die tatsächlich gebraucht werden.
Seb schrieb: > irgendwie sind die Funktionnen noch nicht richtig verknüpft. > oder ? Dann sieh nach, in welchem der C-Files diese Funktionen enthalten sind und füge dieses File noch zum Projekt hinzu. Ein bischen selber mitdenken musst du schon. So ist das nun mal bei der Arbeit mit µC. IC auf Platinen löten, einschalten und 'macht genau das was ich will' ohne wenigstens in Ansätzen zu verstehen was man da tut ... das war gestern. µC stehen und fallen mit der Programmierung. Dort liegt das eigentiche Know-How. Und wenn man anpassen will, dann muss man dort eingreifen. Das geht aber nur dann, wenn man wenigstens ein wenig Ahnung von der Materie hat. Und du wirst eingreifen wollen! Denn schliesslich soll der Cube das anzeigen, was du dir vorstellst und nciht das was sich Elektor vorgestellt hat.
Ja das stimmt- Ich werde mich da mal ein bisschen schlau machen und mir das anschauen :) wenns funktioniert geb ich bescheid **grins*
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.