简单记录一下makefile的使用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值