Code::Blocks erzeugt folgenden Compiler-Aufruf:
1 | avr-gcc -mmcu=atmega328p -Wall -DF_CPU=10000000UL -mmcu=atmega328p -g -I/usr/include -c test.c -o obj/Debug/test.o
|
das Problem ist die Option -I/usr/include, die zur Folge hat, dass der
Header pgmspace.h eine Salve von Fehlern
1 | error: unknown type name ‘uint_farptr_t’
|
ausspuckt, weil der Compiler den Linux-System-Header inttyped.h nimmt,
statt den der lib-avr.
Um dem vorzubeugen, habe ich unter Project->Build options->Search
directories | Compiler /usr/lib/avr/include/ eingetragen. Das
avr-gcc-Kommando sieht dann so aus:
1 | avr-gcc -mmcu=atmega328p -Wall -DF_CPU=10000000UL -mmcu=atmega328p -g -I/usr/lib/avr/include/ -I/usr/include -c test.c -o obj/Debug/test.o
|
Nur leider scheint das auch nichts zu helfen, wie das cpp-.i-Listing
zeigt:
1 | # 1 "/usr/lib/avr/include/avr/io.h" 1 3
|
2 | # 99 "/usr/lib/avr/include/avr/io.h" 3
|
3 | # 1 "/usr/lib/avr/include/avr/sfr_defs.h" 1 3
|
4 | # 126 "/usr/lib/avr/include/avr/sfr_defs.h" 3
|
5 | # 1 "/usr/include/inttypes.h" 1 3
|
Die /usr/lib/avr/include/inttypes.h existiert - warum gcc diese Kurve
macht, ist mir schleierhaft. Im .cbp-File von Code::Blocks steht zwar
meine selbsteingetragene -I-Option, aber nich -I/usr/include.
Das Beste wäre, diese blöde -I/usr/include - Option weg zu bekommen -
nur wie?