linux常用工具

linux之初,常用到的工具有vim、gcc、gdb、makefile,yum

一.vim:(importent)文本编辑工具---IDE          

Ubuntu : 不自带vim,需要自己安装

vim下的模式:12种 ---6种基本模式,6种条件模式     (调研)

普通模式:i   进入插入模式    

                 L   光标回到最后一行    

                 a   光标移动到下一个字符处开始插入    

                 A  光标移动到行尾开始插入   

                 o   在光标下方添加新行开始插入    

                 O  上方添加新行开始插入

                 s   删除光标所在字符开始插入         

                 yy  复制光标所在行   

                 p  粘贴复制的内容与光标下方      

                 nyy 复制n行          

                 dd 删除(剪切)光标所在行

                ndd  删除n行  

                w 光标按单词向右移动   b 向左

                dw  删除这个单词光标所在位置后的所有字母    

                x    删除光标所在字符   

                u  撤销上一次操作   

                Ctrl+r  反向撤销    r 字符替换      

                Ctrl+v  进入列式选中模式     

                v  进入行视图模式     

                gg 将光标移动到首行    

                G  移动到末尾

                gg=G  全文按C语言

                :! ls   直接执行命令,回车返回vim

二.gcc:(importent)编译工具,将C语言程序变成机器可识别的程序

          (important     面试)要知道gcc将C语言程序变成机器可识别的程序经过哪些过程

-o    用于指定生成的文件名称   

-E   只预处理

-S   只编译

-c    只汇编

          1.预处理

                 展开所有代码

          2.编译

                 纠错,无错误则将程序编译为汇编代码

          3.汇编

                 将汇编代码编译成为机器可识别的二进制指令代码

          前三步只是将自身代码编译成机器代码,但是在我们的代码中有很多的调用函数并不是我们实现的,想要生成最终的可执行程序,那就必须在我们的代码中能够知道这些函数的实现。

          操作系统提供的方法:系统调用接口,系统调用不太好用,因此有一些大拿就对这些接口进行了封装,最终打包出一个库(文件,其中都是一些接口函数)

          对于我们只需要使用这些函数的时候,包含头文件,并且链接库即可。

          4.链接

          将别人已经实现的代码拿来,跟我们的代码一起生成最终的一个可执行程序。

          动态链接:记录函数地址信息,并不把全部代码拿来,所以可执行程序较小,但是运行时依赖库。

          静态链接:将库中的代码全部拿来,跟我们的程序一起写入最终的可执行程序,最终生成的可执行程序较大,但运行时,不依赖库。

          gcc默认是动态链接。

三.gdb是linux下最火的调试工具。

          如何gdb运行一个程序:

          gdb ./main 程序后边不需要加参数信息,因为参数的获取在这里无效。

          仅加载可执行程序。 

          进入gdb调试时候的命令操作:

          run/r  运行程序。后跟程序的运行参数信息

          start  开始逐步调试

          l  默认查看当前所在位置附近五行的代码

         n  下一步,如果是函数不会跟踪进入函数,而是直接完成功能

         s  下一步, 如果是函数就跟踪进入函数

         break main.c:20  加断点

         b  file:line        给指定文件的指定行添加断点

         b  function_name 通过函数名非函数添加断点

         info break  跳至断点

        d       删除断点,默认删除所有断点

        d   break id根据断点id来删除指定的断点

        p打印变量内容

        watch 变量监控,变量的值每次修改的时候都会停下来

        watch  var

        bt   查看函数调用栈信息,排查段错误时,非常有用的。 

四.makefile   不普通的普通文件

操作系统中有一个命令叫make

记录的是一系列的编译规则,当我们执行make命令,那么make这个程序就会在当下目录下查找makefile文件,然后一步步的解释执行makefile中记录的编译结果规则,最终通过这些编译规则,完成项目的整个编译。

makefile的编写规则:

|生成文件:依赖文件

|[\t]为了完成生成文件的生成,要执行的命令

main:main.c

   gcc main.c -o main

当makefile编写完毕,保存退出后,直接敲击make命令,那么make命令所对应的程序会到当前目录下找到makefile文件,然后按照makefile中记录的编译规则来完成最终项目的编译。

因此makefile文件名字只能是makefile或Makefile

makefile会记录源文件和程序文件的时间信息,如果源文件的最后一次修改时间实在程序文件之后,那么就会重新编译否则将报告程序是最新的,而不需要重新编译

 

make永远只生成第一个对象,执行完生成对象所要执行的命令后就会退出了,所以不会再生成第二个

如果makefile有多个要生成的对象,那么就需要在最上边定义个对象,将生成的对象都作为这个对象的依赖对象。

make可以指定生成要生成的对象。

make clean

 

make  -C     是make的常用选项,功能:是进入指定目录下执行make命令

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值