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
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.
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)
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:
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.