当前位置: 首页 > news >正文

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种模式
在这里插入图片描述
命令模式下的主要操作:
早期的键盘是没有上下左右键的: 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后面指定生成的文件名
在这里插入图片描述

动态库和静态库

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

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

在这里插入图片描述

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是一个文件,两个搭配使用,完成项目自动化构建

在这里插入图片描述

进度条程序的编写

铺垫一下:
c程序都会默认打开三个输入输出流:stdin(标准输入),stdout(输出),stderr(标准错误)。
其实显示器上的内容都是字符串。
从键盘中读取的内容有全部都是字符串。
在这里插入图片描述

    #include<stdio.h>
  2 #include <unistd.h> //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 }                                                                        
~       

相关文章:

  • Cadence Allegro Vertex功能介绍使用方法Vertex与Slide的区别图文教程
  • Qt5开发从入门到精通——第九篇六节( Qt5 文件及磁盘处理—— 监视文件和目录变化)
  • 接收节点无线广播发送的数据,并printf打印出来(含核心代码)_物联网挑战赛第四届第一题
  • 【CSDN:国庆活动】——“问答”里的成长记录
  • WEB安全之DIV CSS基础(四):三种定位和堆叠顺序
  • C++ -------- 类型转换
  • 【youcans 的图像处理学习课】11. 形态学图像处理(中)
  • 大二数据库实验-MySQL语句(Employee、Department、Salary)
  • 实验3 数据文件操作和异常处理
  • 【微信小程序】button和image组件的基本使用
  • 【吴恩达深度学习】——NLP和Word Embedding
  • 图解mysql(五)——日志篇
  • 图解mysql(六)——内存篇
  • 【数据库原理 | MySQL】 前世今生(入坑篇)
  • Python脚本在win10下开机自启动
  • 收藏网友的 源程序下载网
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【comparator, comparable】小总结
  • 11111111
  • iOS 系统授权开发
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux各目录及每个目录的详细介绍
  • unity如何实现一个固定宽度的orthagraphic相机
  • 程序员最讨厌的9句话,你可有补充?
  • 从重复到重用
  • 分享几个不错的工具
  • 关于字符编码你应该知道的事情
  • 小李飞刀:SQL题目刷起来!
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • (02)Hive SQL编译成MapReduce任务的过程
  • (14)Hive调优——合并小文件
  • (C语言)二分查找 超详细
  • (pojstep1.1.2)2654(直叙式模拟)
  • (zt)最盛行的警世狂言(爆笑)
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计大学生兼职系统
  • (论文阅读40-45)图像描述1
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一) springboot详细介绍
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)创业家杂志:UCWEB天使第一步
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core跨平台微服务学习资源
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net6Api后台+uniapp导出Excel
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .sys文件乱码_python vscode输出乱码
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @EnableAsync和@Async开始异步任务支持