Linux:MakeFile文件

2018-10-28  本文已影响0人  LOONGSE

在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

版权声明:本文为博主原创文章,转载请附上博文链接!

上一篇下一篇

猜你喜欢

热点阅读