【hello Linux】Linux开发工具

news2025/1/26 15:30:38

目录

1. vim:文本编辑器

1.1 各种模式的切换

补充:ctrl r命令

1.2 命令模式的操作

1.3 插入模式的操作

1.4 底行模式的操作

1.5 配置vim环境

1.6 配置亲属关系

2. gcc/g++:编译器

2.1 预处理:

2.2 编译:

2.3 汇编:

2.4 链接:

2.5 执行可执行程序

2.6 函数库

3. gdb:调试器

3.1 调试:gdb 可执行文件 

3.2 调试命令的使用


 

Linux🌷 

在windows系统平台下,我们可以使用vs2019等软件进行代码的编写、编译、调试以及运行,这种软件都是集成开发软件。

那么在Linux系统下呢?我们

编写代码使用:vim(文本编辑器);

编译代码使用:gcc/g++(编译器);

调试代码使用:gdb(调试器);

下面系统的介绍下各种工具的使用。

1. vim:文本编辑器

vim是一种文本编辑器,从定位上来说和记事本没有任何差别,但经过配置后的vim却能够很好的帮助我们在Linux系统环境下进行代码的编写。

 

 vim还是一种多模式的编辑器。

我们常常使用以下三种模式完成代码的编写:命令模式、插入模式、底行模式。

1.1 各种模式的切换

1. 我们刚进入vim时默认是在命令模式的;

2. 按键盘上的 i 键便可以进入插入模式;

3. 按左上角的Esc键便可以返回到命令模式;

4. 在命令模式下按 shift : 进入底行模式;

5. 在底行模式下输入 :wq! 回车退出vim。

其中 w:保存,q:退出,!:强制

下面一个图解进行更好的梳理:

 补充:ctrl r命令

按住ctrl r后会出现上述情况,我们之间输入原先命令的部分片段,则会出来原先全部的命令

1.2 命令模式的操作

移动光标:

上下左右(键盘),HJKL  左下上右

shift ^   光标定位至行首; shift $  光标定位至行尾

gg   光标定位至起始行; shift g   光标定位至末尾行;12 shift g   光标定位至12行;

w    向后移动一个单词;  b   向前移动一个单词; (这两个并不绝对是以一个单词为单位的)

文本操作:

yy    复制当前行(光标所在的位置)

2yy  复制当前行及其之后的一行(支持多行操作)

p      粘贴

np    一次重复粘贴n行

u      撤销

dd    剪切当前行(光标所在的位置)

nyy  剪切当前行及其之后的n-1行(支持多行操作)

shift ~    大小写转换(光标所在的字符)若:大写—>小写;小写—>大写

x      删除光标所在位置的字符(支持nx)

X     删除光标所在位置的前一个字符(支持nX)

r      替换当前光标所在的字符(支持nr—>所在+后n-1都替换为同一字符)

shift r   直接进入替换模式,进行多个内容的替换,按Esc返回命令模式

ctrl r     撤销刚刚的撤销

 

1.3 插入模式的操作

i   在光标所在处进入

a  在光标所在处的右一字符处进入

o  在光标所在行下建一空行进入,光标在新建行的行首

 

1.4 底行模式的操作

set nu        调出行号

set nonu    取消行号

w               保存

q                退出

!                 强制

vs 文件名   多文件操作

ctrl w w   在两屏中切换光标

在底行模式下wq退出的是光标所在屏

1.5 配置vim环境

在没有配置vim环境时,打开使用vim编辑代码则相当于使用记事本,

配置了vim环境则是在编写代码时有适当的缩进、高光、括号配对等。

可以使用如下命令进行简单环境的配置(足够使用):

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

注意:

要在自己的用户下进行配置

出现如下所示则代表成功 

 vim配置在自己的文件中,只会影响自己的操作;

对于root用户也一样,root有自己的vim配置文件,只影响自己。

1.6 配置亲属关系

在root用户下使用下面命令:

vim /etc/sudoers

 对文件进行如下配置:

 此后我们便可以使用sudo命令(提升普通用户的权限):

 

2. gcc/g++:编译器

编译器主要完成四个功能:预处理、编译、汇编、链接。

下面看一下它们的具体功能:

预处理:头文件的展开、宏替换、条件编译、去掉注释;

编译:检查代码是否有语法错误,将代码翻译成汇编语言;

汇编:将汇编代码转化为机器可识别的二进制代码文件;

链接:生成可执行文件或库文件。

下面看一下它们到底怎么使用吧!

2.1 预处理:

 -E      开始进行翻译,完成预处理之后停下来!

 -o       指定特定的文件

hello.i  .i后缀表已经过预处理的C原始程序

2.2 编译:

 -S      开始进行翻译,完成编译之后停下来!

 -o       指定特定的文件

hello.s  .s后缀表已经过编译的C原始程序,生成汇编代码了

2.3 汇编:

 -c      开始进行翻译,完成汇编之后停下来!

 -o       指定特定的文件

hello.o  .o后缀表已经过汇编的C原始程序,生成二进制的目标代码了

2.4 链接:

hello  链接生成的可执行程序

2.5 执行可执行程序

 2.6 函数库

函数库一般分静态库动态库两种。

静态库:.a后缀
静态库是指编译链接时, 把库文件的代码全部加入到可执行文件中, 因此生成的文件比较大, 但在运行时也就不再需要库文件了。其后缀名一般为“.a”
动态库:.so后缀
动态库与之相反, 在编译链接时并没有把库文件的代码加入到可执行文件中, 而是在程序执行时由
运行时链接文件加载库, 这样可以节省系统的开销。动态库一般后缀名为 “.so”

 

ldd 可执行程序:

 由此可知,gcc默认是以动态链接方式,形成可执行程序

3. gdb:调试器

3.1 调试:gdb 可执行文件 

 由上述命令我们便可以进入到Linux系统下的调试功能

程序的发布方式有两种, debug 模式和 release 模式
Linux gcc/g++ 出来的二进制程序,默认是 release 模式
要使用 gdb 调试,必须在源代码生成二进制程序的时候 , 加上 - g 选项

 3.2 调试命令的使用

run 直接执行(相当于vs中的F5) 

list 显示代码(l也可用于显示代码)(一般是从main函数上下行进行显示),若后面直接跟 l 则续上之前显示的行继续显示

l 行号(从此行号上下行显示代码)

 b 行号(给第几行打断点)

s 逐步执行(相当于F11)

n 逐过程执行(相当于F10) 

display 要显示的内容:常显示

undisplay 行号:取消常显示

p/P 要显示的内容:只显示一次

 finish (结束当前的函数,跑完函数并退出,类似于break)

 continue (直接到达下一个断点处)

 info b (显示断点信息)

d 行号(删除对应行处的断点)

disable 行号(禁用对应行处的断点)

enable 行号(打开对应行处的断点) 

 until 行号(在一个函数内部直接到达指定行)

 set var 要修改的内容(修改对应的值)

 bt (查看栈参数)

 

坚持打卡!😃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gsum: A General Framework for Guided Neural Abstractive Summarization 论文笔记

Gsum: A General Framework for Guided Neural Abstractive Summarization 论文笔记 Year: 2021 Venue: NAACL Institution: CMU Code: https://github.com/neulab/guided_summarization Overview 这篇文章力求解决的问题是如何控制文本摘要生成,尤其注重可信度方…

floyed 4.9

今天是周末,也就不为难自己了,学习了一下floyed算法(确实简单哈哈),这个算法也是最短路的一种 在一副图中,a到b的距离可能不是直接的ab边最短,这时候就要用到floyed的思想了,可能是a到c到b比直接a到b最短.所以我们要枚举一边才可以知道a到b的最短的路线 这就是floyed的大概 …

7年测试,从功能测试到测试开发,我总算证明了自己

我感觉我是一个比较有发言权的人吧,我在测试行业爬模滚打7年,从点点点的功能测试到现在成为测试开发工程师,工资也翻了几倍; 个人觉得,测试的前景并不差,只要自己肯努力;我刚出来的时候是在鹅厂…

FL Studio21中文版D编曲数字音乐工作软件

随着现在人们的生活水平不断提高,我们的精神生活也越来越丰富,对于现在的年轻人来说,DJ舞曲是一个较受欢迎的领域,有许多年轻人对DJ这个职业感兴趣,想要深入了解DJ编曲这份工作,那么今天我们就来说一说DJ编…

聊聊ChatGPT无法取代的7个工作

ChatGPT——全世界都在谈论的非常流行的人工智能工具。自从 2022 年 11 月 30 日推出以来,ChatGPT 就被证明是执行复杂任务并简化它们的一体式工具。无论是通过 UPenn 的沃顿商学院 MBA 考试,撰写常春藤盟校入学论文,还是完成简单的任务&…

Django自带的Admin后台中如何获取当前登录用户

需求背景 在使用Django快速开发一个IT 电脑、显示器资产管理小系统的时候,遇到一个问题是,当变更资产设备(新增、修改、删除)的时候,能记录是谁在什么时间进行的变更。 确认的是肯定是登录状态,但是在使用…

算法学习|动态规划 LeetCode 647. 回文子串、516.最长回文子序列

动态规划一、回文子串思路实现代码二、最长回文子序列思路实现代码(希望自己能总结出做过的动态规划题!要开始回顾之前刷过的题了) 一、回文子串 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或…

回收站数据恢复的方法技巧

​最近有网友反映将一些不经常使用的文件放入回收站后忘记了,清空回收站后想要再次使用文件却怎么都还原不了,想利用回收站数据恢复软件经恢复,咨询有哪些回收站数据恢复软件推荐,下面就给大家推荐回收站数据恢复软件使用方法。 …

数据库开发重点存档

2023春数据库开发复习 T1 视图可以用的几个场景? 不同表字段聚合、信息重组:当某个查询涉及多表连接、次数频繁时,可以创建视图隐藏底层表的复杂性,简化查询。 控制权限:根据不同用户的权限,可以建立不同…

星巴克创始人第三次重出江湖

星巴克创始人第三次出山,与中国有关 中国咖啡连锁竞争白热化 星巴克诞生于1985年,爷爷级的公司 趣讲大白话:百年老店不容易 【趣讲信息科技135期】 **************************** 将心注入 星巴克创始人自传 创始人的激情、执行力、团队建设很…

HttpRunner3.x 源码解析(5)-runner.py

首先看下生成的pytest文件 from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCaseclass TestCaseLogin(HttpRunner):config (Config("登录成功").variables(**{"password": "tester", "expect_foo2": "co…

17_I.MX6ULL_内部RTC

目录 I.MX6U RTC简介 相关寄存器 实验源码 I.MX6U RTC简介 实时时钟是很常用的一个外设,通过实时时钟我们就可以知道年、月、日和时间等信息。因此在需要记录时间的场合就需要实时时钟,可以使用专用的实时时钟芯片来完成此功能,但是现在大多数的MCU或者MPU内部就已经自带了…

一、Locust快速 入门

1 . 介绍 Locust 是一种易于使用、可编写脚本且可扩展的性能测试工具。 您可以在常规 Python 代码中定义用户的行为,而不是被困在 UI 或限制性领域特定语言中。 这使得 Locust 可以无限扩展并且对开发人员非常友好。 用普通的旧 Python 编写测试场景 如果您希望…

【华为OD机试】1038 - 学英语

文章目录一、题目🔸题目描述🔸输入输出🔸样例1二、代码参考作者:KJ.JK🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x…

基于价值认同的需求侧电能共享分布式交易策略(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

惊喜开箱!品牌可以从 Ledger 引领的顶级体验之一中学到什么?

Ledger 是加密货币硬件钱包的领先供应商,它通过进入 The Sandbox 并创建游戏化体验来扩大其教育计划,从而在虚拟世界中掀起波澜。通过在这个令人兴奋的新空间打造自己的品牌,Ledger 正在接触更广泛的受众,并以有趣的方式与人们互动…

回收站清空了怎么恢复?快来get实用方法!

案例:回收站清空了怎么恢复? 【真的栓Q了,我刚点击回收站,不知道按错了什么,回收站被清空了,大家有什么方法可以恢复回收站里的文件吗?请大家给我出出主意吧!谢谢啦!】 …

不愧是比亚迪!

最近这段时间,因为我自己准备买车嘛,然后先后去试驾了比亚迪汉、小鹏P7i、蔚来ET5、智己LS7这几辆车,接下来想分4篇文章依次给大家分享一下这四个品牌的车试驾体验。比亚迪汉小鹏P7i蔚来ET5这四个品牌总共花了三天时间,也算是比较…

STC89C52定时器的简介

一、序言 针对于STC89C52RC而言,这个芯片内部包含了三个定时器——T0、T1和T2,他们的中断优先级分别是1、3和5。 怎么还有一个定时器2呢?博主也是今天整理这篇博客的时候,翻阅芯片手册才发现的。如果说,我们经常用的…

00后面试华为软件测试工程师,竭尽全力拿到15K。。。。。

不废话,直接重点 一般软件测试的面试分为三轮:笔试,HR面试,技术面试。 前两轮,根据不同企业,或有或无,但最后一个技术面试是企业了解你“行不行”的关键环节,每个企业都会有的。 在…