mikrocontroller.net

Forum: Compiler & IDEs fremden C-Code compilieren


Autor: Seb (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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 `?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Sauger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
###
# 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


Fehler tritt aber weiterhin auf.

ich erstelle nochmal ein projekt neu ohne make file

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhm mit einem Neuen Projekt erstellen und ohne Makefile ist es leider 
nicht getan :/

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nämlich?

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>mhm mit einem Neuen Projekt erstellen und ohne Makefile ist es leider
>nicht getan :/
fehler?

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz kann ich dir die Files einfachmal schicken? vieleicht findest 
du das ja auf anhieb oder vieleicht läufts bei dir direkt.

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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)

Autor: Seb (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ah ok Vielen Dank :)

Hier ist das Zip-File mit allen Daten die zu dem Projekt gehören

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir läuft das Makefile glatt durch nachdem ich am Anfang die 
entsprechenden Zeilen "ent-" kommentiert hatte.

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie lässt man das denn "durchlaufen" und was muss kommentiert werden ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:120: undefined reference to `diagonal_lines'
animations.o: In function `ani__display_charset':
C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:152: undefined reference to `charset'
C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:152: undefined reference to `charset'
C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:159: undefined reference to `charset'
C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:159: undefined reference to `charset'
animations.o: In function `ani__big_bang':
C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:203: undefined reference to `line_retangles'
C:\Users\Sebastian\Desktop\LED Kubus\LED-Cube\default/../animations.c:203: undefined reference to `line_retangles'
animations.o: In function `_delay_ms':
c:/program files/winavr/lib/gcc/../../avr/include/util/delay.h:120: undefined reference to `line_retangles'
c:/program files/winavr/lib/gcc/../../avr/include/util/delay.h:120: undefined reference to `line_retangles'
c:/program files/winavr/lib/gcc/../../avr/include/util/delay.h:120: undefined reference to `line_retangles'
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 ?

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie hast du graphics.c vergessen, oder?

Was willst du eigentlich? Das Projekt compilieren oder dich in AVR 
Studio einarbeiten?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das stimmt-

Ich werde mich da mal ein bisschen schlau machen und mir das anschauen 
:) wenns funktioniert geb ich bescheid **grins*

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.