linux下makefile的使用简介

发布时间:2020-05-26编辑:脚本学堂
本文介绍下,在linux系统中使用makefile的方法,通过一个简单的实例,一窥makefile的真实面目,有需要的朋友参考下。

本节内容:
linux下makefile

1,c文件代码
file1.c 
 

复制代码 代码示例:
#include <stdio.h> 
#include "file2.h" 
int main() 

       printf("print file1$$$$$$$$$$$$$$$$$$$$$$$$n"); 
       File2Print(); 
       return 0; 

 

file2.c 
 

复制代码 代码示例:
#include "file2.h" 
void File2Print() 

       printf("Print file2**********************n"); 

 

file2.h:   
 

复制代码 代码示例:
#ifndef FILE2_H_ 
#define    FILE2_H_ 
        #ifdef __cplusplus 
              extern "C" { 
       #endif 
       void File2Print(); 
       #ifdef __cplusplus 
              } 
 
       #endif 
#endif

不使用makefile时,可以用gcc命令编译:
 

复制代码 代码示例:
[root@jbxue simplec]# gcc -c file1.c 
[root@jbxue simplec]# gcc -c file2.c 
[root@jbxue simplec]# gcc -o main file1.o file2.o 
[root@jbxue simplec]# ./main 
print file1$$$$$$$$$$$$$$$$$$$$$$$$ 
Print file2********************** 
[root@jbxue simplec]# 

用makefile,makefile的内容(注意在第二行gcc的前面是tab空格)
 

main:file1.o file2.o 
    gcc file1.o file2.o -o main 
file1.o:file1.c file2.h 
    gcc -c file1.c -o file1.o 
file2.o:file2.c file2.h 
    gcc -c file2.c -o file2.o 
clean: 
    rm -rf *.o main
 

运行:
 

复制代码 代码示例:
[root@jbxue simplec]# make 
gcc -c file1.c -o file1.o 
gcc -c file2.c -o file2.o 
gcc file1.o file2.o -o main 
[root@jbxue simplec]# ./main 
print file1$$$$$$$$$$$$$$$$$$$$$$$$ 
Print file2********************** 
[root@jbxue simplec]# 

Makefile的规则简介:
    target ... : prerequisites ...
            command
            ...
            ...
target也就是一个目标文件,可以是Object File,也可以是执行文件。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令,任意的shell命令)
这是一个文件的依赖关系,即target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。
以上面的 main:file1.o file2.o为例,main目标文件依赖于file1.o file2.o,所以要执行生成file1.o的gcc -c file1.c -o file1.o命令和生成file2.o的gcc -c file2.c -o file2.o命令,在生成file1.o file2.o之后,执行gcc -c file1.c -o file1.o命令。