在文件中加入编译时间

   加入编译时间和日期,文件和行号
   printf("The   compiled   date   is   %s,   time   is   %s   /n",   __DATE__,   __TIME__);   
   printf("The   current   line   is   %d   in   the   file   %s   /n",   __LINE__,   __FILE__);   
 
`patch` 文件在软件编译中的**生命周期**,通常不是编译过程的直接一部分,而是**编译前的一个预处理步骤**。它用于修改源代码,使得源码在进入编译阶段时已经包含了某些修改、修复或新增功能。 --- ## ✅ patch 文件的生命周期流程图 ``` 源代码仓库 ↓ [ patch 文件应用 ] ↓ 修改后的源代码 ↓ 编译阶段 ↓ 链接阶段 ↓ 生成可执行文件/库 ``` --- ## ✅ 生命周期详解 ### 1. **patch 文件生成阶段** - 通常使用 `git diff` 或 `diff` 命令生成。 - 例如: ```bash git diff > my_patch.patch ``` - patch 文件记录的是源代码文件之间的**差异**(新增、删除、修改的代码块)。 --- ### 2. **patch 文件应用阶段** - 在编译前,使用 `patch` 命令将修改应用到源代码中。 - 例如: ```bash patch -p1 < my_patch.patch ``` - `patch` 工具会根据 patch 文件中的行号、上下文信息,将修改内容插入到对应的源文件中。 > ⚠️ 如果上下文不匹配(比如源码已经被修改过),patch 会失败或提示偏移应用。 --- ### 3. **修改后的源代码进入编译流程** - patch 应用成功后,源代码已经被修改。 - 接下来,编译器会像往常一样处理这些源代码文件(如 `gcc` 编译 `.c` 文件)。 --- ### 4. **patch 文件不再参与编译** - 一旦 patch 被成功应用,它就不会再参与编译过程。 - 它只是**一次性修改源码**的工具,不参与编译、链接、构建等后续阶段。 --- ## ✅ patch 生命周期的常见场景 | 场景 | 说明 | |------|------| | 修复 bug | 在源码中打 patch 修复某个 bug,再编译 | | 移植功能 | 将某个模块的 patch 应用到新项目中,再编译 | | 定制化开发 | 在开源项目中加入自己的功能 patch,再编译生成定制版本 | | 自动化构建 | CI/CD 中自动应用 patch,构建不同版本的固件或软件 | --- ## ✅ patch 生命周期的注意事项 | 注意事项 | 说明 | |----------|------| | patch 应用顺序 | 多个 patch 有依赖顺序时,必须按顺序 apply | | patch 冲突 | 如果多个 patch 修改了同一段代码,可能会冲突 | | patch 可逆性 | 使用 `-R` 参数可逆向回滚 patch | | patch 日志记录 | 建议记录 patch 应用时间和内容,便于维护 | --- ## ✅ 示例:patch 生命周期中的典型操作 ```bash # 1. 从仓库获取源码 git clone https://github.com/example/project.git # 2. 进入源码目录 cd project # 3. 应用 patch patch -p1 < ../fix-bug.patch # 4. 编译项目 make # 5. 生成可执行文件 ./my_program ``` --- ## ✅ 总结 | 阶段 | 是否参与编译 | 说明 | |------|----------------|------| | patch 生成 | ❌ | 只是记录差异 | | patch 应用 | ❌(不是编译的一部分) | 是修改源码的过程 | | 源码修改后 | ✅ | 修改后的代码进入编译流程 | | patch 文件本身 | ❌ | 不参与编译、链接、运行 | --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值