ctags 和Makefile的简单使用

ctags

ctags是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。(尤其是大型的工程)

一、安装ctags

1、命令行安装

切换到root用户之下,输入yum install ctags

2、下载源码安装(网上提供的方法)

1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成源代码目录,

2)然后进入源代码根目录执行./configure,

3)然后执行make,

4)编译成功后执行make install

二、简单的使用

1)ctags-R:在当前目录下建立索引

2)Ctrl + ](右方括号) :跳转到函数或变量的定义处

3)Ctrl + T :跳转至上级

例如:

一个工程中含有my_tags.h、ctags.c、main.c三个源文件

内容分别为

输入ctags - R在当前目录下面创建一个索引

打开main.c或者my_tags.h,将光标放到fun处,按ctrl + ]即可跳转到函数定义处

再按ctrl +T跳转 至上级

Makefile

会不会写makele,从一个侧面说明了一个人是否具备完成大型工程的能力。 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makele 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makele就像一个Shell脚本一样, 其中也可以执行操作系统的命令。makele带来的好处就是——“自动化编译”,一旦写 好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make是一个动作而Makefile是一个文件

make命令执行时,需要一个 Makele 文件,以告诉make命令需要怎么样的去编译和链接程序。

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的默认目标。

例如:为proc.c编写一个Makefile

在proc.c当前目录下创建一个Makfile文件,并在Makefile文件中编辑如下

或者

运行Makefile

make

清除Makefile产生的多余文件

make clean

注意事项:

1、编写依赖方式时,一定要以Tab键开头(不能用空格代替)

2、clean一般都放在文件的最后

3、@可以屏蔽输出依赖方式

4、makefile 默认值生成一个目标文件,就停止

在Linux下编写一个简单的进度条

在编写之前先来了解一个奇妙的现象,有"\n"

运行结果为:

hello world早早运行完毕但是2秒之后程序才会运行完毕

运行结果

系统2秒之后才会输出hello world

这是为什么呢?

注意:‘\n‘回车并换行,执行printf时先写到行缓冲,遇到\n的时候将行缓冲的内容刷出

所以第一个程序中是先输出hello world然后再休眠,第二个程序中,由于没有‘\n‘,所以不会输出hello world,当程序运行完毕之后,系统会自动刷新缓冲区,这时才会输出hello world。

进度条实现原理

1)实现动态的增长

可以定义一个数组,并设置一个计数器,当数字增加的同时,给字符数组每次增加一个元素,并且打印时覆盖之前的数组。

2)保证打印信息在同一行

每次将光标定位到最左边,从光标处打印,使用’\r‘,回车

3)复制动态的效果实现

定义一个数组

char index[4] = {‘|‘, ‘/‘, ‘-‘, ‘\\‘};

index[count%4];

4)实现打印长度相同

%-100s

5)给人复制的效果

每输出一次,程序挂起一段时间

实现代码

效果

时间: 2024-10-13 22:24:09

ctags 和Makefile的简单使用的相关文章

Linux中的ctags和Makefile使用

一.Ctags命令 Ctags是vim下方便代码阅读的工具,它可以帮助程序员很容易的浏览代码. 先在当前目录建立tags文件 创建ctag.h,ctag.c,test.c三个文件 1)  Ctrl+](右方括号):跳转到函数或变量的定义处 2)  Ctrl+t:跳转至上级 二.Makefile 先编写一个简单的进度条,理解一下'\n'. 运行结果 hellobit运行完之后过了3秒程序才运行结束 运行结果 3秒之后才运行出hello bit 在执行语句的过程中,若遇到'\n'时,会刷新缓冲区.所

liunx中ctags 与makefile的使用

ctags 是vim下可以帮助阅读代码的一个的工具,它可以很方便的看到程序的源代码 使用ctags可以有两种方法:(1).可以在任意目录下建立文件,然后使用 ctags *.c,这个命令的意思是把当前目录下的所有文件生成标签文件(vim可以通过标签,跳转到标签文件处)例如: vim ctag.h vim ctag.c vim main.c 在main.c中把光标移至fun函数处,按Ctrl+[就会跳转到fun函数定义的地方,即ctag.c处,Ctrl+T回转到main.c函数 (2).输入cta

Makefile的简单编写

当我们的工程越来越大的以后,每次都使用命令编译显得非常的麻烦.所以我们需要一个自动化编译的工具来帮助我们编译.在我们使用源码安装软件的时候都会有make,make install等操作,这个就是使用Makefile来进行自动化编译的工作的. Makefile也是一个脚本文件和shell脚本非常的相似,但是也有很多的地方不一样. 程序编译通常会有一下几个步骤,先是预编译,然后将C语言代码编译成汇编,然后在将汇编编译成二进制文件.o文件,然后将所有的.o文件连接起来就得到了可执行文件. 在编写Mak

从小程序中看make和Makefile的简单使用

我们都知道程序在执行之前会有两个很重要的过程:编译和链接.当然我们在Windows平台的编译器中(像vs),它会自动帮我们生成最后的执行程序,如(xxx.exe):但是Linux下我们使用vim时,gcc和g++是可以一次性将一个源代码生成可执行程序,可是一个项目可不止一个源文件,一个项目的运作是要将各个源代码编译成目标文件后,再将它们链接起来后执行的. 试想一下如果一个工程有上百个源文件,那你将所有源文件都编译链接完后,程序也能跑起来,然后你的boss不满意,让你修改几处地方,然后你改完之后又

linux——学习篇(三)之makefile的简单应用及实现简单的进度条

一.makefile make是一个命令,而makefile是一个文件.make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序.一个工程中的源文件不计数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令.makefile 带来的好处就是--"自动化编译

Ubuntu下makefile的简单使用

在Windows下,只需要简单的点击以下make,rebuild即可.而在Linux下,这样的IDE环境并没有提供,难道必须每一步都执行一遍吗?比较ok的做法自然是能够利用批处理脚本来进行操作了,这样,只需要修改脚本中需要编译的文件即可.在Linux下,提供了这么一个方便的工具,make.那么接下来我们来利用make进行程序的组织编译吧. 1. 编写tool.h #ifndef __TOOL_H #define __TOOL_H void printInteger(int number); #e

Linux 内核 Makefile 体系简单分析 (转)

转载自mz_linux的ChinaUnix博客 :http://blog.chinaunix.net/uid-26806098-id-3141136.html 众所周知,Linux内核是使用make命令来配置并编译的,那必然少不了Makefile.在内核目录树中我们可以看到内核编译系统的顶层Makefile文件.但是如此复杂.庞大的内核源码绝不可能使用一个或几个Makefile文件来完成配置编译,而是需要一套同样复杂.庞大,且为Linux内核定制的Makefile系统.她可以说是内核的一个子系统

linux 进度条的实现及makefile的简单应用

\n和\r的区别:\n是输出换行,\r是回车回到句首: 进度条的代码: makefile的代码: 结果:

makefile的简单写法

makefile 使用方法: vi 一个Makefile文件 CC = g++   // 指的是用什么编译器RM = rm -rf   // 定义一个删除的指令(变量)CFLAGS = -c -Wall -I. -D_DEBUG // 编译标志 // 冒号左边是目标,右边是依赖client:main.o client.o logreader.o consolesender.o socketsender.o 等等// 由依赖的到目标的放吧(每个方法前面必须有一个制表符“一个tab键”) // 这里