objects= can.o gps.o sd.o
CC=arm-linux-gcc
edit: $(objects)
$(CC) $(objects) -o edit -lpthread # 这代码前有两个tab
can.o :can.h gps.h sd.h # 这代码前有一个tab
gps.o :gps.h sd.h # 这代码前有一个tab
sd.o :sd.h # 这代码前有一个tab
clean:
rm edit
rm -f *.o
linux 环境下makefile使用以上写法时,make结果出现错误提示:
make: *** [edit] Error 127
但实际上编译结果edit也生成了。
经过仔细查看makefile的代码我才发现原来是依赖文件前面的tab造成的,正确的写法如下:
objects= can.o gps.o sd.o
CC=arm-linux-gcc
edit: $(objects)
$(CC) $(objects) -o edit -lpthread # 这代码前有一个tab,一个就可以
can.o :can.h gps.h sd.h # 这代码前不能加tab,如果想让代码看起来格式整齐,前面可以加空格。
gps.o :gps.h sd.h # 这代码前不能加tab,如果想让代码看起来格式整齐,前面可以加空格。
sd.o :sd.h # 这代码前不能加tab,如果想让代码看起来格式整齐,前面可以加空格。
clean:
rm edit
rm -f *.o
makefile写成这样再次make结果正常。
以上情况虽不是大问题,偶尔纠结起来,也很费时间,特此记录,以备后查。