linux makefile 编译多个.c文件 实例

时间:2024-03-21 11:20:47

本例由 main.c  add.c sub.c add_sub.h 四个文件组成:编写Makefile执行程序

 

 1 /*************************************************************************
 2     > File Name: main.c
 3     > Author: 
 4     > Mail: 
 5     > Created Time: Tue 25 Jul 2017 10:40:22 AM CST
 6  ************************************************************************/
 7 
 8 #include<stdio.h>
 9 #include"add_sub.h"
10 int main()
11 {
12     printf(" 2 + 3 = %d\n", add(2, 3));  
13     printf(" 2 - 3 = %d\n", sub(2, 3));  
14     return 0; 
15 }

 

 1 /*************************************************************************
 2     > File Name: add.c
 3     > Author: 
 4     > Mail: 
 5     > Created Time: Tue 25 Jul 2017 10:36:26 AM CST
 6  ************************************************************************/
 7 #include "add_sub.h"
 8 
 9 int add(int a, int b)  
10 {  
11     return a + b;  
12 }  
 1 /*************************************************************************
 2     > File Name: sub.c
 3     > Author: 
 4     > Mail: 
 5     > Created Time: Tue 25 Jul 2017 10:37:54 AM CST
 6  ************************************************************************/
 7 
 8 #include "add_sub.h"
 9 
10 int sub(int a, int b)  
11 {  
12     return a - b;  
13 }  
 1 /*************************************************************************
 2     > File Name: add_sub.h
 3     > Author: 
 4     > Mail: 
 5     > Created Time: Tue 25 Jul 2017 10:38:53 AM CST
 6  ************************************************************************/
 7 
 8 #ifndef _ADD_SUB_H
 9 #define _ADD_SUB_H
10 int add(int a, int b);  
11 int sub(int a, int b); 
12 #endif

Makefile的内容:

 我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件中,然后在该目录下直接输入命令“make”,就会在当前目录下找名字叫“Makefile”或“makefile”的文件,可以生成执行文件main。

 

 1 main: add.o sub.o main.o
 2       gcc add.o sub.o main.o -o main  
 3     
 4 add.o: add.c add_sub.h  
 5      gcc -c add.c -o add.o  
 6     
 7 sub.o: sub.c add_sub.h  
 8      gcc -c sub.c -o sub.o 
 9  
10 main.o:main.c add_sub.h
11      gcc -c main.c -o main.o
12 clean:       
13   rm -rf *.o main

 生成方法必须以TAB开头;若尝试用空格缩进会出现错误!

 实验结果:

linux makefile 编译多个.c文件 实例

如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下“make clean”就可以了。

linux makefile 编译多个.c文件 实例