linux Makefile时间戳

好记性不如烂笔头——记录项目过程中的编译错误及解决方法(持续记录中) 记录做项目的时候编译问题,好记性不如烂笔头,下次碰到相同的问题也可以方便查阅 阅读详情

1、linux时间戳的实际意义

      时间戳的概念可以从日常信封的邮戳概念上理解。邮戳的收到信件的时间,而时间戳就是文件的修改时间。

      假设当前目录下有framwords文件或文件夹,如执行stat frameworks,即可看到当前目录下framworks文件的时间戳,其中包括存取时间(Access)、修改时间(Modify)、文件节点修改时间(Change):

File: `frameworks/'
  Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: 807h/2055d    Inode: 287018      Links: 5
Access: (0755/drwxr-xr-x)  Uid: (  500/     san)   Gid: (  500/     san)
Access: 2009-10-25 17:00:33.000000000 +0800
Modify: 2009-10-25 06:44:00.000000000 +0800
Change: 2009-10-25 06:44:00.000000000 +0800

2、时间戳再分布式并行运算中的重要性

      网络文件系统(NFS ) 是一个依赖时间的网络应用,它完全依赖各个工作站给服务器上的文件提供时间戳。当一个文件被创建或者被修改了,终端工作站的时钟被作为时间戳加在文件上。 因此,如果客户端的时钟不同于服务器的时钟,则文件的时间戳将有不同。很多应用,从磁盘备份到生成程序都使用时间戳来确定哪个文件是最新的。在这种情况 下,错误的时间戳意味着重大的文件损失,也就是工时和机时的损失。

  计算机程序员经常需要“make” 程序来编译代码生成软件应用程序,“make” 程序完全依赖各个文件的时间戳来确定哪个文件最近被修改了,随后决定哪个文件需要重新生成。如果“make” 程序在一个分布式文件系统中应用,比如NFS ,一台终端标记的时间戳和其它终端标记的会有不同,除非时钟是同步的。如果两台终端的时间不一致,这时运行“make” 就会发生严重的错误。对于有些“make” 程序,允许的时间偏差可以大一些,但是从典型意义上来说,与单独一次编译差不多,这段时间对于今天的计算机来说只不过是几秒钟而已。

   很多情况下,有很多终端和一台生成程序的主机。一个工程组可能保留一台最快的计算机来生成所有的程序,或者可能是来自几台不同机器的同一个项目的很多程 序员。客户端使用自己的计算机编辑文件,而另外一台计算机编译这些文件。如果两台计算机的时间不同,导致的问题可能是好的话简单的浪费了一台计算机资源, 或者严重的话就是不能包含一些最新生成的代码。

 

3、获取某个文件的时间戳

stat [File] | grep -i Modify | awk -F. '{print $1}' | awk '{print $2$3}'| awk -F- '{print $1$2$3}' | awk -F: '{print $1$2$3}'

 

4、遍历修改文件的时间戳

find ./* -exec touch {} /;

 

5、实例

test.c

#include <stdio.h>

int main()
{
 printf("Hello,it's me!/n");
 return 0;
}

Makefile

test:test.o
    gcc -o test test.o
%.o:%.c
    gcc -c test.c
clean:
    rm -rf *.o test

 

(1)、编译后产生test.o及其test文件,进行如下测试说明make时间戳的问题:

touch test.c

touch test.o

touch test

依次执行上述指令,则不会再次执行make。

(2)、如果单独 执行:

touch test.o

则会gcc -o test test.o

(3)、如果是将test文件删除,再建立一个test文件,然后再执行make是不会去重新编译的。


以上(1)、(2)、(3)点说明了linux Makefile的时间戳问题,即:只要目标文件比依赖文件(源文件)新,那么就不会重新编译。

30. 用GPT-4自动生成测试用例的完整流程 利用GPT - 4生成测试用例面临的主要问题包括:如何准确地将软件需求转化为GPT - 4能够理解的输入提示,以确保生成的测试用例覆盖所有关键功能;如何评估生成的测试用例的有效性和充分性;如何处理生成的测试用例中的错误或不合理之处;以及如何将生成的测试用例集成到现有的测试框架中。 阅读详情

相关推荐

EG800K 4G模块AT指令避坑指南:让你的STM32物联网项目稳定连接云端

本文详细解析了EG800K 4G模块在STM32物联网项目中的AT指令应用避坑指南,涵盖从底层协议到云端稳定的全链路优化策略。通过实战案例和防护机制,帮助开发者解决常见通信陷阱,提升云端通信的稳定性和效率。

weixin_26834815的博客 288

Makefile:104: recipe for target ‘product_timestamp‘ failed

报错修复

perrylam999的博客 2781

大疆控制算法笔试复习指南:从PID到MPC核心考点解析

控制算法是无人机、机器人等智能装备实现自主运行的核心技术。从经典控制到现代控制,PID控制算法、LQR控制算法、预测控制算法(MPC)以及Stanley控制算法等,构成了工程实践中不可或缺的方法体系。理解其数学原理、适用条件与调参逻辑,是评估系统稳定性、动态响应与抗扰能力的基础。在无人机飞控、云台增稳、车载路径跟踪等典型场景中,这些算法直接决定了设备的实际性能表现。大疆等企业相关岗位的笔试,正是围绕上述核心知识点,考查候选人对控制系统本质的理解、数学推导能力以及工程实现素养。本文整理了一套覆盖理论基石、高频

weixin_33178839的博客 353

简易VCS使用【2】

使用VCS简易流程: 举例,mux的verilog实现: 1、mux.v文件 module mux(a, b, c, d, en, sel, z); input [3:0] a, b, c, d; input en; input [1:0] sel; output [3:0] z; reg [3:0] z; always @(en or sel or...

huayangshiboqi的博客 9487

PX4自定义uORB消息与MAVLink消息映射实战:从飞控到QGC地面站完整流程解析

本文详细解析PX4飞控中自定义uORB消息与MAVLink消息映射的完整流程,涵盖从飞控内部消息定义、MAVLink消息创建到QGC地面站接收显示的全链路实践。重点介绍如何使用mavlink inspector工具进行调试,解决版本兼容性和多实例消息处理等常见问题,为无人机开发者提供可靠的实时数据监控方案。

ll5678的博客 1067

避开这些坑!医疗影像数据增强的6个安全操作指南(附PyTorch代码)

本文详细介绍了医疗影像数据增强的六大安全准则,包括解剖结构守恒、密度值物理意义保留和病灶特征保护等关键原则,并提供了PyTorch实战代码。通过具体案例和参数建议,帮助开发者在肺结节检测和MRI分割等医疗AI应用中实现安全有效的数据增强,避免因不当操作导致的诊断误差。

cola5的博客 553

Ubuntu虚拟机中VCS安装和启动过程中遇到的问题总结

上篇文件写完后,很多人留言说VCS启动有些问题在文中没有解决,这里总结汇总了下从VCS安装好以后,临时license授权到使用VCS成功运行并用verdi dump波形这个过程中可能会遇到的一些问题及解决方法。关于VCS安装可以参考我之前写的文章。安装gcc 4.8即可,这里安装直接从官方下载安装即可,不建议使用安装包的方式完成,如果虚拟机不能联网,再尝试安装包的方式解决问题。

heyuming20062007的博客 8180

TCP/IP协议栈之LwIP(三)---网际寻址与路由(IPv4 + ARP + IPv6)

一、网际寻址原理 当网络设备地址总数并不是很多的情况下,有了唯一地址(比如MAC地址)就可以定位相互通信的主体。然而,当地址总数越来越多时,如何高效地从中找出通信的目标地址将成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。MAC地址虽然具有唯一性,但没有层次性,也即当网络设备增加到一定程度,需要将网络分成多个数据链路时,MAC地址无法跨链路寻址,是真正负责最终通信的地址。要实现跨局域网的网际寻址,就要靠具有层次性的网络IP地址实现了。

流云 6818

Makefile 学习笔记

一般在工程中,有不计其数的源文件,这些文件按类型、功能、模块分别放置在若干目录中,而这些源文件在使用前一般需要进行编译,如果一个个单独进行编译,将需要进行大量重复性操作,对此Makefile提供了解决办法,通过定义一系列规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更为复杂的功能操作。对此,本文针对Makefile的使用规则进行讲解,介绍。

wdn12138的博客 335

自定义串口通讯协议

自定义串口通讯协议的实现方法

qq_44826038的博客 2172

【系统分析师】第2章-基础知识:数学与工程基础(核心总结)

数学与工程基础

数据知道的博客 6812

linux获取软件的编译时间长,linux Makefile时间戳

1、linux时间戳的实际意义时间戳的概念可以从日常信封的邮戳概念上理解。邮戳的收到信件的时间,而时间戳就是文件的修改时间。假设当前目录下有framwords文件或文件夹,如执行stat frameworks,即可看到当前目录下framworks文件的时间戳,其中包括存取时间(Access)、修改时间(Modify)、文件节点修改时间(Change):File: `frameworks/'Size...

weixin_36058835的博客 719

ABAP CDS View 从入门到精通教程第一篇:ABAP CDS View 在 SAP 技术体系中的重要地位

摘要:本文介绍了SAP开发技术专家提供的多套SAP开发教程,涵盖ABAP、UI5、Fiori、OData、BTP等技术领域。重点阐述了ABAP CDS View在SAP S/4HANA中的核心地位,作为虚拟数据模型(VDM)的关键技术,它实现了OLTP和OLAP的统一处理。文章还说明了学习CDS View的前置条件,包括需要SAP NetWeaver 7.50 SP01或更高版本系统,以及使用SAP ABAP Development Tool进行开发实践。作者具有16年SAP开发经验,这些教程形成了完整的S

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 895

Linux项目自动化构建工具-make/Makefile

虽然它在某些情况下有用,但每次文件被访问时,操作系统都需要更新atime,这会导致额外的磁盘I/O开销,降低系统性能,尤其是在高并发的文件访问场景下,会增加磁盘I/O压力,影响文件访问效率。因为我们修改文件的同实,我是在code.c文件中加入了一行printf代码,这样文件的size(大小)就发生了变化,所以在我们修改文件内容的时候,文件内容和文件属性被同时修改了,导致了Modify和Change的时间戳发生了变化,其实Modify的时间戳也是文件的属性,所以通过文件内容的修改,他们两者是同时变化的。

Small_entreprene的博客 1424

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

linux 运行不了make,时间戳linux Makefile  重大意义(为什么make会一直持续不执行?)...

1、linux时间戳的实际意义时间戳的概念可以从日常信封的邮戳概念上理解。邮戳的收到信件的时间,而时间戳就是文件的修改时间。假设当前目录下有framwords文件或文件夹,如执行statframeworks,即可看到当前目录下framworks文件的时间戳,其中包括存取时间(Access)、修改时间(Modify)、文件节点修改时间(Change):File: `frameworks/'Size:...

weixin_42299494的博客 464

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Makefile

在 Makefile 中,你可以定义变量以简化管理和修改。

yyl0327的博客 905

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Linux课程学习】make/Makefile:Linux项目自动化构建工具

🍉一.make/Makefile的理解: 🍉二.makefile文件的构成: 🍉三 .更加规范便捷的用法写: 🍉四.对于伪文件和时间戳的理解: 🍉小测试:

路虽远,行则将至!事虽难,做则必成! 7811

深入理解 Linux 文件时间戳:atime、mtime 和 ctime 的概念及应用

时间戳是 Linux 文件系统中不可或缺的一部分,通过 atime、mtime 和 ctime,可以记录文件的访问、内容修改和元数据变化。这些信息在文件编译、备份同步、性能优化和系统审计等领域都具有重要价值。

kevin_blog 3666

Linux C开发|彻底搞懂Makefile底层原理(从时间戳、伪目标到模式规则)

很多初学者只会复制粘贴 Makefile 模板,却不明白make如何判断要不要重新编译、.PHONY为什么必不可少、增量编译的底层逻辑。本文结合 Linux 文件时间戳、实操命令,把 Make 最核心机制讲透。❌ Makefile 命令行前面必须是Tab 制表符,4 个空格会直接报错❌ 清理目标clean不加,存在同名文件时失效❌ 误以为 make 读取 atime/ctime;只识别 mtime❌ 大项目手动写所有.o规则,代码冗余,优先使用模式规则。

dajuc的博客 552

linux makefile如何执行shell命令,从makefile执行复杂的shell命令

我有以下命令行在Linux命令提示符下工作:vi /tmp/test.txt -s 它创建一个包含以下vim命令的临时文件(使用Process Substitution)::1 s/^\/\/ VERSION: .*$/\/\/ VERSION: $(date)/g它打开文件/tmp/test.txt进行编辑,并从先前创建的临时文件中执行命令.它找到第1行并用当前时间戳替换该行.看起来有点像这样:...

weixin_39758048的博客 1058

Linux开发工具——make/makefile

讲解Linux开发工具——make/Makefile常见用法,内容包括:一,make/makefile基础介绍 make Makefile 二,具体示例 1. 基础示例 1.1 时间戳 1.2 是否重新编译判断 2. 进阶1——依赖链 3. 进阶2——变量替换 4. 进阶3——多文件 4.1 获取当前目录下的所有文件 执行的命令不回显 4.2 %< 4.3 模式规则

tan_run的博客 1075

【Linux】自动化构建工具——make/Makefile

make和makefile内容介绍以及Linux程序——进度条

dab112的博客 1046

Linux:Makefile

在Linux系统中,makefile文件的编写可以减少多文件运行时弥补命令行需要经常修改的问题,下面是一个简单的makefile文件的编写: makefile: a)、多文件组成的项目工程的管理工具 b)、可以通过检查文件的时间戳记来跳过最近未被修改的文件,减少重新的编译数量   文件的时间戳记: a、atime:最后一次访问时间 b、mtime:最后一次修改属性的时间 c、ctim...

LOONG 303

【linux】linux项目自动化构建工具-make/Makefile

一、如何简单使用make/Makefile 二、细节介绍 1. 依赖关系和依赖方法 2. make和make clean 3.回显问题 4. 特殊符号\$@和\$^ 5. 注释 三、为什么通常情况下make不能连续执行,那么又是如何做到的呢 1. 为什么通常情况下make不能连续执行 2. 那么又是如何做到的

重铸自身根基的博客 1518

【lesson9】Linux make和makefile

Linux make和Makefile的介绍以及使用

m0_67077469的博客 460

Linux项目自动化构建工具————make/makefile

1.make:2.makefile:一个文本文件(命名为 或 ),定义项目编译规则和依赖关系。 示例解释: 是目标文件,依赖 。执行 时,自动调用 编译生成 。 三、清理操作(clean 规则) 1. 添加清理规则 为什么 后面没有依赖文件?因为 是伪目标,不依赖任何文件,直接执行命令。 2. 伪目标的作用 伪目标:不生成实际文件,仅执行命令。 的作用:强制 执行该规则,即使存在名为 的文件。依赖关系:目标文件是否需要重新生成,取决于依赖文件是否更

2403_82706967的博客 452
上一篇: 【转贴】Android Building System 分析
下一篇: [转贴]Linux文件查找命令find,xargs详述
sanlinux
博客等级 码龄17年 92粉丝 158原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值