linux 下面make工具的使用

来源:互联网 发布:李健演唱会知乎 编辑:程序博客网 时间:2024/05/16 07:12



在VS下面的工程文件,光使用gcc命令已经很麻烦了,这时候就要用make命令,就像是一个工程一样,在vs下面微软给我们做好了各种方便的用法,但是在linux下面就要靠我们自己写了。

使用make就一定要有个makefile,它描述了软件包中各个文件之间的关系,提供了更新每个文件的命令。在一个软件包里,通常可执行文件由链接文件更新,而链接文件由编译文件产生~当一个makefile文件搞定了以后执行:make,就完成所有必需的重新编译。比如上次说过的:

gcc hello.c f2.c -o test

这个命令就是生成一个叫test的可执行文件,现在如果使用make命令,那么首先创建一个文件,名字叫做makefile,用touch命令

:touch makefile,然后在里面进行编辑~

对这两个文件的makefile写法:


,然后退出在终端执行make指令,就会出现昨天的那张图片,你们可以自己试试~




对每句做个解释:第一句,代表了test是目标文件,其依赖于两个模块,f2.c and hello.c。

生成test的两个c文件任何一个改变了就必须要重新make。经常性地,大家会看到用的是.o的文件,.o是编译后的文件,生成方法请看上一篇日志。在makefile中的写法就是发文件名字换成.o的就行了。

我这里放一张图,关于用编译后的文件进行make的,有兴趣的可以看看

最后生成的都是一个东西。

make的命令格式:

make [选项] [宏] [目标]

选项定义了make如何工作;宏是执行make时使用的宏值;目标是需要更新的目标名

“在unix下, flags包含:

-f   指定makefile文件名

-i   忽略命令执行返回的出错信息,继续向下执行,如果没有的话碰到错误就停了

-s  沉默模式, 在执行前不输出相应的命令行信息

-r  禁止build-in规则

-n 非执行模式, 输出所有执行命令,但不执行。这个常用来检查makefile文件的重要性~

-t  更新目标文件的日期~

-q  make将根据目标文件是否更新返回0或非0

-p  输出所有宏定义和目标文件描述在屏幕上

-d  debug模式,输出有关文件和检测时间的详细信息

-c dir  在读取makefile之前改变到指定的目录dir

-I dir   指定使用的makefile所在的目录

-h   help文档,显示所有的make选项

-w  在处理makefile之前和之后, 都显示工作目录"

解释下刚才的那张图片,在终端输入make以后,make将对makefile中的第一行目标进行维护,在前面的例子中,按照以上默认规则,就应该将test作为目标来维护。再发现目标依赖于其他文件时,又继续在makefile文件中寻找以新的依赖文件尾目标的相关文件,并这样层层进行搜索。

make也可以指定要维护的目标,比如

make hello.o;当然,并不是所有的makefile文件的名字都要叫makefile,你可以自己指定,只要里面按照makefile的格式来写就行了,这时需要指定你要make那个东西,比如有个叫makehello的文件里面写着关于hello.c的文件make方法,这时需要的命令是:

make -f makehello;

make是个很大的东东,今天就写这么多,下篇再写把~~~泪奔捏脸