Makfile使用过程中的记录(一)

问题描述: 学习Makefile的时候,当想使用变量作为路径名的时候,发现该错误。编辑完Makefile文件之后,在终端中输入make,出现如下的错误提示。(系统是ubuntu 16)

解决过程:

当时我就懵逼了,赶紧检查了一遍所有的编译器gcc cc g++,都已经正确安装,并且,在终端中输入相同的指令

cc -c ../main.c -I ../lib

完全可以正常编译。这样看来错误应该不想提示所说是 cc等编译器未安装的缘故。那么问题应该处在makefile中。

makefile内容如下(请勿吐槽文档中的内容):

Object = main.o mylib.o
PATH = ../
lib = ../lib

Main : $(Object)
    cc -o Main $(Object)

main.o : ../main.c
    cc -c ../main.c -I ../lib

mylib.o : $(lib)/mylib.c
    cc -c $(lib)/mylib.c

cleanall = clean cleandiff

.PHONY : $(cleanall)

clean :
    rm *.o

cleandiff :

    rm *.diff

乍一看,我还真没发现问题,所以之后做了若干调试,首先我删除了变量,直接输入路径名,可以正常make,所以问题定位在了变量上;下一步我添加了一个变量lib,发现竟然可以正常make,那么问题就定位在了PATH这个变量上;最神奇的地方出现了,当我重命名这个变量成Path的时候,竟然就可以正常的make了!

所以最后得出的结论是,可能会由于全是大写的变量名导致make的时候报出"make: cc: Command not found"这个错误。具体发生的原因与发生的环境,由于时间问题我没有深入研究,但是还是希望给同样遇到这类问题的同伴一个解决的方向。

PS:之所以写这个博客,主要是我在百度、google、stack overflow上都没有找到正确的解决方法,也不清楚是不是只有我一个人遇到了这个问题,还是贴一下,尊敬一下我1个小时的探索。此外,在stack overflow上我也找到了问题描述一模一样的提问,有一个回答说是在Makefile文档最前面任意插入一行注释或者空白行就能解决这个问题。并且有人更帖说确实有用。本人尝试过,并没有效果,所以希望有大牛能综合我发现的这些信息,探讨一下具体原因是什么。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值