zoukankan      html  css  js  c++  java
  • [linux]makefile使用

    简介:

    使用makefile记录项目各个文件的依赖关系,make程序会根据依赖关系从底层开始执行编译命令,最后生成最终目标文件。使用makefile可以方便编译多个相互依赖的源文件最终生成目标文件。

    makefile格式:

    makefile以命令为单位组成,2行组成一个命令。第一行冒号前的是本命令的目标生成文件,冒号后面是依赖文件。第二行是生成目标文件需要执行的指令,注意指令前要空TAB

    file:file1.o file2.o                  附属行(文件的依存关系)
        gcc -o file1.o file2.o            命令行
    file1.o:file1.c head.h
        gcc -c file1.c
    file2.o:file2.c head.h
        gcc -c file2.c

    makefile第一个命令是生成最终目标文件,下面的命令依次生成最终生成文件的依赖文件。比如最终目标是生成file,依赖于file1.o file2.o,此时它们还不存在。于是继续往下查找,到第二个命令需要生成file1.o,需要file1.c head.h,此时当前文件夹中包含这两个文件,于是执行gcc -c file1.c命令。最后,file1.o file2.o都生成了,便可生成最终的file。因此,makefile是从下往上回溯的。

    makefile文件必须命名为“makefile”或“Makefile”并存放于项目文件夹中。使用makefile的时候只需在项目文件夹下输入命令make即可。

    一个makefile生成两个可执行文件,并删除中间文件:

    例如,编译server_udp.c和client_udp.c生成两个可执行文件server_udp和client_udp

    all:server_udp client_udp
        #rm *.o
    server_udp:server_udp.c
        gcc  server_udp.c -o server_udp  
    client_udp:client_udp.c
        gcc  client_udp.c -o client_udp  

    all是一个虚拟的总目标,依赖于我们需要生成的两个可执行文件,由于它是虚拟的,并不需要命令操作,因此下行的命令留空即可。由于最终目标的命令是最后执行的,因此也可以用rm *.o来删除所有.o的临时文件。

    makefile功能十分强大,这里只是介绍了最基本最常用的功能而已。

  • 相关阅读:
    overlapped
    overlapped编程
    Oracle DB 使用子查询来解决查询
    OCP-1Z0-051-V9.02-132题
    OCP-1Z0-051-V9.02-131题
    OCP-1Z0-051-V9.02-130题
    OCP-1Z0-051-V9.02-129题
    OCP-1Z0-051-V9.02-128题
    OCP-1Z0-051-V9.02-127题
    OCP-1Z0-051-V9.02-126题
  • 原文地址:https://www.cnblogs.com/iyjhabc/p/3156767.html
Copyright © 2011-2022 走看看