• Makefile 待完善


    Makefile文件

      在编译程序的时候,通常需要用到多个文件,当工程很大时,编译一个一个程序太过浪费时间。当使用Makefile文件的只需要执行make命令便可以将整个工程一次性编译下来,

    还可以根据自己的需求编译出需要的文件,这些都可以通过编写Makefile文件实现。

    ##########定义变量##############################
    #CC=arm-linux-gcc #可修改成自己需要的编译器,不设置则是默认的编译器 TAG=./BIN/main #定义目标文件的目录 SRC=$(wildcard ./SRC/*.c) #将./SRC目录下的所有.c文件作为SRC变量的列表 OBJ=$(SRC:%.c=%.o) #将./SRC变量列表的.c改成.o
    objs = xx.o xx/xx.o #这里需要注意.o文件的链接顺序,不然会有未定义与重定义的错误出现 override CONFIG += -I./INC #用于添加头文件目录或者是库文件目录,需要添加别的选项可以make CONFIG="-L",CONFIG便会临时加上这一选项
                     #注意override和+号必不可少 ###############################################
    ##变量的引用使用$()
    #目标 依赖 $(TAG):$(SRC) $(CC) $^ -o $@ $(CONFIG) #$^:表示全部依赖文件 $@:表示目标文件

    $(SRC):$(OBJ)
      $(CC) $^ -o $@ -c $(objs) #生成.o文件

    #目标 clean: $(RM) $(OBJ) $(TAG) #强调不要引用任何隐式规则,就是当工作路径有一个文件叫clean时,make clean不会与其发生冲突 .PHONE:clean

    注意:

    1.以上代码是Makefile编译程序的一般代码,Makefile太过庞大,系统学习下来要花不少时间,目前只需要用到什么用什么就可以了;

    2.当执行命令make时,不添加目标则第一个将成为这当个Makefile的最终目标;

    3.如果目标已经存在,则需要比较目标和依赖的时间关系,如果依赖不存,则不需要比较会导致不执行。如果依赖存在则比较目标新则需要更新,反之则不需要更新。

    4.在makefile的眼中,所有的文件都有是一层一层递推的目标-依赖关系,然后通过对比目标和依赖的更新时间来决定下一步动作。当目标无法生成时,会通过依赖层层递推,

    然后层层返回,生成最终的目标。

    目前Makefile学到了这里,在系统移植的时候会大量接触,到时候再添加。

  • 相关阅读:
    部署kube-prometheus,添加邮件报警
    kubernetes1.8开启swagger-ui
    使用alien命令让deb包和rpm包互相转换
    debian开启cgroup memory子系统
    debian9使用systemd部署etcd集群
    装饰器
    mysql根据经纬度求两地距离
    使用rem编写自适应屏幕网页造成div被span撑高的解决办法
    java绘图合并图像AlphaComposite模式测试
    spring data jpa查询部分字段、多余附加字段
  • 原文地址:https://www.cnblogs.com/ding-ding-light/p/14087687.html
Copyright © 2020-2023  润新知