makefile问题总结

编译sdk时,总是出现一些问题,下面对问题总结下

1.missing separator stop

一般是因为命令行没有加tab

比如

all:

rm -rf *.o

2.出现c:/windrier/workbench/hos/x86-win32/bin/mkdir:no such file

通过makefile跟踪分析

-include make.tools

跟踪到make.tools

MKDIR = c:/windrier/workbench/hos/x86-win32/bin/mkdir

了解到是这里的问题

3.target pattern contain no '%'

比如:cygwin下编译sdk出现target pattern contain no '%'

跟踪发现,错误发生在下面

usrConfig.o : $(USRCONFIG)

$(CC) $(OPTION_OBJECT_ONLY) $(CFLAGS) $(USRCONFIG) -o $@

于是我编写一个命令

test:

echo $(USRCONFIG)

make test打印出USRCONFIG是E:/Tornado2.2/target/config/all/usrConfig.c

这样我们知道是cygwin下$(USRCONFIG)的路径出现问题。

修改$(USRCONFIG)为/cygdrive/e/Tornado2.2/target/config/all/usrConfig.c


4.multiple target patterns. stop

转载地址:http://blog.csdn.net/hmsiwtv/article/details/8813151

总的来讲,“mutiple target patterns”这个错误,一般是由于Makefile中target那一行有多余的冒号(:)(我们知道冒号在Makefile中的用来标识前面是一个编译的目标),如果有多余的冒号就会报错。
有一个简单有效的方法去排查这个问题,就是自己另外定义一个目标,将抱错行的信息全部打印出来看看是否有多余的冒号。

我所遇到的错误那一行如下:
roms.inc: $(ROMBIOS_ROM) $(SEABIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM) ../etherboot/eb-roms.h
由于里面依赖到了4个变量,而且其中几个变量并不是在这个Makefile中直接定义的,所以找起来有点麻烦。我就在Makefile中添加了一个target将这个变量打印出来看看那,添加的Makefile代码如下:

View Code BASH
1
2
3
4
 mydebug:
          echo "/* just for debugging in Makefile */"
          echo "$(ROMBIOS_ROM) $(SEABIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM)" > /tmp/debug-makefile.log
          echo "/* END for debugging in Makefile */"

然后将原来出错的那一行注释掉,然后运行”make mydebug”,之后去看一下/tmp/debug-makefile.log文件,我就发现这里的$(SEABIOS_ROM)变量中含有非法的冒号字符,它的值为:git://vt-sync/seabios.git/out/bios.bin
再继续寻找,我就发现,我在一个Config.mk中写有“SEABIOS_DIR ?= git://vt-sync/seabios.git”这样的失误。

比如:cygwin下编译sdk出现multiple target pattens error

跟踪发现,错误发生在下面

usrConfig.o : depend.$(BSP_NAME) $(USRCONFIG)

$(CC) $(OPTION_OBJECT_ONLY) $(CFLAGS) $(USRCONFIG) -o $@

我同上面一样编写一个命令

test:

echo $(USRCONFIG)

make test打印出USRCONFIG是E:/Tornado2.2/target/config/all/usrConfig.c

这样我们知道是cygwin下$(USRCONFIG)的路径出现问题。

修改$(USRCONFIG)为/cygdrive/e/Tornado2.2/target/config/all/usrConfig.c



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值