linux中的ctags与make命令
2016-05-28 15:07
676 查看
ctags命令
ctags是vim下方便代码阅读的工具。
首先呢,先创建ctag.h,ctag.c,test.c三个文件。
ctag.h 中为函数的声明。
test.c中为函数的定义。
ctag.c为主函数。
![](http://s5.51cto.com/wyfs02/M00/82/0C/wKioL1dJQrvRNgnRAABIL5c5aYY511.png)
使用ctrl + R这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。
将光标放在函数处时,使用 ctrl + ] 时,跳到函数的定义处。使用 ctrl + t时,跳到函数的声明处。
2.make命令
make 是命令,而Makefile是一个文件,在make命令执行时,需要一个Makefile文件,以告诉make命令需要怎样去编译和链接程序。
Makefile---自动化编译,一旦写好,只需一个make命令,整个工程完全自动编译,极大的提高的软件开发的效率。
在介绍make之前呢,我们先来理解一下‘\n’。
我们都知道‘\n’是回车换行。
回车是光标重新回到本行开头(可能会覆盖之前的内容),换行是光标往下一行(不一定到下一行行首)。
首先呢,先来看这样一个例子:
printf语句中'\n',在执行时,屏幕上会直接输出hello bit,然后等待两秒。结果如右图所示。
![](http://s3.51cto.com/wyfs02/M00/82/0D/wKiom1dJLSqj6FyGAAAnRR0rzZY712.png)
![](http://s4.51cto.com/wyfs02/M02/82/0C/wKioL1dJLt6zWui8AAASxUTz2mo401.png)
若将printf语句中的'\n'去掉,屏幕上会先等待两秒,然后输出hello bit。结果如下图所示。
![](http://s4.51cto.com/wyfs02/M00/82/0C/wKioL1dJLt_wRU2VAAAQh8Ex1Uk144.png)
注:在执行语句的过程中,若遇到'\n'时,会刷新缓冲区。所以在printf语句中存在'\n'时,执行此语句时,遇到'\n',所以会直接在屏幕上输出结果。
上述已经说过,make在执行的时候,需要一个Makefile文件。
Makefile文件中主要是文件的依赖关系和依赖方式。
在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以Tab键开头。make并不管命令是怎么工作的,他只管执行所定义的命令。
make是如何工作的?
(1) make会在当前目录下找名字叫“Makefile”或“makefile”。
(2) 如果找到,它会找文件中的第一个目标文件.o。
(3) 如果文件不存在,它会根据依赖关系找.s文件。
(4) 若.s文件不存在,make会在当前文件中找目标为.s文件的依赖性即.i。
(5) 若.i文件不存在,根据依赖关系会找.c文件,当然.c文件时存在的啦。于是,make会生成一个.o文件,然后去执行文件。
这就是整个make的依赖性,make会一层一层去找文件的依赖关系,直到最终编译出第一个目标文件。在找的过程中,如果出错,如:最后被依赖的文件找不到,make会直接退出,并报错,对于定义的命令的错误或者编译不成功,make不管。make只管文件的依赖性,即如果找到依赖关系之后,冒号后边的文件不存在,make也不工作。
清理目标文件的规则:
每一个Makefile中都应该写一个清理目标文件(.o和执行文件)的规则,这不仅便于重编译,也有利于保持文件的清洁。
.PHONY:clean
clean:
rm -f 文件
.PHONY后边的clean事宜“伪目标”。在rm命令前面加上一个小减号的意思是,就算某些文件处理问题,不要管,继续做后边的事情。不要将clean的规则放到文件的开头,不然出成为make的默认目标。
clean从来都放在文件的最后
proc.c文件
![](http://s4.51cto.com/wyfs02/M01/82/0E/wKiom1dJQJrCQnQ3AABS_hxNwAk047.png)
注:fflush(stdout):清空输出缓冲区,并把缓冲区内容输出
Makefile文件
![](http://s2.51cto.com/wyfs02/M02/82/0E/wKiom1dJP1mjqwCAAABRPUK8koc875.png)
结果:
![](http://s1.51cto.com/wyfs02/M01/82/0C/wKioL1dJQeyghgXbAAAzxG4e35E562.png)
ctags是vim下方便代码阅读的工具。
首先呢,先创建ctag.h,ctag.c,test.c三个文件。
ctag.h 中为函数的声明。
test.c中为函数的定义。
ctag.c为主函数。
![](http://s5.51cto.com/wyfs02/M00/82/0C/wKioL1dJQrvRNgnRAABIL5c5aYY511.png)
使用ctrl + R这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。
将光标放在函数处时,使用 ctrl + ] 时,跳到函数的定义处。使用 ctrl + t时,跳到函数的声明处。
2.make命令
make 是命令,而Makefile是一个文件,在make命令执行时,需要一个Makefile文件,以告诉make命令需要怎样去编译和链接程序。
Makefile---自动化编译,一旦写好,只需一个make命令,整个工程完全自动编译,极大的提高的软件开发的效率。
在介绍make之前呢,我们先来理解一下‘\n’。
我们都知道‘\n’是回车换行。
回车是光标重新回到本行开头(可能会覆盖之前的内容),换行是光标往下一行(不一定到下一行行首)。
首先呢,先来看这样一个例子:
printf语句中'\n',在执行时,屏幕上会直接输出hello bit,然后等待两秒。结果如右图所示。
![](http://s3.51cto.com/wyfs02/M00/82/0D/wKiom1dJLSqj6FyGAAAnRR0rzZY712.png)
![](http://s4.51cto.com/wyfs02/M02/82/0C/wKioL1dJLt6zWui8AAASxUTz2mo401.png)
若将printf语句中的'\n'去掉,屏幕上会先等待两秒,然后输出hello bit。结果如下图所示。
![](http://s4.51cto.com/wyfs02/M00/82/0C/wKioL1dJLt_wRU2VAAAQh8Ex1Uk144.png)
注:在执行语句的过程中,若遇到'\n'时,会刷新缓冲区。所以在printf语句中存在'\n'时,执行此语句时,遇到'\n',所以会直接在屏幕上输出结果。
上述已经说过,make在执行的时候,需要一个Makefile文件。
Makefile文件中主要是文件的依赖关系和依赖方式。
在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以Tab键开头。make并不管命令是怎么工作的,他只管执行所定义的命令。
make是如何工作的?
(1) make会在当前目录下找名字叫“Makefile”或“makefile”。
(2) 如果找到,它会找文件中的第一个目标文件.o。
(3) 如果文件不存在,它会根据依赖关系找.s文件。
(4) 若.s文件不存在,make会在当前文件中找目标为.s文件的依赖性即.i。
(5) 若.i文件不存在,根据依赖关系会找.c文件,当然.c文件时存在的啦。于是,make会生成一个.o文件,然后去执行文件。
这就是整个make的依赖性,make会一层一层去找文件的依赖关系,直到最终编译出第一个目标文件。在找的过程中,如果出错,如:最后被依赖的文件找不到,make会直接退出,并报错,对于定义的命令的错误或者编译不成功,make不管。make只管文件的依赖性,即如果找到依赖关系之后,冒号后边的文件不存在,make也不工作。
清理目标文件的规则:
每一个Makefile中都应该写一个清理目标文件(.o和执行文件)的规则,这不仅便于重编译,也有利于保持文件的清洁。
.PHONY:clean
clean:
rm -f 文件
.PHONY后边的clean事宜“伪目标”。在rm命令前面加上一个小减号的意思是,就算某些文件处理问题,不要管,继续做后边的事情。不要将clean的规则放到文件的开头,不然出成为make的默认目标。
clean从来都放在文件的最后
proc.c文件
![](http://s4.51cto.com/wyfs02/M01/82/0E/wKiom1dJQJrCQnQ3AABS_hxNwAk047.png)
注:fflush(stdout):清空输出缓冲区,并把缓冲区内容输出
Makefile文件
![](http://s2.51cto.com/wyfs02/M02/82/0E/wKiom1dJP1mjqwCAAABRPUK8koc875.png)
结果:
![](http://s1.51cto.com/wyfs02/M01/82/0C/wKioL1dJQeyghgXbAAAzxG4e35E562.png)
相关文章推荐
- 10 篇对初学者和专家都有用的 Linux 命令教程
- 设计模式之行为型模式 - 调用行为的传递问题
- linux mknod命令与磁盘对应一例
- 通晓网络测试常用命令
- FTP命令大全
- Netsh.exe 工具和命令行开关说明
- Ruby基本的环境变量设置以及常用解释器命令介绍
- Oracle数据库执行脚本常用命令小结
- set 命令特殊用法
- PowerShell重启服务命令Restart-Service详细介绍
- Netsh 命令备份和恢复网络设置
- DOS命令全集(一)
- 批处理中使用系统路径的命令
- 使用BAT一句话命令实现快速合并JS、CSS
- 三个有用的 Switch 命令
- 写批处理必备的一些命令参数使用技巧
- win运行字符命令
- Powershell小技巧之使用WS-Man来调用PowerShell命令
- MySQL基本命令、常用命令总结
- 数据库基本概念面试必问