Forum: Compiler & IDEs mfile/make/CFLAGS Problem


von Michael (Gast)


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?

von Joerg Wunsch (Gast)


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.

von Michael (Gast)


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!

von Michael (Gast)


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?

von Joerg Wunsch (Gast)


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.

von Michael (Gast)


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!

von Markus (Gast)


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 ;)

von Joerg Wunsch (Gast)


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.

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
Noch kein Account? Hier anmelden.