ubuntu系统下使用Makefile编译多文件

认识Makefile
什么是Makefile

Make:是一个解决大工程编译的工具
Makefile:就像是脚本文件一样,里面描述着哪些文件需要编译,哪些需要重新编译,它里面还可以执行系统命令。
使用时只需要一个make命令即可完成整个工程的自动编译。
它其实就是和我们平时用的IDE里面的编译功能是一样的,只不过这些IDE对其进行了封装,让我们看到的就是图形界面了,我们在 IDE中添加要编译的工程文件,然后点击按钮就完成了编译。

下面通过例子来进一步认识Makefile
假设我们完成设计一个以下工程,
①通过键盘输入两个整数,然后计算他们的和并将结果显示在屏幕上,
②在这个工程中我们有 main.c、input.c和 add.c这三个 C 文件和input.h、add.h这两个头文件。
③其中 main.c是主函数, nput.c 负责接收从键盘输入的数值, add.h进行任意两个数相加,

代码:
main.c

#include <stdio.h>                                         
#include <input.h>
#include <add.h>
 
int main (int argc, char *argv[])
  {
     int a,b,num;
 
     input_init(&a, &b);
     num = add(a, b);
 
     printf("%d + %d = %d\n",a,b,num);

}

input.c

#include <stdio.h>                                         
#include <input.h>

void input_init(int *a, int *b)
 {
     printf("输入两个整数:");
    scanf("%d, %d",a,b);
   printf("\r\n");
}

add.c

 #include <stdio.h> 
 #include <add.h>
 int add(int a, int b)
 {
 return (a+b);
} 

input.h

#ifndef _INPUT_H_
#define _INPUT_H_
void input_init(int *a, int *b);
#endif 

add.h

#ifndef _ADD_H_ 
#define _ADD_H_
int add(int a, int b);
#endif 

 

下面我们先用常规的方法编译文件–>gcc编译器将上面的main.c、 add.c 和 input.c进行多文件编译,如下
最后编译生成的可执行文件叫做main。执行./main,输入两个字查看结果。

 

 

 

下面再用编写Makefile来编译以上文件
1、 首先在此工程目录下创建一个名为Makefile的文件!一定要是这个文件名!!
Makefile如下:【换行位置不是空格,一定要是TAB

 

main: main.o input.o add.o                                 
	gcc -o main main.o add.o input.o
main.o: main.c
	gcc -c main.c
input.o: input.c
	gcc -c input.c
add.o: add.c
	gcc -c add.c

clean:
	rm *.o
	rm main

 

  

 

————————————————
版权声明:本文为CSDN博主「Jiasheng Zhong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43401028/article/details/106558536

 

posted @ 2023-02-11 17:39  流水江湖  阅读(318)  评论(0编辑  收藏  举报