***没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案

来源:互联网 发布:程序员玩的游戏 编辑:程序博客网 时间:2024/05/29 18:01
每个诡异错误的背后。都隐藏着一个低级错误。真理重新得到验证。正如只所以会有这篇博文也是如此,拿别人的一个uboot源码直接过来编译,操作如下:
顶层Makefile已经生成完毕
#make clean
#make mini2440_config
#make
出现错误如下:
***没有规则可以创建鈥淴XX鈥澬枰哪勘赈淴XX鈥澪侍獾慕饩龇桨

给我的第一感觉分析,我该清的都清了,前面不是已经做了makeclean操作了么?现在是不是Makefile出现了问题,我该源码具备的编译环境,我的源码需要放在特定的路径下编译,种种答案一一尝试,而该问题给我的回应是无止无休的***没有规则可以创建***类似的错误。所有的方法用尽,最后来了个大扫除,make distclean,再makemini2440_config,make,编译竟然一次性通过,没有任何问题。截图如下:
***没有规则可以创建鈥淴XX鈥澬枰哪勘赈淴XX鈥澪侍獾慕饩龇桨

对于问题不能知其然而不知其所以然,毛主席教导我们要有实事求是的作风,本人也一直秉着必须要知其然也知其所以然的态度,下面让我们来探究一下,为什么makedistclean可以解决这个问题。

首先我们不得不提到:makeclean 和make distclean的区别:
make clean仅仅是清除之前编译的可执行文件及配置文件。
而make distclean要清除所有生成的文件
makedistclean类似makeclean,但同时也将configure生成的文件全部删除掉,包括Makefile。

我们本着拿来主义的精神,但是拿来主意也让我们的人生道路中荆棘丛丛,从上面的解析可以看出,上面的问题的根源是因为,经过拿来主义的代码里面已经有配置文件,是根据原来的编译环境生成的,仅仅通过makeclean并不能清楚之前的配置文件,没有清除之前的配置文件就进行编译,编译器本着相信程序员的态度,编译时不会产生新的configure生成的附带文件,而是根据原来的configure生成的文件进行编译,这样就会导致上面的一系列编译错误。makedistclean可以将所有的垃圾,之前环境所有的余孽清理干净,这样就不会给编译器偷懒的机会。那么一个馒头引发的血案就解析完毕。

 转自:http://blog.sina.com.cn/s/blog_4b003c5501014mai.html
原创粉丝点击