嵌入式-C语言-9-Makefile/结构体/联合体

一、Makefile

1.1.问:如果项目产品代码有1万源文件.c,编译极其的繁琐

             gcc -o main main.c a.c b.c .... 一个万.c

             这么简化程序的编译呢?

      答:必须只能利用Makefile来实现

1.2.Makefile功能:能够制定编译规则,将来让gcc编译器根据这个规则来编译程序,Makefile本质就是一个文本文件,此文件给make命令使用,将来make命令会根据Makefile里面的编译规则让gcc编译程序。

1.3.Makefile语法格式:

      目标:依赖1  依赖2 依赖3 ....依赖N

      (TAB键)编译命令1

      (TAB键)编译命令2

      ...

      (TAB键)编译命令N

      (TAB键) 还可以是其他命令:ls/cp/cd等

      注意:Makefile注释用#

      例如:目标是把helloworld.c编译生成helloworld

      vim Makfile 添加

      #指定规则:一步到位

      helloworld:helloworld.c

gcc -o helloworld helloworld.c 

      #或者

      #指定规则1:分步

      helloworld:helloworld.o

gcc -o helloworld helloworld.o

      #指定规则2:

      helloworld.o:helloworld.c

gcc -c -o helloworld.o helloword.c

      案例:利用Makefile编译helloworld.c文件

      vim helloworld.c

      vim Makefile

      make   //编译程序

      ./helloworld

      make //编译提示helloworld是最新的

     vim helloworld.c //修改源文件

     ls -lh //查看helloworld.c和helloworld的时间戳

     make //又重新编译

先检查有没有helloworld文件,如果有,就检查helloworld.c文件的时间戳是不是比他新,如果helloworld.c文件比helloworld文件新,就重新编译,反之不更新,如果没有helloworld文件,就按编译规则来。

1.4.Makefile工作原理

当执行make命令时,make命令首先在当前目录下找Makefile,一旦找到Makfile文件,打开此文件并且找到所有的编译规则,通过这些编译规则确定了最终的目标是helloworld和源文件helloworld.c,然后make命令首先在当前目录下找是否存在目标文件helloworld,如果helloworld存在,然后检查helloworld和helloworld.c的时间戳哪个更新,如果helloworld的时间戳比helloworld.c新,说明源文件没有改过,无需编译,提示文件最新,如果helloworld的时间戳比helloworld.c要旧,说明helloworld.c修改过,根据编译规则的命令重新编译,如果一开始没有找到helloworld

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值