zoukankan      html  css  js  c++  java
  • linux三尖刀

    我们都知道,一个可执行程序的基本的生命过程是如此的:

    (编辑)源文件--->(编译)目标文件--->(链接)可执行文件--->(调试排错)稳定执行

    所以,在这个过程中,我们很容易看得出。一个程序开发过程是离不开,编辑器,编译器,调试器这三个工具的。

    那么vim,gcc(g++),gdb就是linux环境C/C++编程三把尖刀,没有他们的存在,江湖总是太过平静了。

    修习之剑vim

    vim模式:

    基本分类

    ①插入模式(可编辑,输入字符状态),②命令模式(底行模式),③视图模式(v进入,可选定字符)

    详细分化

    1.通常模式(n) 在其它任何一个模式下,用ESC或者 ctrl+c 键可以退到通常模式
    2.插入模式(i) 在这个模式下,vim像一个常见的编辑器.在通常模式下,用i或者a可以进行本模式,当然,还有一些其它命令也可以.
    3.可视模式(v) 在这个模式下,可以使用hjkl进行选择.然后进行copy,paste或者其它操作. 在通常模式下,用v命令进行可视模式.
    4.块操作模式(V) 这是块操作模式. 在通常模式下,用ctrl+v进入本模式.
    5.修改模式(R) 这是改写的模式.很多软件法用insert键来完成这个切换.在vim中,从通常模式用R即可进入改写模式.
    6.扩展命令模式(ex) 这是命令执行模式 在通常模式下用:切换到此模式

    模式切换:

    模式下操作

    普通模式下:

    跳转

      到行末   $

      到行首   ^

      到文件开始  gg

      到文件最后  G

      到第n行  nG

      ---以字符/行为单位跳转

      光标移动 方向  h左  j下  k上   l右

      ---以单词为单位跳转

      上一个单词b   下一个单词w    本单词末尾e

    删除

      删除光标下字符:向后x(同插入模式下的del键)   向前X(同插入模式下的Backspace键)

      向前或者向后删除一个字符也可以:   按d   按左右键

      向前或者向后删除两行:按d  按上下键

      删除光标所在行dd

      删除光标所在单词dw

      删除多行或者多个单词  ndd          ndw

      替换单个字符(将源字符替换为x) rx

      将光标所在字符大小写转换   ~

    复制粘贴

      复制行   yy

      复制单词  yw(不忽略空格,连续空格算做一个单词)

      复制n个单词、行:nyy   nyw

      粘贴pp  多次粘贴npp

    替换模式操作:

      普通模式输入R进入之后操作(同插入模式下ins键)

    视图模式操作:

      普通模式按v进入

      eg删除3个字符

      ①进入v模式,方向选取3个字符

      ②按x或者d删除之

      eg 替换几个字符为sss

      ①可视模式选取字符

      ②按r 按s   就将选定的字符都换位s字符了

    命令模式:

      ①:进入命令模式

      ②输入命令

      ③按下enter执行操作

    主要命令有:

      环境设置eg 

      set number 显示行号

      set nonnumber 取消显示行号

      set tabstop=2 设置tab键等价空格数

      set shifwidth=2设置缩进为2个空格

      更多设置请在命令模式下输入:help去学习

    ps:将更多合适的 环境设置聚合在配置文件.vimrc中保持vim编辑器个性化

    块模式下操作:

      最常用用法-->>注释一段代码

      ps,当我们不熟悉块操作之时,要注释一段代码,貌似只能在插入模式下一行一行的插入//

    这么做,很是低效费事。

      块模式注释一段代码:

      ①按CTRL+V进入块模式

      ②方向键选取需要注释的行数

      

      ③按下I进入插入模式

      ④输入//

      

      ⑤按esc退出

      

      至此,注释完成,ps模块模式的做法是,对应选取的块,以行为单位,每个行都按格式进行操作

      取消注释:

      进入块模式后,用x或者d删除一行中的字符,按esc退出。这里就不上图了

    锻造之剑gcc/g++

    ①man了解基本选项

      解释:

      -E 预处理过程,得到.i文件,保存宏替换,条件编译处理之后的文件

      

      -S 编译过程,获得汇编代码.s

      

      -c获取目标文件

      -o获取输出文件,一般用于指定可执行文件。(中间生成文件也可以使用之指定filename)

      一个命令获取以上过程文件

      gcc test.c   -save-temps

      

      注:gcc、g++默认是动态链接的,

      指定为静态链接的参数  -static

      

    更多选项(相关问题请参考linux环境编程相关章节)

      生成静态链接库

      ar -rcs test.a test.o

    使用静态链接库

      gcc -o test main.c libstr.a

      或者 “-l 库名”

      gcc -o test main.c -lstr

      指定静态库路径

      gcc -o test main.c -L ./ -lstr

    生成动态库

      gcc -shared -Wl, -soname,libstr.so -o libstr.so.l string.c

      //-soname,libstr.so 表示生成动态库别名为libstr.so

      //-o libstr.so.l 实际动态链接库文件

      //-shared 表示生成的是一个动态链接文库

      配置文件 /etc/ld.so.conf

      

      ldconfig -g显示动态链接库列表(缓存文件中的)

      ldconfig 目录名   将该目录中动态链接库放入系统缓存文件/etc/ld.so.cache

        使用(同静态链接库的使用)

      gcc -o test main.c -L ./ -lstr

    锤炼之剑gdb

    最后我们来看看gdb的使用了

    基本功能

      ①设置断点b

      ②显示变量print 

      ③单步执行 s(f11) n(f10) u(shift+f11)

      ④运行时修改变量值

      ⑤路径跟踪,堆栈调用展开bt

      

      ⑥线程切换

      info thread 获取线程信息

      thread id 进入调试线程

    简单使用步骤

      ①编译程序加入选项-g   

        gcc test.c -g

      ②调试可执行程序

        gdb a.out

      进入之后

      当程序需要命令行参数时

      ③(可选)set args 参数值1 参数值2  参数值3

      ④显示源代码l  (list 简写)

      ⑤断点设置b main(breakpointer简写)可以设置断点在行号,函数名,条件设置等

        eg  b  36 if i==2    当i==2时断点

      ⑥执行 r (run)执行到断点处停止

      打印变量p  value    (print value)

      监视变量display value (每次enter都会打印)

      其他命令

      断点失效:

      enable b  编号

      

      i  打印信息

      info显示   eg  

        info   b  显示断点信息

      file path   加载文件

      变量类型检测 whatis value

      

      最后说一个命令,也就是上图中的调试过程中显示的代码框架

      refresh

      最后,关于linux下的makefile下次再解

  • 相关阅读:
    “Metro”,移动设备视觉语言的新新人类
    三个排序
    window.location.reload;刷新
    2012年7月4日
    PDO基础(一)
    php数组
    smarty(原理概述)
    php函数
    jquery Poshy Tip
    WAMP:PHP基础(一)
  • 原文地址:https://www.cnblogs.com/lang5230/p/5531900.html
Copyright © 2011-2022 走看看