Linux的开发工具

文章目录

    • vim的介绍
    • Linux编译器 gcc / g++的使用
    • 动态库和静态库
    • Linux调试工具 gdb的使用
    • Linux项目自动化构建工具make 和 makefile
    • 进度条程序的编写

vim的介绍

什么是vim? 简而言之,vim就是一个文本编辑器,我们用来写代码的工具。
所以当最开始打开vim的时候就是一个记事本,这里可以进行快速配置(可以拥有vs的自动补齐功能以及语法高亮)
直接输入:curl -sf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

vim test.c //如果存在test.c则进入编辑,不存在则自动创建test.c文件
vim有多种模式,这里主要介绍3种模式
Linux的开发工具_第1张图片
命令模式下的主要操作:
早期的键盘是没有上下左右键的: h左,l右,k上,j下
shitf + ^ : 光标移动到行首
shift + $ : 光标移动到行尾
gg : 直接到第一行
shift + g : 到行尾
n + shift + g : 到底n行
w : 在一行内按单词向后移
b:在一行内按单词向前移动
yy : 复制当前行
nyy:复制n行
p :粘贴
np: n次重复的粘贴
dd: 删除光标所在行
ndd:删除n行
shift + ~ : 大写转小写,小写转大写
x: 删除一个字符
nx : 删除 n个字符
shift + x(X) : 从后往前删除
r: 替换一个字符
shift +r :进入替换模式
u: 撤销
ctrl + 人:反撤销

底行模式:
set nu 设置行号
set nonu 取消行号
vs + 文件名 :多文件操作 (ctrl +w +w 文件之间的光标跳转)
w :保存
q: 推出
!:强制 (上面三个可以混搭 w! q! wq !)

插入模式 直接跳过

如果觉得学习困难,请坚持重复学习。

Linux编译器 gcc / g++的使用

复习一下程序的翻译环境:
1预处理 : 头文件的展开,宏替换,注释的删除,条件编译
2编译 : 语法检查,生成汇编代码
3汇编 : 将汇编代码转换成二进制的机器指令,形成符号表
4链接:找到函数调用的地址,合并符号表,生成可执行程序。
g++也一样

指令快速记忆 :esc iso -o后面指定生成的文件名
Linux的开发工具_第2张图片

动态库和静态库

动态库(默认) : 后缀是 .so 动态链接,每次都从库目录中查找相关代码
静态库 : 后缀是 .a 静态链接, 将库中的代码拷贝到可执行程序中

我们每次使用printf()函数的时候,有没有想过是在哪里实现的呢,又是怎么调用的呢?
其实我们每次都会去C语言库目录下去查找,而其中早就实现好了该函数的功能。
系统把这些函数实现都被做到名为 libc.so.6 的库文件。

Linux的开发工具_第3张图片

Linux调试工具 gdb的使用

release版本(发行版本) :不可调试,优化后
debug版本 (调试版本):可调式
在centos中 默认是release版本,所以我们要调试一个程序,一定要向该程序的二进制文件中加入debug信息(+ -g)。
gcc test.c -o test -g

gdb test进入调试(代码一定要跑起来才能调试)
r : run跑起来
l :list列出当前向下的10行代码,l n 列出第n行向后的10行
s:逐语句
n:逐过程
display tmp : 查看变量tmp的值 (常显示,并且会在行首形成编号)
display &tmp : 查看变量tmp的地址 (常显示,并且在行首形成编号)
undisplay x : 不显示编号为x的变量
b n : 在第n行设置断点
info b : 查看断点信息
d x : 删除编号为x的断点
disable x : 禁用编号为x的断点
enable x : 启用编号为x的断点
bt : 查看调用堆栈
set var tmp = 10 : 将代码中tmp的值改为10

Linux项目自动化构建工具make 和 makefile

在完成大型项目的时候,会有几万个源文件,我们不可能每个文件都去使用指令gcc,,,去编译。
所以这路借助make和makefile来完成
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建

Linux的开发工具_第4张图片

进度条程序的编写

铺垫一下:
c程序都会默认打开三个输入输出流:stdin(标准输入),stdout(输出),stderr(标准错误)。
其实显示器上的内容都是字符串。
从键盘中读取的内容有全部都是字符串。
Linux的开发工具_第5张图片

    #include
  2 #include  //fflush,usleep的头文件                                                                                                  
  3 int main()                             
  4 {                                      
  5   char buff[101] = {0};                
  6   char ch[] = "/|\\-";                 
  7   int i = 0;                           
  8   for(i = 0; i < 100; i++)             
  9   {                                    
 10     buff[i] = '#';                     
 11     printf("[%-100s][%d%%][%c]\r",buff,i+1,ch[i%4]);//\r的作用是回到行首
 12     fflush(stdout); //刷新显示器                                         
 13     usleep(70000); //停屏 单位是纳秒                                     
 14   }                                                                      
 15                                                                          
 16   return 0;                                                              
 17 }                                                                        
~       

你可能感兴趣的:(Linux,linux,vim,运维)