美文网首页
Linux:MakeFile文件

Linux:MakeFile文件

作者: LOONGSE | 来源:发表于2018-10-28 16:23 被阅读0次

    在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

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

    相关文章

      网友评论

          本文标题:Linux:MakeFile文件

          本文链接:https://www.haomeiwen.com/subject/swtmtqtx.html