新闻  |   论坛  |   博客  |   在线研讨会
小试牛刀之makefile常见错误及其解决
HXW718059156 | 2010-09-11 09:43:46    阅读:13128   发布文章

小试牛刀之makefile常见错误及其解决
 
      Makefile在大型的基于GNU工具链的软件开发中随处可见,它GNU make工具调用,在软件工程的整个编译过程中发挥着重要的作用,其具体功能包括编译,汇编和链接工具的调用,预编译过程中所用动态编译量的定义,工程文件路径的控制等。可以这样说,懂得makefile的编写和工作原理,能够读懂一个软件工程的全部makefile文件是整体把握此软件工程(project)的关键所在。
      关于makefile的详细功能和原理介绍以及编写规则可以参见我之前在EEPW上的一篇博文——《神秘的Makefile(原创)》网络连接为:http://huxiongwei.spaces.eepw.com.cn/articles/article/item/77313
     这里我就最近在搞基于DE2开发板的NIOS 2 uClinux2.6-19的移植及S3C2440 wince5.0 BSP移植及开发工作中所遇到的一些makefile相关的问题及其相应的解决总结一下,其目的同样是希望与大家共同分享.

              1.   makefile error56 ***遗漏分隔符,停止.
提示:在makefile文件中某一行(这里为56行),少了一个分隔符,故编译停止。
解决:在编写makefile文件时,编写规则规定所有的命令(包括自定义工具名打头的命令),如gcccleanall等,之前必须是tab作为分隔符,不能用空格代之。因为tab通常为4个空格的长度。所以将错误行Backspace到最左边,再加一tab键开始即可了。
这一问题常常发生在修改利用别人已有makefile的时候。

             2.    makefile error***/arch:是一个目录,停止。
提示:makefile文件中某一参数或者路径为一个目录,故make工具不能识别该参数,继而停止工作。
解决:这一问题在makefile的所有错误中最为隐蔽,不易检查,却十分容易犯。在makefile中所有路径的引用或定义行末都不能有空格,应直接以回车符结束。
例如:ROOTDIR = /home/my_nios2/uClinux-dist<space>
这样的一个路径定义在make过程中就会报上面的错误,去掉行末的空格键(<sapce>)改为如下即可。
ROOTDIR = /home/my_nios2/uClinux-dist
 
关于makefile的问题很多,对于我们搞嵌入式的人来说,做嵌入式软件,只要牵涉到操作系统就少不了要和makefile打交道,所有的这些问题在实践工作中都会不期而至,我们要做的不仅是要解决之,更重要的是要多总结它们,积累的多了,问题也就自然少了。呵呵,以上是鄙人拙见,不当之处还望大牛赐教。
 
                                             胡恩伟·重庆
                                        重大A区一舍426          
                                       2010911日星期六         

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
zyz881216  2010-09-13 16:47:06 

学习了

欢迎大家关注我的微信公众号--汽车电子expert成长之路,阅读更多原创性精彩文章。如果你觉得我的文章对你的学习/工作有所帮助,也请你帮忙转发到你的朋友圈,让更多的人能够看到我的文章,大家一起学习,一起进步!
推荐文章
最近访客