单层makefile文件管理器

目录

1、gcc的工作原理

        1.1:过程

        1.2:处理过程

2、Makefile规范 

        2.1:表达式

2、Makefile中的变量 (变量一般大写)

         2.1:预定义变量     

        2.2自定义变量

          2.3:自动变量

         2.4:变量定义

3:演示Makefile的创建 

    3.1 Makefile的编写 

       3.2:假目标的解决

      


1、gcc的工作原理

        1.1:过程

                其过程为:预处理、编译、汇编、连接。

        1.2:处理过程

                预处理:gcc  -E .c文件 -o .i文件

                编译:gcc -S .i文件 -o .s文件

                汇编:gcc -c .s文件 -o .o文件

                连接:gcc .o文件 -o 目标文件

                例如:

gcc -E stu.c -o stu.i
gcc -S stu.i -o stu.s
gcc -c stu.s -o stu.o
gcc stu.o -o stu

                还有一种处理方法就是将预处理、编译、汇编结合在一起

                gcc -c .c文件 -o .o文件

                gcc .o   -o  目标文件

gcc -c stu.c -o stu.o
gcc stu.o -o stu

2、Makefile规范 

        2.1:表达式

                目标文件1:依赖文件1

                [tap]依赖文件1是如何产生目标文件1的

                目标文件2:依赖文件2

                [tap]依赖文件2是如何产生目标文件2的

                注意以下几点:

                        1、如果两个文件没有依赖关系则默认执行第一个文件

                        2、Makefile可以有多个文件

                        3、有依赖关系的话执行从下到上

                        4、@可以我们的shell输出语句不输出

yyds:test
    @echo"hello"
test:word
    @echo"word"
word:
    @echo"haha"

2、Makefile中的变量 (变量一般大写)

         2.1:预定义变量     

                CC:c编译器的名称,默认为cc

                CLFGAS:c编译器的选项,无默认值

                RM:删除文件

        2.2自定义变量

                我们公认的一些变量(等同于潜规则,虽然没有明确规定,但是大家都知道)

                OBJ:用于存放可执行文件的名字

                OBJS:用于存放所有的目标文件

          2.3:自动变量

                        $@:表示目标文件

                        $^:所有的依赖文件

                        $<:表示第一个依赖文件

         2.4:变量定义

                变量名:=值

a:=2
b:=uey
c:=jidoa

                 还有一种方式在这里不再讲,感兴趣的同学可以自己下去了解一下,一般都是在用冒号加等号的方式进行定义

3:演示Makefile的创建 

    3.1 Makefile的编写 

         假设在家目录下有三个文件:stu.c  io.c  sd.c三个文件,生成其相对应的.o文件,并生成可执行文件stu

         1、首先创建Makefile文件(makefile中的m大写小写都可以)

vim Makefile

        2、编写Makefile

CC:=gcc
CFLGAS:=-c -Wall
OBJS:=stu.o io.o sd.o
stu:$(OBJS)
    $(CC) $^ -o $@
stu.o:stu.c
    $(CC) $(CFLGAS) $< -o $@
io.o:io.c
    $(CC) $(CFLGAS) $< -o $@
sd.o:sd.c
    $(CC) $(CFLGAS) $< -o $@
.PHONY clean
clean:
    $(RM) *.o

       3.2:假目标的解决

                假目标的产生,就是Makefile中我们的目标文件和该目录下的文件重名了,这时会出现假目标,不会生成我们想要的目标,所以我们要解决它,方法为在目标文件的上一行加

      .PHONY  目标文件  

      注意:PHONY必须是大写

      

                        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习C语言之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值