本节内容:
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命令。