请问 make: *** No rule to make target `Main.o', needed by `Main.elf'. Stop.
我用网站上的实例就不会出现上面的错误信息,自己写的程序就总是出错。请大家帮忙 你的makefile文件配置不对。 还是搞不定我按网站上的例改的makefile
修改过的部分如下:
#这是一个简单makefile,仅用于初学者使用
#修改于WINAVR20050214所生成的makefile
#简单实验只需更改 [单片机类型][目标文件名][系统时钟频率]即可
#修改好参数后另存到单片机程序所在目录,然后执行命令
#生成 烧录FLASH的*.hex,烧录EEPROM的*.eep,调试用的*.elf 文件
#
# www.OurAVR.com
# MCU name
# 单片机类型 参考格式是:atmega8 / at90s2313 / attiny15
MCU = atmega48
# Processor frequency.
# 系统时钟频率(Hz),用于生成延时 _delay_us() _delay_ms() 见delay.h
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
F_CPU = 8000000
# Target file name (without extension).
# 目标文件名(即生成的.hex/.eep/.elf的文件名)
TARGET = MainT
# List C source files here. (C dependencies are automatically generated.)
# C源文件名(不带路径)
# 多个文件名间用空格隔开 例如 SRC = file1.c file2.c file3.c
# 不需要加上 h头文件
SRC = $(TARGET).c Global.c Twi.c Uart.c makefile:
你在main file name里面输入的是"Main",而不是"Main.c"
不加后缀 问题解决了,谢谢各位的帮助。
我发现我的文件名原来都是小写的,后来不知为何第一个字母变为了大写。重新改回
TARGET=main
SRC=$(TARGET).c global.c twi.c uart.c
就可以了。 长见识!
一般情况(很多编译器和操作系统)对文件名的大小写不敏感。看来GCC是敏感的,老马说具体问题要具体对待---是真理哟 【3楼】 TARGET = MainT
【5楼】 TARGET=main
SRC=$(TARGET).c global.c twi.c uart.c
不是大小写的问题,而是打错文件名。 不是我改过文件名还是这样的,如果你在MakeFile中写TARGET=Main
而你的实际文件是main是不行的 winavr是从linux移植过来的,区分大小写
还有就是斜杠不对 / \ 我遇到过类似的问题,也是文件名的大小写引起的,说来可笑,我在win2k下写的东西,都很正常,用u盘转到一台winme系统中,再编译就出这个错误提示,研究了很久,后来看到文件名变成大写的了才意识到。但是现在还是不知道为什么某些文件拷贝到winme系统中后文件名会从小写变成大写。 还有一种可能会导致这种情况:makefile中SRC =后面列出了一串文件名,也就是你要编译的源文件。
你的Programmers Notepad的列表中所有文件也在。
但你试着顺序点开Programmers Notepad的列表中的所有源文件时,期间可能会弹出提示**.c could not be opend。
说明这个**.c,在你的项目文件夹里面没了。正是这个文件无故消失了,而导致了这个错误:*** No rule to make target `Main.o', needed by `Main.elf'. Stop.
页:
[1]