首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVR的Makefile

AVR的Makefile
EN

Stack Overflow用户
提问于 2022-05-26 14:56:59
回答 1查看 299关注 0票数 -1

我有文件夹"I2C AtMega32":

我有一个简单的Makefile:

代码语言:javascript
复制
all: main.hex program clean

main.o: main.cpp BMP280_driver-master\bmp280.c
    avr-gcc -Wall -Os -mmcu=atmega32 -c $< -o $@

main.elf: main.o
    avr-gcc -Wall -Os -mmcu=atmega32 -o main.elf main.o

main.hex: main.elf
    avr-objcopy -j .text -j .data -O ihex main.elf main.hex
    avr-size --format=avr --mcu=atmega32 main.elf

program:
#program uC

.PHONY: clean
clean:
    rm main.o main.elf

在makefile工作期间,出现了一些错误:

为什么不起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-26 17:43:26

主要问题是,看起来您正在尝试将两个不同的编译单元编译成一个对象文件。如果GCC支持这一点,我会感到惊讶,因为我以前从未见过。为每个C源文件使用gcc编译一个对象,然后为每个C++源文件编译一个带有g++的对象,然后将它们链接到一起。

还请注意,$<只是第一个先决条件(main.cpp)的名称,因此您甚至从未试图编译bmp280代码。当您想调试构建时,请注意Makefile正在运行的命令。

顺便说一句,all目标应该只是构建你的HEX文件。您可以分别运行make programmake clean来执行这些任务,program目标当然应该依赖于main.hex

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72393844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档