谷动谷力

 找回密码
 立即注册
查看: 3271|回复: 5
打印 上一主题 下一主题
收起左侧

C语言基础教程-- 编译智能化之Makefile应用

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-7 23:51:27 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sunsili 于 2024-4-3 18:01 编辑

C语言基础教程-- 编译智能化之Makefile应用




引言

我们写好的代码需要编译,是不是每次都要输入
  1. gcc -o hello.exe hello.c
复制代码

一切为了偷懒

古人云:”勤劳能致富“。
余昧,思之:”不然,古时农民多是勤劳之人,然之非富也。余以为懒为社会发展之源也。“

现在文件少,还好写,文件多了,这个样写,写完成这个语句都要天亮了,那我们怎么办呢?聪明的前人,就发明了Makefile, 写代码按一定规则编译,输入
  1. make
复制代码
即可

我们试着新建文文档,输入
  1. gcc -o hello.exe hello.c
复制代码
保存为Makefile,注意没有后缀

打开命令提示符,到源码目录,输入
  1. make
复制代码
再输入 
  1. hello.exe
复制代码
和我们要得到结果是一样的。

再更改一下Makefile
  1. tag = hello.exe
  2. obj = hello.o
  3. src += hello.c
  4. cc = gcc

  5. all: $(obj)
  6.            $(cc) -o $(tag) $(obj)
  7. run: $(tag)
  8.            $(tag)
  9. %.o: %.c
  10.            $(cc) -c $(CFLAGS) [        DISCUZ_CODE_198        ]lt; -o $@

  11. clean:
  12.            rm -f *.o
复制代码
注释:
  目标:依赖
<Tab键> (编译命令或Linux命令)

  1. obj = hello.o
  2. hello:$(obj)  //引用变量$(变量名)
  3.     gcc -o hello $(obj)
  4. %.o : %.c       //通配符 所有*.o 依赖于 *.c  *.c编译得到*.0
  5.     gcc -c [        DISCUZ_CODE_55        ]lt;  //表示第一个依赖
  6.     gcc -c $@  //所有目标
  7.     gcc -c $^  //所有依赖
复制代码

伪目标:依赖
  1. clean:  //清理中间文件
  2.     rm hello.o
复制代码

现在不理解,没关系,照做就好了。
以后再理解

输入
  1. make
复制代码
编译 

输入 
  1. make run
复制代码
还可以运行


******原创文章,转载请说明出处******
+10

本帖被以下淘专辑推荐:

回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-5-6 22:54 , Processed in 0.194514 second(s), 39 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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