axiom 发表于 2005-9-5 15:47:28

请问 make: *** No rule to make target `Main.o', needed by `Main.elf'. Stop.

我用网站上的实例就不会出现上面的错误信息,自己写的程序就总是出错。请大家帮忙

loves123 发表于 2005-9-5 15:49:23

你的makefile文件配置不对。

armok 发表于 2005-9-5 15:51:20

axiom 发表于 2005-9-5 16:13:15

还是搞不定

我按网站上的例改的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

judy58 发表于 2005-9-5 16:17:50

makefile:

你在main file name里面输入的是"Main",而不是"Main.c"

不加后缀

axiom 发表于 2005-9-5 16:19:20

问题解决了,谢谢各位的帮助。

我发现我的文件名原来都是小写的,后来不知为何第一个字母变为了大写。重新改回

TARGET=main



SRC=$(TARGET).c global.c twi.c uart.c

就可以了。

78tide 发表于 2005-9-6 09:14:36

长见识!

一般情况(很多编译器和操作系统)对文件名的大小写不敏感。看来GCC是敏感的,老马说具体问题要具体对待---是真理哟

HJJourAVR 发表于 2005-9-6 09:54:48

【3楼】 TARGET = MainT

【5楼】 TARGET=main

SRC=$(TARGET).c global.c twi.c uart.c



不是大小写的问题,而是打错文件名。

axiom 发表于 2005-9-6 10:02:42

不是我改过文件名还是这样的,如果你在MakeFile中写TARGET=Main

而你的实际文件是main是不行的

icebomb 发表于 2005-9-6 17:59:09

winavr是从linux移植过来的,区分大小写

还有就是斜杠不对 / \

bobcat 发表于 2005-9-7 15:06:51

我遇到过类似的问题,也是文件名的大小写引起的,说来可笑,我在win2k下写的东西,都很正常,用u盘转到一台winme系统中,再编译就出这个错误提示,研究了很久,后来看到文件名变成大写的了才意识到。但是现在还是不知道为什么某些文件拷贝到winme系统中后文件名会从小写变成大写。

bbslhb 发表于 2013-7-23 11:54:32

还有一种可能会导致这种情况: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]
查看完整版本: 请问 make: *** No rule to make target `Main.o', needed by `Main.elf'. Stop.