• Linux工程管理器——make


    一、定义

      工程管理器,顾名思义,是指管理较多的文件 
    Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作 。

    二、使用命令简介

     makefile是make读入的惟一配置文件,因此本节的内容实际就是讲述makefile的编写规则。在一个makefile中通常包含如下内容:
        a.需要由make工具创建的目标体(target),                 通常是目标文件或可执行文件;
        b.要创建的目标体所依赖的文件;
    创建每个目标体时需要运行的命令(command),这一行必须以制表符(tab键)开头

    格式如下:

    target:denpendcy_files
    
          command  /*  该行必须以Tab键开头  */
    

      如:

    hello.o: hello.c hello.h
    
         gcc -c hello.c -o hello.o
    

      

    接着在终端执行make hello.o命令,make将自动执行gcc -c hello.c -o hello.o,生成hello.o文件

    3.makefile变量

    (1)在makefile中的变量定义有两种方式:一种是递归展开方式,另一种是简单方式

           1)递归展开方式:VAR=var

           递归展开方式定义的变量是在引用该变量时进行替换的,即如果该变量包含对其他变量的引用,则在引用该变量时一次性将内嵌的变量全部展开。但是它也有严重的缺点,如不能在变量后追加内容(因为语句:CFLAGS=$(CFLAGS)-O在变量扩展过程中可能导致无穷循环)。

    例如:

    OBJS = kang.o yul.o
    
    CC = gcc
    
    CFLAGS =  -Wall  -O  -g
    
    david : $(OBJS)
    
           $(CC)  $(OBJS)  -o david
    
    kang.o : kang.c kang.h
    
           $(CC)  $(CFLAGS)  -c  kang.c  -o  kang.o
    
    yul.o : yul.c yul.h
    
           $(CC)  $(CFLAGS)  -c  yul.c  -o  yul

    2)简单扩展方式:VAR:=var

           简单扩展方式变量的值在定义处展开,并且只展开一次,因此它不包含对其他变量的引用,从而消除变量的嵌套引用。

    (2)makefile中的变量分为用户自定义、预定义变量、自动变量和环境变量

           1)预定义变量包含了常见编译器、汇编器的名称及其编译选项

     2)自动变量

  • 相关阅读:
    【待补充】Spark 集群模式 && Spark Job 部署模式
    Spark 集群管理命令
    Spark job 部署模式
    [Spark Core] Spark 核心组件
    [Spark RDD_1] RDD 基本概念
    【读书笔记】《天才在左 疯子在右》
    [Spark Core] Spark 使用第三方 Jar 包的方式
    [Spark Core] 在 Spark 集群上运行程序
    【待补充】[Spark Core] Spark 实现标签生成
    Spark 集群搭建
  • 原文地址:https://www.cnblogs.com/tansuoxinweilai/p/11630391.html
Copyright © 2020-2023  润新知