搜索
bottom↓
回复: 11

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

[复制链接]

出0入0汤圆

发表于 2005-9-5 15:47:28 | 显示全部楼层 |阅读模式
我用网站上的实例就不会出现上面的错误信息,自己写的程序就总是出错。请大家帮忙

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2005-9-5 15:49:23 | 显示全部楼层
你的makefile文件配置不对。
头像被屏蔽

出0入0汤圆

发表于 2005-9-5 15:51:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2005-9-5 16:13:15 | 显示全部楼层
还是搞不定

我按网站上的例改的makefile

修改过的部分如下:

#这是一个简单makefile,仅用于初学者使用

#修改于WINAVR20050214所生成的makefile

#简单实验只需更改 [单片机类型][目标文件名][C源文件名][系统时钟频率]即可

#修改好参数后另存到单片机程序所在目录,然后执行[make all]命令

#生成 烧录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

出0入0汤圆

发表于 2005-9-5 16:17:50 | 显示全部楼层
makefile:

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

不加后缀

出0入0汤圆

 楼主| 发表于 2005-9-5 16:19:20 | 显示全部楼层
问题解决了,谢谢各位的帮助。

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

TARGET=main



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

就可以了。

出0入0汤圆

发表于 2005-9-6 09:14:36 | 显示全部楼层
长见识!

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

出0入0汤圆

发表于 2005-9-6 09:54:48 | 显示全部楼层
【3楼】 TARGET = MainT

【5楼】 TARGET=main

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



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

出0入0汤圆

 楼主| 发表于 2005-9-6 10:02:42 | 显示全部楼层
不是我改过文件名还是这样的,如果你在MakeFile中写TARGET=Main

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

出0入0汤圆

发表于 2005-9-6 17:59:09 | 显示全部楼层
winavr是从linux移植过来的,区分大小写

还有就是斜杠不对 / \

出0入0汤圆

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

出0入0汤圆

发表于 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.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表