LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 883|回复: 3

学写makefile遇到困难

[复制链接]
发表于 2007-7-31 21:58:36 | 显示全部楼层 |阅读模式
小弟,最近在学写makefile。用automake废了好大劲才弄了一个,结果还不好用。郁闷死了!
我用编写的makefile,make结果出现
make  all-am
make[1]: Entering directory `/xu/xu.qu1'
gcc  -g -O2   -o LED
gcc: 没有输入文件
make[1]: *** [LED] 错误 1
make[1]: Leaving directory `/xu/xu.qu1'
make: *** [all] 错误 2
我觉得是我的gcc不好么,就记得我的开发板上好像有配套的。就将其考到PC机上。并将gcc=/xu/cross/2.95.3/bin/arm-linux-gcc,然后再make。出现:
make  all-am
make[1]: Entering directory `/xu/xu.qu1'
/xu/cross/2.95.3/bin/arm-linux-gcc  -g -O2   -o LED
arm-linux-gcc: No input files
make[1]: *** [LED] 错误 1
make[1]: Leaving directory `/xu/xu.qu1'
make: *** [all] 错误 2

为什么会这样呢,希望各位大侠有空的话能指点一二 。非常感谢。
发表于 2007-7-31 23:24:27 | 显示全部楼层
不清楚你makefile.am怎么写的,生成的语法的确不对。gcc -g -O2 -o LED,指明了生成debug版、速度优化和目标文件LED却偏偏没有源文件,当然会报这个错儿。是不是你没写bin_PROGRAM?俺也是初学,共同学习。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 08:46:47 | 显示全部楼层

谢谢你

感谢师兄,百忙之中为我指点迷津。本人学习遇到问题感到步履维艰,感谢帮助。我将源文件放在了3个文件夹里,所以我的.am是这么写的:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=LED
LED_SOURCES=shouji/*.h  shouji2/*.h  shouji3/*.h  因为文件比较多 所以我用*想省点事,难道这样不可以么。
另外,师兄提到:
指明了生成debug版、速度优化和目标文件LED却偏偏没有源文件。
为什么是这样 ,有关于这方面的资料我可以查阅么。
再次感谢师兄的帮助,谢谢。
回复 支持 反对

使用道具 举报

发表于 2007-8-1 12:43:02 | 显示全部楼层
我提到的几个意思,都是由你的gcc参数决定的,所以你可以查一下gcc的参数的意思,下次就可以自己判断了.gcc --help一下就可以,想详细了解的话man gcc或info gcc,或者在网上查一下gcc参数详解之类的。
你的makefile.am写的确实是有些问题……可不可以用*,这个我之前也不知道,因为我没见过用的。上网查了一下,的确是不支持的,见这里。其次,在假设其支持通配符的情况下,源文件SOURCES里也只是给出了几个h,头文件,而没有任何源文件。再次,其实直接引用下级目录中的源文件不是太好,有些版本的automake不支持这么作,可以用subdirs执行下级目录,然后在下级目录中分别撰写makefile.am。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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