mikrocontroller.net

Forum: Compiler & IDEs mfile/make/CFLAGS Problem


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, zusammen,

ich habe mir gerade den AVR-GCC unter Linux installiert. Ich habe die
Dateien von der savannah-Seite genommen und die Patches ausgeführt
sowie die Dateien selbst kompiliert.

Jetzt habe ich mir mit dem mfile-Tool von Jörg Wunsch ein Makefile
erstellt. Allerdings bekomme ich immer die Fehlermeldung:
"Makefile:194: *** Recursive variable 'CFLAGS' references itself
(eventually). Stop."
Ich hatte bei einem Freund das ganze mit WinAVR ausprobiert und dort
geht es.
Ich benutze GNU Make 3.80 und die Zeile 194 ist:
"$(CC) -c $(ALL_CFLAGS) $< -o $@".
ALL_CFLAGS ist:
"ALL_CFLAGS= -mmcu=$(MCU) -I. $(CFLAGS)"

Was läuft da schief?

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, das Problem hatte ich in meinen Quellen schon eine Weile
repariert, aber vergessen, das Archiv auf dem Webserver zu
aktualisieren.

Vermutlich bist Du wohl der erste, der Mfile unter Unix benutzt. :-)

Zieh's Dir bitte nochmal, jetzt sollte das klappen.

> Ich hatte bei einem Freund das ganze mit WinAVR ausprobiert und dort
> geht es.

Ja, das makefile_template im Zip-Archiv für WinAVR unterscheidet sich
ein wenig vom Template im .tar.gz-Archiv für Unix.  Letzteres sollte
insbesondere mit allen drei Unix-make-Dialekten (SysV, GNU, BSD)
zurechtkommen (ist bei WinAVR uninteressant, da dort eh ein GNU make
dabei ist und sonst nix), außerdem ist der ganze AVR-Studio-
Kompatibilitäts-Message-Müll rausgeflogen.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die prompte Antwort!
Vermutlich sind die Linuxer/Unixer im Gegensatz zu den
Windows-Benutzern so versiert und daran gewöhnt, dass sie die makefiles
selber schreiben können. Ich als Umsteiger bin da wohl die Ausnahme.
Aber einiges habe ich immerhin schon verstanden... ;)

Danke nochmal, auch für das Tool!

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hoffe, ich nerve jetzt nicht, aber ich bekomme immer noch denselben
Fehler.
Ich habe das Archiv von:
http://www.sax.de/~joerg/mfile/
heruntergeladen und entpackt. In der Datei mfile.tcl habe ich in der
ersten Zeile den Kommandointerpreter geändert auf
"#!/usr/bin/wish", ausgeführt wird das Programm dann auch. Ich mache
meine Eingaben und das Makefile wird erstellt.
Das Makefile kopiere ich dann in mein Sourceverzeichnis (Zum Testen ist
da nur ein "main.c" drin) und rufe "make" auf.
Dann erscheint der Fehler. Bin ich jetzt einfach nur blind oder muss
ich noch etwas Anderes beachten?

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> In der Datei mfile.tcl habe ich in der ersten Zeile den
> Kommandointerpreter geändert auf "#!/usr/bin/wish", ausgeführt
wird
> das Programm dann auch.

Ja, mit der tixwish sieht's ein bißchen netter aus, aber die normale
wish vom Tk tut's genauso, ich habe keine Besonderheiten von tix
benutzt.

> Ich mache meine Eingaben und das Makefile wird erstellt.

Hast Du das makefile_template passend installiert (z. B. nach
/usr/local/share/mfile, siehe README)?  Sieht mir so aus, als hättest
Du noch das alte template.  Das neue erkennst Du an dieser Zeile:

CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD)
$(CEXTRA)

Das fehlerhafte hat versucht, die CFLAGS rekursiv zusammenzubauen --
ein fataler Denkfehler meinerseits.

> Vermutlich sind die Linuxer/Unixer im Gegensatz zu den
> Windows-Benutzern so versiert und daran gewöhnt, dass sie die
> makefiles selber schreiben können.

Im Prinzip schon, eher als der typische Win-User bestimmt.
Nichtsdestotrotz fand ich mfile am Ende auch für mich selbst ganz
praktisch, weil ich zuvor für jedes kleine Spiel-Projektchen immer
erst ein ähnliches Makefile eines anderen Projekts als Template
zusammengekramt habe.  Jedesmal alles von Grund auf zu schreiben, ist
bei den vielen Kleinigkeiten, an die man bei einem µC so denken muß,
auch ein bissel aufwendig.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Asche auf mein Haupt: Ich hatte noch die env-Variable gesetzt und darum
griff Dein Programm noch auf die alte Version zu, die ich noch zum
ersten Test in einem temp-Verzeichnis hatte...
Jetzt kann ich endlich ins Bett, schön dämlich sowas...

Dankeschön nochmal für die Hilfe!

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir das Teil auch runtergeladen und es funktioniert auch
soweit, allerdings ist noch ein kleiner Fehler im avrdude-Teil drin,
derselbe wie mit den CFLAGS. Vielleicht änderst Du das noch ;)

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tust ja mächtig geheim...  Wahrscheinlich ist Dir gar nicht klar, daß
der Anonymizer, den Du benutzt, nur 20 Meter von dem Server entfernt
steht, von dem Du Mfile geholt hast. :-)

Danke für den Hinweis aber.  Den avrdude-Teil habe ich mit
Mfile-generierten Makefiles in der Tat noch nicht getestet.

Ich habe das Archiv nochmal aktualisiert.  Das betrifft nur das
.tar.gz File, Benutzer des (WinAVR-) ZIP-Archivs müssen das also nicht
nochmal holen.

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.