目录
1.make/Makefile的背景
2. 实例代码
2.1 常规代码执行过程:
2.2 使用make工具执行代码程序:
3. makefile文件内容的解释
3.1 生成解决方案
3.2 清理解决方案
4. 多文件的makefile文件书写
5. 缓冲区
Linux🌷
1.make/Makefile的背景
1. 会不会写 makefile ,从一个侧面说明了一个人是否具备完成大型工程的能力;2. 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中, makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作;3. makefile 带来的好处就是 ——“ 自动化编译 ” ,一旦写好,只需要一个 make 命令,整个工程完全自动编译,极大的提高了软件开发的效率;4. make 是一个命令工具,是一个解释 makefile 中指令的命令工具,一般来说,大多数的 IDE都有这个命令,比如:Delphi 的 make , Visual C++ 的 nmake , Linux 下 GNU 的 make 。可见,makefifile 都成为了一种在工程方面的编译方法;5. make 是一条命令, makefifile 是一个文件,两个搭配使用,完成项目自动化构建。
说了它的背景,那它到底是干什么的呢?有什么用呢?
下面看个例子!
2. 实例代码
2.1 常规代码执行过程:
1. 我们首先创建一个要编写代码的.c文件;
2. 在.c文件中编写的代码如下;
3. 我们对它进行编译生成可执行的文件hello;
4. 执行hello文件;
上述便是我们常规的编写一个代码,并对其进行执行的过程。
那还有没有其他办法执行程序呢?
2.2 使用make工具执行代码程序:
1. 编写要执行的.c源文件代码程序;
2. 创建makefile文件,建立起源文件和目标文件的依赖关系;
3. 执行make我们发现出现了可执行程序hello;
4. 执行hello程序;
经过上述例子,我们发现通过makefile工具我们也可以实现程序的编译功能。
3. makefile文件内容的解释
3.1 生成解决方案
上述所示是make的解决方案,在命令行中输入make便会执行依赖方法中的命令。
3.2 清理解决方案
上述所示是make clean的清理解决方案,在命令行中输入make clean则会执行clean:下方的语句
综述:
编写了makefile文件后,我们输入make则意味着输入了编译的命名;
输入make clean 这意味着输入了删除可执行程序的命令。
对于我们以后在Linux系统下进行代码的编译和清理都是非常方便的。
补充:
我们通过此命令也可以完成文件的编译工作。
4. 多文件的makefile文件书写
我们也可以在makefiel文件中添加多层依赖关系,达到多文件的编译工作:
同样可以完成上述功能
5. 缓冲区
在Linux系统中是存在缓冲区的,输入的数据显示的时候不会直接显示到显示器上,而是会先
保存在一个缓冲区中,这个缓冲区是以行为单位进行刷新的,直到缓冲区满、或者是遇到
\n、或者程序结束,才会输出到显示器上。
下面给个简单的例子具体体验下:
输出hello linux!后,在下一行中停5秒,然后才会出现命令行的输出操作!
没加\n,我们执行./hello命令后看到首先停5秒后,才输出hello linux!
这是为什么?程序难道不是顺序执行的吗?
程序当然是顺序执行的,但是hello linux!语句首先被保存在缓冲区中,此语句太短,达不到缓冲区
行刷新的要求,那么停5秒,然后程序退出时,才会将缓冲区的内容刷新到显示器上。
有没有什么办法能将缓冲区的数据立即刷新到显示器上呢?
fflush则可以达到此效果。
坚持打卡!😃