苏嵌学习的第二天---makefile的使用总结

在第二天的学习中,我们把Linux剩下的命令都学习完了,主要有cp命令,mv命令,rm命令,cat命令,wc命令,chmod命令,ln命令以及一些常用命令。接着开始了Linux下C语言开发环境的学习。主要学习了编辑器Vi,编译器gcc,调试器gdb还有makefile的使用。

在学习中我最感兴趣的就是makefile,因为它体现了人性化以及智能的一面,为程序员节省了很多不必要的程序运行时间,以下是我对makefile的一些总结。

1.一个普通C代码的正常情况下的编译

上图只是一个参考,因为操作还不熟练,下面给出正确代码:

mkdir 4make

cd 4make

mkdir 1make

cd 1make

vim operator.c

gcc operator.c -o 1

./1

operator.c内容:

 

#include <stdio.h>

 

int add(int a,int b)

{

    return a + b;

}

 

int sub(int a,int b)

{

    return a - b;

}

 

int main()

{

    int a = 3;

    int b = 2;

 

    printf("%d %d\n",add(a,b),sub(a,b));

 

    return 0;

}

2.当有多个文件的C代码时的传统编译

add.c内容:

int add(int a,int b)

{

    return a + b;

}

 

sub.c内容:

int sub(int a,int b)

{

    return a - b;

}

 

operator.c内容:

#include <stdio.h>

 

int main()

{

    int a = 3;

    int b = 2;

 

    printf("%d %d\n",add(a,b),sub(a,b));

 

    return 0;

}

这种情况只有三个代码文件,编译时哪怕有四个步骤运行起来也很快,但如果一个大的工程里分给很多不同的人来做,届时会有几十个甚至上百个文件,当其中一个文件发生更新时,程序员又需要把代码敲一遍,而且已更新的文件连带着未经过改变的文件进行着编译的四个步骤,这样就显得很不智能化,因此第三种情况我们就要使用makefile来解决这个问题。

3.当有多个文件的C代码时使用makefile

makefile里的内容:

由于makefile这样写,不能直观的知道当其中有文件更新时,每次make的时候都做了哪些工作,所以下面进行第四种情况。

4.

makefile中的内容:

可以看出当更新过add.c之后,make时只会将与add.c有关的命令再运行一遍,而其他文件无须再进行一次编译,省去了很多时间也变得更智能了。

但其实make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中。

而且makefile中有变量的使用:

OBJECTS = sum.o sub.o operator.o             #定义变量

$(OBJECTS)                                             #使用变量

所以makeflie有最终写法。

5.

Makefile中的内容:

猜你喜欢

转载自blog.csdn.net/lishasha5/article/details/81137209