首页 > 解决方案 > 如何用make编译avr c和c++源代码

问题描述

我试图为 atmega32u4 编译一些用 c 和 c++ 编写的代码。我根据从 Internet 收集的信息编写了一个 makefile,但由于某种原因它失败了。如果我从命令行单独运行命令,它们都可以工作。但是运行 make 命令会出现以下错误:

main.cpp:3:10: fatal error: avr/io.h: No such file or directory

main.cpp 文件的内容并不真正相关,它只是一个闪烁代码。生成文件如下所示:

all: init clean $(patsubst %.cpp, %.hex, $(wildcard *.cpp))
  avr-size -A $(BUILDPATH)/*.elf

%.c.o: %.c
  @mkdir -p $(BUILDPATH)
  avr-gcc -c -g -Os -w -mmcu=$(CHIP) $^ -o $(BUILDPATH)/$@

%.cpp.o: %.cpp
  @mkdir -p $(BUILDPATH)
  avr-g++ -c -g -Os -w -mmcu=$(CHIP) $^ -o $(BUILDPATH)/$@

%.elf: %.o
  avr-gcc -g -Os -w -mmcu=$(CHIP) $(BUILDPATH)/$^ -o $(BUILDPATH)/$@

%.hex: %.elf
  avr-objcopy -R .eeprom --change-section-lma .eeprom=0 -O ihex $(BUILDPATH)/$^ $(BUILDPATH)/$@

那么我做错了什么?我必须设置一些环境变量还是makefile的结构不正确?

标签: makefileavrinclude-path

解决方案


推荐阅读