简单记录一下makefile的使用

来源:互联网 发布:python可以做什么 编辑:程序博客网 时间:2024/05/21 11:26

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@localhost simplec]# gcc -c file1.c[root@localhost simplec]# gcc -c file2.c[root@localhost simplec]# gcc -o main file1.o file2.o[root@localhost simplec]# ./mainprint file1$$$$$$$$$$$$$$$$$$$$$$$$Print file2**********************[root@localhost simplec]#

用makefile,makefile的内容(注意在第二行gcc的前面是tab空格)
main:file1.o file2.ogcc file1.o file2.o -o mainfile1.o:file1.c file2.hgcc -c file1.c -o file1.ofile2.o:file2.c file2.hgcc -c file2.c -o file2.oclean:rm -rf *.o main
运行
[root@localhost simplec]# makegcc -c file1.c -o file1.ogcc -c file2.c -o file2.ogcc file1.o file2.o -o main[root@localhost simplec]# ./mainprint file1$$$$$$$$$$$$$$$$$$$$$$$$Print file2**********************[root@localhost 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命令.

原创粉丝点击