linux下编程工具之make篇

Linux编程工具之make

       在具有很多源代码的程序里,修改了其中的一些源文件,在编译时需要重新编译所有的文件是很浪费时间的,如何能只编译那些修改过的源文件,而不全部重新编译。一种方法是标记修改过的文件,只编译这些文件。但是大程序由很多的文件组成,标记这些文件带来巨大的工作量,而且很难把握他们之间的依赖关系。而make实用程序给我们带来了希望,他很好的解决了标记、依赖、重新编译这一系列的问题。下面让我们开始我们的make之旅。

1、 make的原理:
    在
linux下每个文件被修改后都会留下时间标记,如果源代码被修改的时间比目标文件晚,则需要重新编译文件。而所有依赖于这个目标文件的所有文件都要重新编译。

2、makefile文件:

make必须依靠一组的指令指示他如何编译已改变文件,这组代码保存在makefile文件里面。默认情况下makefile文件在当前编译的文件所在的目录下。除了这个文件外,也可以在make选项中加其他以.make后缀的文件:make –f  prog.mak

3、  相关行:

相关行详细的说明了文件之间的依赖关系。
格式:    目标文件:依赖文件;
linux命令
    或    目标文件:依赖文件
                    [tab]Linux命令
target filedependent fileslinux command
or target file
dependent files
[tab] linux command                              
    4、相关行的运行规则:
    5、蕴涵make的相关性:

       Make的蕴涵相关性集自动的使用于源代码和目标代码

makefile

       bookrecmain.o io.o
            gcc main.o io.o –o bookrec
        main.o
types.h     //库函数的相关性必须另外表明

    执行make,就会自动检查main.oio.o的源代码文件main.cio.c是否被更新。这样可以缩小makefile文件。

      6、使用目标参数具体指定相关行
     bookrecmain.o io.o

              gcc main.o io.o –o bookrec
    main.o
types.h
    print:
    lpr main.o io.o      //make print
就可以指定运行该相关行

    7、更新文件的时间标记:touch -t

       $touch main.c //更新了main.c的时间标记

    8、产生变量:

       Makefile
CFILES= mian.c io.c
OBJECTS= main.o io.o  //
变量的定义

    bookrec: $(CFILES)   //变量的使用
        gcc –o $(CFILES)


    8、make预定义的变量

预定义变量         默认值         说明
CC                 gcc            C
编译器
CFLAGS             -O             C
编译选项
AS                 as             汇编
ASFLAGS   
                     汇编选项
FC                f77            Fortran
编译器
FELAGS                           Fortran
编译器选项
LD                 ld
            加哉连接目标文件
LDFLAGS                       
加载选项
LEX                lex          
词法分析器
LFLAGS
                          词法选项
MAKE              make          make
实用程序
MAKEFLAGS          b
             make选项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值