10min快速上手OSpre——make与重定向

前言 虽然现代的IDE已经提供了较为完善的c编译手段,使得程序员只需注意程序的设计,而不必考虑编译路径。然而学习make还是有其特有的作用的,特别是当你使用学校的电脑写c时😢。 什么是make? 在介绍mke之前,我们先来看看我们要如何使用gcc(GNU C Compiler)编译C语言: 意思是使用gcc编译器,编译hello.c,并将编译后生成的可执行程序命名为hello。 假如说要使用的程序有100个.c文件,难道每次编译都要写100次gcc命令吗,能不能只写一次编译命令到一个文件里,然后每次需要编译时执行那个文件就行?于是make便诞生了。 让我们使用make的方法编译上面的程序,首先编写Makefile文件: 这相当于告诉make:hey,make,检查hello文件,如果需要编译,你需要依赖hello.c文件,在依赖完成后,执行 这个指令。归纳一下,makefile可以表达为 需要注意的时make时增量编译的,所以尽量将target任务文件命名为command生成的文件,关于这部分内容的详细解释,见文档。 重定向 虽然管道键 | 可以连接命令与命令: 但是却不能连接命令与文件(文件和文件是什么呢?cp,cat…),而重定向解决了这个问题,将input.txt作为输入,交给calc可执行文件处理: 如果想要把 ./calc 程序的结果输出到outcome.txt: 综合一下,启动./calc程序,用input.txt作为输入,outcome.txt作为输出: 总结一下: 符号 作用 记忆点 > 覆盖输出 漏斗指向文件,旧的冲走 >> 追加输出 漏斗指向文件,叠在一起 2> 重定向错误 专门管报错 < 输入重定向 文件流向命令 练习题 接下来让我们看回OSpre的题目: 我们需要做: 1.调用casegen生成测试样例,重定向到特定文件中。 2.合并文件 3.调用calc计算合并的文件 4.清除 1.生成测试样例,重定向到特定文件中 2.合并文件 3.调用calc计算合并的文件为out 4.清除 这里的.PHONY是为了让make每次都执行clean。 最终代码: 以下是make的依赖树: