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


本例由 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开头;若尝试用空格缩进会出现错误!

 实验结果:

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM