avr/io.h ошибка "No such file or directory" при компиляции с использованием avr-gcc

Я пытаюсь использовать atmega328p как отдельный микрочип и запрограммировать его. Я использую Arduino Uno в качестве ISP. Я написал простую программу, чтобы проверить ее, однако, когда я пытаюсь скомпилировать ее с помощью

avr-gcc -mmcu=atmega328p -o main.out main.c

Я получаю сообщение об ошибке:

main.c:1:20: fatal error: avr/io.h: No such file or directory
compilation terminated.

Я использую OpenSUSE Leap 42.3 и установил avr-gcc, avr-libc.

Мой код:

#include <avr/io.h>                                                                                                                                                                    

int main() {
    DDRB = 1;
    PORTB = 1;
}

Заранее спасибо!

, 👍0

Обсуждение

Вы установили avr-libc?, @Majenko

Вы можете использовать Arduino IDE для компиляции таких программ. Что возражает против этого?, @Nick Gammon

@NickGammon есть много причин избегать IDE. https://christopherjmccellan.wordpress.com/2018/02/16/test-driving-arduino/, @RubberDuck

[Мнение] Если вы хотите (ИМХО, в миллион раз) лучшую среду разработки, чем Arduino IDE, начните использовать PlatformIO. Автоматически создает файлы проектов для всех возможных IDE, загружает необходимые компиляторы и фреймворки, «просто работает» без забот., @Maximilian Gerhardt

@RubberDuck - ну ... жалоба на «IDE», которая SoftwareSerial отключает прерывания, вряд ли является ошибкой IDE. И IDE поддерживает использование другого редактора. Это не самая лучшая IDE, которую я видел, но она легко создает файлы .hex, готовые к загрузке (и действительно загружает их, если вы этого хотите)., @Nick Gammon

@NickGammon Я признаю, что это больше жалоба на Arduino, чем на Arduino IDE, и да, она довольно хороша для загрузки, но вы все равно не можете писать и запускать тесты, если не скомпилируете ее самостоятельно., @RubberDuck


1 ответ


1

Я предполагаю, что вы начали с набора инструментов Arduino, установленного на вашем компьютере.

Попробуйте явно включить файлы заголовков в путь включения с помощью переключателя -I.

avr-gcc -mmcu=atmega328p -I /path/to/avr/include -o main.out main.c

Просто найдите файл io.h. Он должен быть где-то рядом с тем местом, где вы нашли компилятор.

,