| 准备博主:大大怪先森(记得关注哦!)编程环境:xshell(点击下载)
 所示代码:码源
 
 
 前言本文将浅谈一下在linux操作环境下一些基本开发工具的使用问题!!! 
 提示:以下是本篇文章正文内容 一、linux的基本工具
 二、linux编译器1.vi/vim的使用 
 vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows 2.1.1基本概念 
 vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command >mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:  
 正常/普通/命令模式(Normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
插入模式(Insert mode)只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
末行模式(last line mode)文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入
 
 
 2.1.2vim的正常命令操作集vim插入模式:  
 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字,按「o」进入插入模式后,是插入新的一行,从行首开始输入文字.
  
  
 vim命令模式:  
 左上下右:h(左)j(上)k(下)l(右)光标位置锚点:shift + ^(行首),shift + $(行尾)起始行:gg结束行:shift + g指定行:n +shift + g按照单次为单位向后移动:b/w
  
 复制当前行:yy复制当前行以及之后的n行,包括当前行:nyy撤销误操作:u粘贴:p,一次粘贴多行:np删除当前所在行:dd(ndd支持删除多行)剪切效果:dd -> p快速大小写切换:shift + ~从左向右删除光标之后的字符:x替换光标所在的字符: r替换模式,直接对多个模式内容进行替换:shift + r撤销最近操作:ctrl +r
 vim底行操作:  
 调出行号:set nu多文件操作:ctrl +w + w保存:w退出:q强制:!
 注意:vim配置在自己的文件操作里面,只会影响当前用户的配置不会影响其他用户的配置
  2.1.3vim总结三种模式  
  
 当然vim模式不仅仅只是当前我们简单的讲解得三种模式,其他的模式各位大大可以自行探索,本人不再过多讲解 2.gcc/g++的使用2.1gcc如何完成2.1.1 基础背景 
 预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)连接(生成可执行文件或库文件)
 2.1.2基础格式 
 gcc [选项] 要编译的文件 [选项] [目标文件]
  2.2gcc完成过程2.2.1预处理 
 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。预处理指令是以#号开头的代码行。
 实例: gcc –E test.c –o test.i
 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
 选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序
 
  
  2.2.2编译 
 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的>工作,在检查无误后,gcc 把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
 实例: gcc –S test.i –o test.s
 
  2.2.3汇编 
 汇编阶段是把编译阶段生成的“.s”文件转成目标文件读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
 实例: gcc –c test.s –o test.o
 
  2.2.4链接 
 在成功编译之后,就进入了链接阶段实例: gcc test.o –o mytest
 
  2.3函数库(重要的一个概念)函数库一般分为两种:动态库和静态库  
 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc test.o –o testgcc默认生成的二进制程序,是动态链接的,这点可以通过 file 命令验证
 
 
 三、linux的调试器3.1gdb基础知识 
 gdb调试程序必须是debug版本,然而在linux下生成的可执行程序默认是releas版本,所以需要我们自己加上 -g进行更改
  3.2gdb的使用 
 list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行list/l 函数名:列出某个函数的源代码。r或run:运行程序。n 或 next:单条执行。s或step:进入函数调用break(b) 行号:在某一行设置断点break 函数名:在某个函数开头设置断点info break :查看断点信息。finish:执行到当前函数返回,然后挺下来等待命令delete breakpoints:删除所有断点delete breakpoints n:删除序号为n的断点disable breakpoints:禁用断点enable breakpoints:启用断点until X行号:跳至X行quit:退出gdb
 四、linux的自动化构造工具make/Makefile 
 make是指令,Makefile是文件文件和文件之间互相依赖关系
 
   linux的第一个小项目-进度条#include<stdio.h>
#include<string.h>
#include<unistd.h>
#define NUM 100
int main()
{
  char bar[NUM + 1];
  memset(bar,'\0',sizeof(bar));
  int i = 0;
  const char* lable = "|/-\\";
  while(i <= 100)
  {
    printf("[%-100s][%d%%][%c]\r",bar,i,lable[i % 4]);
    fflush(stdout);
    bar[i] = '=';
    bar[i+ 1] = '>';
    i++;
   usleep(50000);
  }
  printf("\n");
  return 0;
}
 效果展示:
  结语希望本篇文章能给各位带来帮助,如有不足还请指正!!!
码字不易,各位大大给个收藏点赞吧!!!
 
 |