当前位置: 首页 > news >正文

【Makefile】编译日志之输出重定向符号 >

用法1

make all >&  compilelog.txt
make all >  compilelog.txt

这两个编译命令在功能上有一些细微的区别,主要在于标准输出和标准错误的处理方式。

  1. make all >& compilelog.txt

    • 这个命令会将标准输出(stdout)和标准错误(stderr)都重定向到同一个文件 compilelog.txt 中。这意味着所有通过 printfecho 等函数输出的信息以及错误信息都会被写入到 compilelog.txt 文件中。
    • 具体来说,>& 是 Bash 中的一个特殊语法,它将文件描述符 1(标准输出)重定向到文件描述符 2(标准错误),然后再一起重定向到指定的文件。因此,标准输出和标准错误都会合并并写入到同一个文件中。
  2. make all > compilelog.txt

    • 这个命令只会将标准输出(stdout)重定向到 compilelog.txt 文件中,而标准错误(stderr)仍然会在控制台上显示。这意味着只有正常的编译输出会被记录到 compilelog.txt 文件中,而错误信息则会直接显示在终端或控制台上。
    • 具体来说,> 是标准的输出重定向符号,它将标准输出重定向到指定的文件,但不会影响标准错误的输出。

总结

  • make all >& compilelog.txt:标准输出和标准错误都被重定向到 compilelog.txt 文件中。
  • make all > compilelog.txt:只有标准输出被重定向到 compilelog.txt 文件中,标准错误仍然会在控制台上显示。

选择哪种方式取决于你的需求。如果你希望同时记录正常输出和错误信息,可以使用第一个命令;如果你只关心正常输出,可以使用第二个命令。

用法2

make -f Makefile 1> 3308_linux.txt 2>&1

这个命令用于在 Linux 或 Unix 系统中编译代码,并将编译过程中的标准输出和标准错误都重定向到一个名为 3308_linux.txt 的文件中。

具体来说:

  • make -f Makefile:调用 make 工具,并指定使用 Makefile 文件来控制编译过程。
  • 1> 3308_linux.txt:将标准输出(文件描述符 1)重定向到 3308_linux.txt 文件中。
  • 2>&1:将标准错误(文件描述符 2)重定向到标准输出(文件描述符 1),这意味着标准错误也会被写入到 3308_linux.txt 文件中。

总结

这个命令会执行以下操作:

  1. 使用指定的 Makefile 文件进行编译。
  2. 将所有正常的编译输出(标准输出)和错误信息(标准错误)都重定向到 3308_linux.txt 文件中。

这样做的好处是,你可以方便地查看和分析编译过程中的所有输出信息,而不需要分别查看标准输出和标准错误。question_type_trigger

用法3

make all >& compilelog.txt 多次调用,下一次编译日志会覆盖上一次吗?

是的,如果你多次调用 make all >& compilelog.txt,每次编译的日志都会覆盖上一次的日志。这是因为重定向操作会将文件内容清空并写入新的输出。

示例

假设你第一次运行:

make all >& compilelog.txt

这会将第一次编译的输出和错误信息写入到 compilelog.txt 文件中。

然后你再次运行:

make all >& compilelog.txt

这次编译的输出和错误信息会覆盖 compilelog.txt 文件中的内容,之前的记录会被清除。

如何保留所有日志

如果你希望保留每次编译的日志,可以使用追加重定向符号 >> 而不是覆盖重定向符号 >

使用追加重定向
make all >> compilelog.txt 2>&1

这样,每次编译的输出和错误信息都会被追加到 compilelog.txt 文件的末尾,而不会覆盖之前的内容。

总结

  • 覆盖模式make all >& compilelog.txt 每次运行时会覆盖 compilelog.txt 文件的内容。
  • 追加模式make all >> compilelog.txt 2>&1 每次运行时会将新的内容追加到 compilelog.txt 文件的末尾,保留之前的内容。question_type_trigger
http://www.lryc.cn/news/500985.html

相关文章:

  • linux之less
  • 算法-字符串-165.比较版本号
  • List与Set、数组与ArrayList、ArrayList与LinkedList的区别
  • 如何在 Odoo18 视图中添加关联数据看板按钮 | 免费开源ERP实施诀窍
  • Linux下mysql环境的搭建
  • 视觉语言模型 Qwen2-VL
  • 浅谈新能源汽车感应钥匙一键启动的步骤和特点
  • 鸿蒙ArkTS语言基础语法详解
  • H5游戏出海如何获得更多增长机会?
  • Cmake+基础命令
  • python数据分析之爬虫基础:requests详解
  • PHP期末复习(通过30道填空题梳理知识点)
  • PostgreSQL 安装部署系列:使用YUM 方式在Centos 7.9 安装指定 PostgreSQL -15版本数据库
  • 知识图谱8:深度学习各种小模型
  • 为什么 JavaScript 中的 `new` 运算符报错?
  • Tomcat,javaweb, servlet , springBoot
  • 使用Kimi开发自己的问答应用
  • TypeScript进阶
  • jenkins邮件的配置详解
  • 小皮面板(PHPSTUDY)配置多个域名或IP
  • 【大语言模型】LangChain LCEL 表达式语言
  • Leetcode 3382. Maximum Area Rectangle With Point Constraints II
  • MitelMiCollab 身份绕过导致任意文件读取漏洞复现(CVE-2024-41713)
  • DVWA 靶场 SQL 注入报错 Illegal mix of collations for operation ‘UNION‘ 的解决方案
  • 京准电钟分享:医院网络内NTP时间同步服务器作用是什么?
  • HTML DOM API
  • java时间处理SimpleDateFormat详解
  • redis-stack redisSearch环境安装搭建
  • go返回多个errors
  • Monkey结合appium模拟操作特定界面