Linux学习笔记----初识Linux----常用工具

常用工具

一、编辑器

1. vim概念:

  • . vi/vim 是 linux 下的通用文件编辑器,没有菜单,具有平台通用性,也可以在 windows 下面运行。
  • . vim 具有四种模式:命令模式、插入模式、底行模式、可视模式。
  • . 命令模式:也称为普通模式,该模式下主要执行 vim 命令操作,可以移动光标进行浏览,整行删除,但无法编辑文字。刚打开 vim 时默认处于此模式,无论处于什么模式,按下 ESC 键进入此模式。
  • 插入模式:正常的文本编写模式,在命令模式下按下命令快捷键可进入此模式。 i,I,a,A,o,O。
  • 底行模式:该模式下,光标位于屏幕底行,我们输入的内容都会出现在最低行。在命令模式下,按冒号(: )
    进入底行模式。
  • 可视模式:对文本进行选择操作。在命令模式下按 v,可进入可视模式。

2.、vim的使用

  • (1.)打开操作:vim filename 直接创建并打开文件
    (2)命令模式:打开文件默认进入命令模式

    • 文本删除操作:n代表操作的个数
      d0:删除从光标前一个字符到行首内容
      D或d$:从光标到行尾
      (n)x删除光标处的字符(n代表向右要删除的字符数)
      (n)X 删除光标前的字符(n代表光标前字符向左要删除的字符数)
      (n)dd 删除光标所在行(n代表要删除的行数)
      (n)dw删除一个单词(n代表要删除的单词数)
    • 文本复制操作:
      (n)yy复制光标所在行(n代表当前及后n-1行)
      Y复制光标所在行
      (n)yw复制一个单词(n表示复制指定的n个单词)

    • 文本粘贴指令:p粘贴当前缓冲区内容

    • 撤销指令:u

    • 屏幕滚动:
      Ctrl + u将屏幕向前翻滚半屏幕
      Ctrl + d将屏幕向后翻滚半屏幕
      Ctrl + f将屏幕向后翻滚一屏幕
      Ctrl + b将屏幕向前翻滚一屏幕

    • 指针行跳变:
      n+enter 下移动n行
      0 本行开头
      nG:光标移动倒n行
      gg G:跳 开始、结尾

  • 插入模式

    • 插入文本命令
      i将文本插入到光标所在位置
      I将文本插入到当前行首

    • 追加文本命令
      a将文本加到光标所在位置之后
      A将文本追加到所在行尾

    • 空行插入命令
      o在光标所在行下面添加空行
      O在光标所在行上面添加空行

    按esc进入命令行模式

  • 底行模式

    • 底行操作:命令模式下按冒号进入

    • 退出指令
      **q!**强制退出
      w filename
      w! filename
      wq先保存在退出
      x若修改保存退出否则直接退出

    • 搜索字符串
      /字符串
      ?字符串
      搜索的字符串会显示高亮,去除高亮指令:noh

    • 字符串替换
      %s /源字符串/目标字符串/g
  • 可视模式
    命令模式下v进入可视模式
    d:删除 y:复制 x:剪切

二、编译器

  1. gcc编译器
  • 编译过程
    Linux学习笔记----初识Linux----常用工具_第1张图片
  1. 程序编译过程
    编译预处理 gcc –E xxx.c –o xxx.i
    伪指令包括:1)宏定义指令;
          2)条件编译指令;
          3)头文件包含指令;      
    编译 gcc -S xxx.i -o xxx.s 把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件

    汇编 as xxx.s -o xxx.o 汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句对应一条机器指令

    链接 gcc xxx.o -o xxx 头文件只是函数声明,实现封装在库文件中,链接就是找到指定路径下的库文件

  2. 常用编译选项

  • 没有任何选项:gcc helloworld.c结果会在与helloworld.c相同的目录下产生一个a.out的可执行文件。

  • -o选项,指定输出文件名:gcc -o helloworld helloworld.c

  • -c选项,只编译,不汇编连接:gcc -c helloworld.c-c意思就是Compile,产生一个叫helloworld.o的目标文件

  • -S选项,产生汇编源文件:gcc -S helloworld.c-S意思就是aSsemble,产生一个叫helloworld.s的汇编源文件

  • -E选项,预处理C源文件:gcc -E helloworld.c-E意思就是prEprocess。输出不是送到一个文件而是标准输出。当然可以对它进行重定向:gcc -E helloworld.c > helloworld.txt

  • -g选项,产生供gdb调试用的可执行文件:gcc -g helloworld.c产生一个叫作a.out的可执行文件,大小明显比只用-o选项编译汇编连接后的文件大。

三、动态库静态库

  1. 库的概念:为了提高程序的编写效率以及模块化编程的思想,我们可以把相应的函数打包成库文件使用。 Linux 下的库文件分为静态库和动态库文件,包含了通用函数的数据和二进制可执行机器码的文件

  2. 静态库的创建.a
    gcc fun.c -c // 生成.o文件

    ar -rc libfun.a fun.o //打包生成静态库

    gcc main.c libfun.a //利用静态库编译程序

  3. 动态库的创建.so

    gcc fun.c -c //生成.o文件
    gcc -fpic -shared fun.o -o libfun.so //生成动态库
    把库文件复制到**/lib下和/usr/lib**
    gcc main.c -lfun //利用动态库编译程序 -l:后面跟需要链接的库
    ./a.out 运行程序 运行期间会寻找动态库,只会在系统默认路径下寻找,所以需要把库文件复制到/lib和/usr/lib下

  4. 区别:静态库直接将库文件编译到可执行程序里面
    动态库:动态去lib usr/lib 下去寻找 需要的库文件加载
    ldd a.out:查询a.out程序运行需要的库文件

四、调试工具gdb

  1. gcc 1.c -g //生成可调试的程序
  2. gdb a.out //调试a.out
  3. 常用调试命令及方法
  • run 运行一个程序,run命令简写 r

  • l命令相当于list,从第一行开始例出原码

  • break 许多命令可以设置断点, help breakpoint 会列出这些命令,示例:break 16 (也可简写b 16) 设置断点,在源程序第16行处

  • info break 查看断点信息

  • -b

  • cont继续运行,直到下一个断点

  • delete d breakpoint num(断点标号)

  • enable(启用) enable breakpoint (启用断点)

  • disable (禁用) disable breakpoint (禁用断点)

  • clear clear (清除<行号>)

  • print p arg

  • next n 单条语句执行,next命令简写,next遇到函数直接执行得到结果,step进入函数内部,一步一步执行

  • step 单步执行,遇到子函数就进入并且继续单步执行

  • quit 退出

  • finish结束当前函数,返回到函数调用点

五、工程管理工具make

  1. 作用:管理工程文件编译
  2. make:相当于脚本编程语言,本质是实现自动化编译,需要makefile或者Makefile文件支持
  3. 使用:make //读取makefile文件编译整个工程
  4. make clean //读取makefile文件做工程清理
  5. Makefile:如果在文件夹内找不到makefile make会尝试去找Makefile文件
  • 编写规则
    例如:
    Linux学习笔记----初识Linux----常用工具_第2张图片
    Linux学习笔记----初识Linux----常用工具_第3张图片
    使用vim编译器建立makefile文件
    使用tab键
    目标:依赖语法
  1. 变量的定义:makfile里面的变量没有类型之分,直接定义即可,引用使用$符号引用
  2. 预定义变量 宏
    $^:所有的依赖文件
    $@:目标文件
    $<:第一个依赖的文件

你可能感兴趣的:(vim工具)