avr_test.c: In function 'setup':
avr_test.c:5:2: error: 'DDRB' undeclared (first use in this function)
DDRB |= (1 << PB4);
Что говорит о том что он не видит .h файлы.
Сами .h файлы физически есть, в /usr/avr/include
Когда-то я этот успешно решил, но что я тогда сделал - убей, не помню. где-то в линуксе писал пути к этим бибилиотекам. Пробовал установливать PATH в /usr/avr и /usr/avr/include, но не помогает.
[uquote="Shuspano",url="/forum/viewtopic.php?p=4007227#p4007227"]Что говорит о том что он не видит .h файлы.[/uquote]
Нет. Конкретно сообщение выше говорит о том, что DDRB не определено. Что скорее всего означает, что вы забыли сделать #include <avr/io.h>
Если бы этого файла не было бы, компилятор ругался именно на отсутствие вкладываемого .h файла через #include, что если и было, то вы показали не ту ошибку.
Добавлено after 1 minute 21 second:
PS: Но на всякий случай путь для #include прописывается в переменной окружения CPATH, а не PATH.
и дальше не стал бы даже пытаться скомпилировать файл!
Значит проблема не в нахождении файла, а в его "содержимом". В данном случае avr/io.h содержит очень много #ifdef зависящих от модели МК, которая как раз передается ключиком -mmcu правильным. Если этого не сделать, файл для компилятора подключится, но окажется условно почти пустым. Поэтому и такие ошибки могут быть.
Добавлено after 2 minutes 41 second:
А, ну еще вариант конечно что -mmcu есть, но там указана модель МК в которой в принципе нет DDRB. Какая-нибудь тинька малоногая, к примеру.
lester@sex-machine ~/hwd/AVR $ avr-gcc -Os -mmcu=attiny13 avr_test.c
In file included from avr_test.c:2:0:
/usr/avr/include/util/delay.h:90:3: warning: #warning "F_CPU not defined for <util/delay.h>" [-Wcpp]
# warning "F_CPU not defined for <util/delay.h>"
^
avr_test.c:4:0: warning: "F_CPU" redefined [enabled by default]
#define F_CPU 9600000UL
^
In file included from avr_test.c:2:0:
/usr/avr/include/util/delay.h:91:0: note: this is the location of the previous definition
# define F_CPU 1000000UL
^
NStorm, те самые, которые заставляют выбирать странные решения.
Представьте, что вы написали библиотеку - придется еще к ней в заголовочный файл вписывать частоту. А потом в один прекрасный момент забудете и будет у вас одна периферия считать что частота камня 1 МГц, а вторая - что 8 МГц.
COKPOWEHEU, а ничего, что именно в ардуине F_CPU вручную вписывать не надо, оно ключиком -D задается исходя из описалова в boards.txt? Я в курсе, что задавать это лучше в Makefile, только у ТС явно было уже задано в файле, исходя из ошибки.
[uquote="NStorm",url="/forum/viewtopic.php?p=4007465#p4007465"]COKPOWEHEU, а ничего, что именно в ардуине F_CPU вручную вписывать не надо, оно ключиком -D задается исходя из описалова в boards.txt?[/uquote]
И кто "скажет" make'у, что нужные дефайны требуется брать из некоего файла?
Более идеальным вариантом было бы Makefile генерировать cmake'ом, но для мелкоты и так сойдет.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
COKPOWEHEU, вот вам новые претенденты, до которых можно докопаться:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4007474#p4007474"]И кто "скажет" make'у, что нужные дефайны требуется брать из некоего файла?[/uquote]
Система сборки IDE генерит Makefile на основе boards.txt. Как там правильнее, пойди расскажи на arduino.cc, это они придумали, а не мы.
И кто "скажет" make'у, что нужные дефайны требуется брать из некоего файла?
make по умолчанию выполняет скрипт из makefile, ему ничего для этого говорить не надо.
Или вы о чем спрашивали-то? Кто в makefile будет частоту прописывать? Программист, очевидно. Так же как прочие ключи компиляции, имя камня и список исходников.
[uquote="NStorm",url="/forum/viewtopic.php?p=4007542#p4007542"]Система сборки IDE генерит Makefile на основе boards.txt[/uquote]
В общем, все не как у людей!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ