9.makefile的学习

    make工程管理器也就是一个“自动编译管理器”,在这里的“自动”是指它能够根据文件的时间戳自动发现更新过的文件从而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作

  1.Makefile的基本结构

   target:dependcy_files

              commend

  解释:target:需要由make工具创建的目标体,可以是目标文件或者是可执行文件

           dependcy_files:目标体(target)

           commend:创建目标体时所要运行的命令(每行命令必须以Tab键开头,否则报错!!!

   2.1常规编写方法

   编写显示函数display.c,如下:


#include <stdio.h>
void display(const char *str)
{
printf("The str is %s",str);
}

编写display_num1()函数


#include<stdio.h>

void display(const char *str);

 void display_num1()
{
display("The number is 1!\n");
}

编写display_num2()函数


#include<stdio.h>

void display(const char *str) ;
void display_num2()
{
display("The number is 2!\n");
}

编写main()函数


#include <stdio.h>
void display(const char *str);
void display_num1();
void display_num2();
int main()
{
display("Hello Linux\n");
display_num1();
display_num2();
return 0;
}
2.2利用命令实现结果输出

 输入命令:
gcc -c main.c display.c display_num1.c display_num2.c

输入命令

gcc -o example main.o display.o display_num1.o display_num2.o

输入命令:

./example

结果如下;



2.3利用makefile实现

  再上面的介绍中实现了结果的输出,但是当修改程序时,就还须重新输入以上的三个命令,这就显得操作比较冗余,用makefile来实现就不存在这个问题。

  用vim编写Makefile(直接在终端输入:vim Makefile)

main:main.o display.o display_num1.o display_num2.o
        gcc -o example main.o display.o display_num1.o display_num2.o
.PHONY : clean
clean:
        rm main.o display.o display_num1.o display_num2.o

如图:


每次更新完函数之后,直接执行make命令即可完成更新。


执行make clean可以把目标文件(.o)移除,节省空间,执行./example即可得到运行结果,如上图所示。

2.3.makefile的简写

仔细看上述的makefile,可以看到(.o)文件要重复写三次,给编写带来很多不便,也容易出错,这时可以引用变量的模式,如下

OBJ=main.o display.o display_num1.o display_num2.o
cc= gcc -o
main:$(OBJ)
        $(cc) example $(OBJ)
.PHONY : clean
clean:
        rm $(OBJ)

如果增加了(.c)文件只需在OBJ里增加即可。


运行结果与上述是一致的。
















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值