在Linux系统中,makefile文件的编写可以减少多文件运行时弥补命令行需要经常修改的问题,下面是一个简单的makefile文件的编写:
makefile:
a)、多文件组成的项目工程的管理工具
b)、可以通过检查文件的时间戳记来跳过最近未被修改的文件,减少重新的编译数量
文件的时间戳记:
a、atime:最后一次访问时间
b、mtime:最后一次修改属性的时间
c、ctime:最后一次修改内容的时间——makefile主要关注内容的更新
执行过程——递归方式
a、读入所有的makefile文件(make工具默认读入的makefile文件。如果名称不同则命令为:make -f 工程文件名)
b、读入iclude指令中包含的其他makefile文件
c、初始化文件的变量
d、推导隐含规则,并且最终创建可生成所有目标文案的依赖关系链
e、根据关系链生成文件
f、执行相应的生成命令
1、首先,我们先建立一个目录,然后在目录下建立以下文件:main.c isprimer.h isprimer.c makefile
pwd
cd /home/user
mkdir toMakefile
cd toMakefile
gedit main.c/isprimer.h/isprimer.c
2、三个简单的源文件和头文件的编写:
//isprimer.h
#include <stdio.h>
int isprimer(int x);
//isprimer.c
#include "isprimer.h"
int isprimer(int x){
int i = 0;
for(i = 2; i < x; i++){
if(x % i == 0){
return 0;
}
}
return 1;
}
//main.c
#include "isprimer.h"
int main(){
int x = 3;
int a ;
a = isprimer(x);
if(a){
printf("%d is primer.\n",x);
}
else {
printf("%d is not primer.\n",x);
}
return 0;
}
3、makefile文件的编写,将main.c isprimer.c通过汇编转换为目标文件,再将两个目标文件转为可执行文件main
main:isprimer.o main.o
gcc isprimer.o main.o -o main
isprimer.o:isprimer.c
gcc -c isprimer.c -o isprimer.o
main.o:main.c
gcc -c main.c -o main.o
clean:
rm -f *.o
#改进版本
CC = gcc
objects = main.o isprimer.o add.o
CGLAGS = -WALL -O -g
main:$(objects)
$(CC) $(objects) -o main
%.o:%.c add.h isprimer.h
#gcc main.c
$(CC) $(CGLAGS) -c $< -o $@
%.o:%.c add.h
#gcc add.c -c
$(CC) $(CGLAGS) -c $< -o $@
%.o:%.c isprimer.h
#gcc isprimer.c -c
$(CC) $(CGLAGS) -c $< -o $@
clean:
rm -f *.o
---------------------
作者:LOONGSE
来源:CSDN
原文:https://blog.csdn.net/qq_41629142/article/details/82950982
版权声明:本文为博主原创文章,转载请附上博文链接!
网友评论