• Linux开发工具之自动化构建工具-make/Makefile


    1.make/Makefile的介绍

    make是一个命令 makefile是一个文件[makefile也对]

    之前的学习都没有维护项目结构 当有多个.c文件 先编译哪个后编译哪个 自己没管过 make/Makefile: 自动化的构建项目

    编写Makefile的目的:能够自动化的构建项目 可以把我们的源代码编译 自动生成可执行程序
    编写Makefile: 依赖关系(小灰灰是灰太郎的儿子 有父子关系) 依赖方法(小灰灰上大学月底给灰太狼要生活费)

    2.简单编写及使用

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    利用编写好的Makefile 可以通过make/make clean进行生成/删除可执行程序

    在这里插入图片描述

    这是一个Makefile文件,用于编译名为hello的C程序。

    1. 第一行指定了一个目标,即hello。
    2. 第二行是编译命令,gcc hello.c -o hello,它会使用gcc编译hello.c,并将生成的可执行文件命名为hello。
    3. 第三行是一个伪目标,即clean,用于定义清除操作。
    4. 第四行是clean目标下的命令,rm -f hello,它用于删除生成的可执行文件hello。

    可以使用命令make执行该Makefile文件来进行编译和生成可执行文件。如果需要删除可执行文件,可以使用命令make clean

    执行: Makefile自顶向下扫描文本 只会执行第一对目标文件 想要执行特定文件需要在make后+文件名
    .PHONY修饰的目标称为伪目标: 总是被执行的(总是根据依赖关系去执行依赖方法) 理解: 多次执行make hello 会显示: 该文件已为最新文件 而多次执行make clean则没有显示

    3.ACM时间

    在这里插入图片描述

    ACM时间

    Access: 最近一次访问 因为有些文件经常被访问 所以这个时间经常需要被修改 而频繁修改存在于磁盘上的文件需要耗费时间 所以优化后: 当达到一定访问次数才会修改access
    Modify: 最近一次修改文件内容的时间 当文件内容增加/减少引起文件大小变化 – 文件的属性信息也会随之改变
    Change: 最近一次修改文件属性的时间

    4.extern的复习

    extern是什么

    extern是C语言中的一个关键字,用于在源文件中声明一个在另一个源文件中定义的变量或函数。它的作用是告诉编译器在其他地方已经定义了这个变量或函数,避免重复定义。

    1.在一个源文件中声明一个在另一个源文件中定义的全局变量或函数,以便在当前源文件中使用它们。

    2.在一个头文件中声明一个在另一个源文件中定义的全局变量或函数,以便在多个源文件中使用它们。

    例子:

    // file1.c
    int count; // 定义全局变量count
    
    // file2.c
    extern int count; // 声明全局变量count
    
    • 1
    • 2
    • 3
    • 4
    • 5

    file1.c定义了一个全局变量count,file2.c使用extern声明了这个全局变量,以便在file2.c中使用它。

    extern关键字只是一个声明,它并不会分配内存空间。变量的实际定义和内存分配必须在某个源文件中进行。另外,如果一个变量在多个源文件中都使用了extern声明,那么它只能在其中一个源文件中进行定义

    5.多文件的编译

    5.0复习翻译过程

    在这里插入图片描述

    5.1多文件的构成

    在这里插入图片描述

    5.2手动编译

    在这里插入图片描述

    5.3利用Makefile

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【安装笔记-20240529-Windows-Wireshark 网络协议分析工具】
    网络安全——DNS域传送漏洞
    基于Android的O2O点餐系统
    Leetcode226.翻转二叉树
    数据库Communications link failure
    计算机网络——常见问题汇总2
    38、Java 中的正则表达式(单字符匹配和预定义字符)
    (整理未完成)【递推 / 递归】分形
    Google 将对过时 Android 应用展开“大扫除”
    【保姆级】新机器部署Nginx
  • 原文地址:https://blog.csdn.net/LHRan_ran_/article/details/134319621