make, make clean 新手小问题

registercsdn 2014-08-20 11:06:34
在make的时候,会重新生成objects, 也就说新的object覆盖就得objects

make clean 是删除旧的objects。

所以应该是make已经含有了make clean的功能。

但是实际用的时候,比如多次编译调试运行, 有时候必须make clean一下,直接make,上次留下来的错误似乎不能清干净。
...全文
4126 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly 100% 2014-09-04
  • 打赏
  • 举报
回复
clean 是在makefile里面自己定义的 makefile 并没有提供clean的具体实现方法 在makefile中自己定义清理那些内容
蓝玉 2014-09-04
  • 打赏
  • 举报
回复
我发现很多人的回答没有说到问题点。首先你的问题是,编译多次后,有时需要make clean一次,再make才能成功。 clean一般是makefile中的一个目标,但不是总目标,而且并不是自动调用此实现。我觉得多次编译make后,可能会修改到.config里的一些地方,这些地方会影响到很多.obj文件,也可能会影响到其依赖关系
  • 打赏
  • 举报
回复
引用 9 楼 mymtom 的回复:
[quote=引用 7 楼 registercsdn 的回复:] [quote=引用 6 楼 mymtom 的回复:] 关键在于Makefile的写法 一般来说 make clean会删除.o文件 make 只会重新编译更新过的文件.c或.cpp
我的想法是: 重新编译更新过的文件就已经足够了,他会覆盖掉旧的.o文件。 但现在需要clean一下,再make才能成功。 只make有时候会失败。[/quote] 有可能出现这样的情况,更新了.h文件,影响到的.c文件并没有重新编译[/quote] interesting!even you do explicitly .cpp.o: $(CC) $(CFLAGS) $< -o $@ it won't check .h?
mymtom 2014-08-21
  • 打赏
  • 举报
回复
引用 7 楼 registercsdn 的回复:
[quote=引用 6 楼 mymtom 的回复:] 关键在于Makefile的写法 一般来说 make clean会删除.o文件 make 只会重新编译更新过的文件.c或.cpp
我的想法是: 重新编译更新过的文件就已经足够了,他会覆盖掉旧的.o文件。 但现在需要clean一下,再make才能成功。 只make有时候会失败。[/quote] 有可能出现这样的情况,更新了.h文件,影响到的.c文件并没有重新编译
iasky 2014-08-21
  • 打赏
  • 举报
回复
要看你的makefile如何写了。
registercsdn 2014-08-21
  • 打赏
  • 举报
回复
引用 6 楼 mymtom 的回复:
关键在于Makefile的写法 一般来说 make clean会删除.o文件 make 只会重新编译更新过的文件.c或.cpp
我的想法是: 重新编译更新过的文件就已经足够了,他会覆盖掉旧的.o文件。 但现在需要clean一下,再make才能成功。 只make有时候会失败。
xukai871105 2014-08-20
  • 打赏
  • 举报
回复
我觉得这样解释比较好 makefile 一般有多个目标,其中有一个目标可能为clean 可能输入make之后,先执行了clean目标,然后再执行了相关的编译链接动作 主要还是看makefile的结构,不能一概而论
zhxianbin 2014-08-20
  • 打赏
  • 举报
回复
是不是 Makefile 中依赖关系有问题
registercsdn 2014-08-20
  • 打赏
  • 举报
回复
是的 make已经含有了make clean的功能。 这句话说得不准确。 如果Makefile没问题的话,我make的时候,只需要编译已经修改了的文件,没有修改的没有必要重新编译,对吧? 但是现在的情况是,有时候需要make clean之后再make才能成功,所以我再想是不是”没有修改的也需要编译一下,然后再重新建立他们的dependency“?
zhxianbin 2014-08-20
  • 打赏
  • 举报
回复
make已经含有了make clean的功能。 这句话不对,文件不修改是不会编译的,修改了也不是全部clean 再编译,只是编译修改的文件。可能你的 Makefile 有问题
  • 打赏
  • 举报
回复
check all dependencies for ur target first. Make sure they are all specified.
mymtom 2014-08-20
  • 打赏
  • 举报
回复
关键在于Makefile的写法 一般来说 make clean会删除.o文件 make 只会重新编译更新过的文件.c或.cpp

1,324

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧