Warum baut die hier gerne verwendete Makefileform den Prozessor zweimal in den gcc Aufruf ein? Die -mmcu Option würde doch reichen? Sie erzeugt doch ein _AVR_ATmega16_ das man für #idefs verwenden kann. avr-gcc -mmcu=atmega16 -I. -gstabs -DF_CPU=14745600UL -D__atmega16__ -Os -Wall -Wstrict-prototypes -std=gnu99 anaus.o --output anaus.elf -lm Ich übersehe etwas, aber was? Axel
Axel Gartner wrote:
> Warum baut die hier gerne verwendete Makefileform ...
Was ist denn die "hier gerne verwendete Makefileform" genau?
Makefile aus dem Tutorial, oder wo kommt das her?
Stefan Ernst wrote: > Axel Gartner wrote: >> Warum baut die hier gerne verwendete Makefileform ... > > Was ist denn die "hier gerne verwendete Makefileform" genau? > Makefile aus dem Tutorial, oder wo kommt das her? Ich formuliere meine Frage um: Warum wird in Makefiles häufig -mmcu=atmega16 UND -D__atmega16__ verwendet?
Axel Gartner wrote: > Warum wird in Makefiles häufig -mmcu=atmega16 UND -D__atmega16__ > verwendet? Es wird gar nicht ,,häufig'' dort verwendet, und streng genommen ist es illegal: das Benutzen von Bezeichnern, die mit zwei Unterstrichen beginnen, ist dem Nutzer nicht gestattet.
Axel Gartner wrote: > Warum wird in Makefiles häufig -mmcu=atmega16 UND -D__atmega16__ > verwendet? Und wieder muss ich nachfragen: Wie kommst du überhaupt auf dieses "häufig"? Das Beispiel-Makefile im Tutorial enthält das nicht, das vom AVR-Studio generierte Makefile enthält das nicht, und das von Jörgs MFile generierte Makefile enthält das auch nicht. Damit dürften wohl min 3/4 der hier verwendeten Makefiles abgedeckt sein.
Jörg Wunsch wrote: > Axel Gartner wrote: > >> Warum wird in Makefiles häufig -mmcu=atmega16 UND -D__atmega16__ >> verwendet? > > Es wird gar nicht ,,häufig'' dort verwendet, und streng genommen ist > es illegal: das Benutzen von Bezeichnern, die mit zwei Unterstrichen > beginnen, ist dem Nutzer nicht gestattet. Danke, dann entsorge ich das aus dem nichthäufigen Makefile. Axel
Bezüglich deiner einleitenden Frage: ja, es ist OK, für den MCU-
abhängigen Teil auf __AVR_${mcutype}__ zu testen. Dieser Makro
stellt ein dokumentiertes Interface dar.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.