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

【Linux】Linux环境基础开发工具使用

上篇博客我们学习了Linux权限相关知识,那么这节课我们来学习一下Linux环境基础开发工具使用吧~,主要包括yum、vim、gcc/g++的使用,以及Linux项目自动化构建工具。

目录

Linux软件包管理器--yum

yum是什么

yum相关操作

yum本地配置

Linux编辑器-vim的使用

vim的基本概念

vim的基本操作

vim命令模式命令集

vim底行模式命令集

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

预处理

编译

汇编

链接

静态库与动态库

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


Linux软件包管理器--yum

yum是什么

yum是一个软件下载安装管理的一个客户端,类似小米应用商店、华为应用商城。Linux中软件包可能有依赖关系,yum会帮助我们解决依赖关系的问题。

yum相关操作

yum安装三板斧:

查找:yum list | grep XXX

安装:[sudo/以root身份]yum install [-y] XXX

删除:[sudo/以root身份]yum remove [-y] XXX

yum本地配置

配置是在干什么呢?

yum会根据/etc/yum.repos.d/该路径下面的配置文件,来构成自己的下载链接,(根据OS版本,根据你要下载的软件),yum帮助我们下载,安装一般的机器,内置的链接地址是centos的官网,软件链接都是指向国外的。yum可能比较慢,所以需要配置。

如何配置呢?本质就是更改文件或者更改文件内容

例如,

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

这行命令的意思就是,把在阿里云远端的文件下载下来,命名为CentOS-Base.repo

在配置完成后,

清除缓存 yum clean all

生成缓存 yum makecache

升级更新 yum -y update

使用yum一般都要是联网的!

Linux编辑器-vim的使用

vim是一款多模式的编辑器,所谓多模式,是指插入模式、命令模式和底行模式

vim的基本概念

插入模式

只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令模式。该模式是我们后面用的最频繁的编辑模式。

命令模式

核心模式。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式。

底行模式

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,按shift+;(也就是:)即可进入该模式。

vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

$ vim test.c

不过有一点要特别注意,就是你进入vim之后,是处于【命令模式】,你要切换到【插入模式】才能够输入文字。

请注意,vim默认不会帮我们新建文件的,只有当保存时,该文件才会首次被创建。

【命令模式】切换至【插入模式】

输入a

输入i -- 加一个空格

输入o -- 另起一行

【插入模式】切换至【命令模式】

按ESC键即可。

【命令模式】切换至【底行模式】

shift+;其实就是输入:

退出vim及保存文件,在【正常模式】下,按一下「:」冒号键进入【底行模式】,例如

:w(保存当前文件)

:wq(保存并退出)

:q!(不保存强制退出)

为了方面理解记忆,画出模式切换图:

vim命令模式命令集

进入插入模式

按「i」切换进入插入模式,按“i”进入插入模式后是从光标当前位置开始输入文件;

按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

从插入模式切换为命令模式

按「ESC」键。

复制

n+yy:复制前n行( n:连续复制n行)

n+p:粘贴,当前光标的下一行(n:表示把指定内容粘贴n次)

n+dd:剪切/删除指定行、连续的多行

撤销上一次操作

u:撤销

ctrl+r:对历史撤销

移动光标

shift+4=$:将光标定位到当前行的结尾

shift+6=^:将光标定位到当前行的开始

gg:将光标定位到整个文本的最开头

shift+g=G:将光标定位到整个文本的最后一行

n+shift+g=nG:将光标定位到整个文本的任意一行

h,j,k,l:左、下、右、上,也可以带n。

(这四个字母快速记忆:h在最左边所以代表左,l在最右边所以代表右,k-king国王高高在上代表上,j-jump向下跳)

w:按照单词为单位进行光标后移

b:按照单词为单位进行光标前移

shift+`=~:大小写快速切换

shift+zz=ZZ:保存并退出

删除文字

n+x:删除光标后续的一个字符,可以一次删除n个(一行内)

n+shift+x=X:删除光标前的一个字符,可以一次删除n个(一行内)

替换

n+r:对光标指定的位置,进行一个字符的替换,可以一次替换多个

shift+r=R:进入替换模式,直接进行文本替换

vim底行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

w:保存

q:退出

wq:保存并退出

!:强制

set nu、nonu:打开行号、去掉行号

/关键字:做搜索

!command:不退出vim,可以进行shell命令的执行,方便常用函数查看

:vs filename分屏,用于多文件操作,ctrl+ww切换屏幕

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

gcc编译器只能用于编译C程序,g++编译器既可以编译C程序,也可以编译C++程序。

程序的翻译过程主要包括四步:预处理、编译、汇编、链接。

预处理

gcc命令

gcc -E test.c -o test.i

这句代码是预处理,预处理会完成宏替换、去注释、头文件展开,条件编译等。-o test.i要挨在一起,生成test.i文件,-o指目标文件。从现在开始进行程序的翻译,预处理完成,就停下。

编译

gcc -S test.i -o test.s

这句代码是编译,将C语言变成汇编语言,从现在开始程序的翻译,编译完成就停下来

汇编

gcc -c test.s -o test.o

这句话是汇编,将汇编语言编译成二进制目标文件,从现在开始进行程序的翻译,汇编完成就停下来。

链接

gcc test.o -o my.exe

这句话是链接,形成可执行程序。

巧记命令:ESc(按顺序,键盘左上角的ESC键,特别记忆一下c是小写),形成的文件是iso(按顺序,镜像文件后缀就是iso)。

静态库与动态库

在windows中,动态库以.dll为后缀,静态库以.lib为后缀;而在Linux中,动态库以.so为后缀,静态库以.a为后缀。

静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。

动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。

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

make是一条指令,makefile是一个文件,两个搭配使用,完成项目自动化搭建。make会根据makefile的内容,完成编译/清理工作。

上图中,有这样一行.PHONY:clean.PHONY:XXX,XXX对应的方法,总是要被执行的。

现在抛出两个问题并给予回答:

a.为什么makefile对最新的可执行程序,默认不会重新生成呢?

提高编译效率。

b.makefile怎么知道我的程序需要被编译了呢?

比较可执行文件的最近修改时间和源文件最近修改时间,如果可执行文件的最近修改时间更靠近当前时间,那么需要重新编译,否则,不需要重新编译。

几个符号

文件依赖性

make/makefile会自动根据文件中的依赖关系,进行自动推导,帮助我们执行所有相关的依赖方法,但必须注意的是,所要形成的目标文件必须放在第一行(即上图中的2、3行),剩下的3-8行可以乱序。

也就是说,当执行到第1行时,需要依赖文件code.o,但是这时还没有,就需要去下面找,第3行形成了code.o,但是所需的code.s还是没有,这就需要依次往下类推,直到遇到code.c,code.c是存在的。

支持变量替换

makefile支持变量定义,就类似于C语言中的一样,这非常方便以后的修改!

我们在进行make/makefile时,会打印出对应的命令:

如果我们不想打印出这样的命令,可以在makefile文件对应的命令前加上@符号,

依赖方法也可以有多行,(加上@是为了不打印出对应的执行语句)

Linux调试器-gdb使用

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

下面介绍几个常用的gdb命令:

1.quit/q

退出gdb

2.list/l - 查看文件内容

l 文件名:行号/函数名,l 行号/函数名

3.b - 打断点

b 文件名:行号/函数名,b 行号/函数名

4.info/i - 查看断点

info b / i b

5.d - 删除断点

d 断点编号

6.enable/disable - 使能/失能断点

enable/disable 断点编号

7.next/n - 逐过程,相当于F10

8.step/s - 逐语句,相当于F11

9.print/p - 查看变量内容&&地址

p a , p &a

10.display a / &a

常显示变量值,可以观察变化情况,类似VS中的监视窗口

11.undisplay 编号

取消某个常显示变量值

12.continue/c - 运行至下一个断点处

13.finish - 运行结束所在函数,就停下来

14.until - 跳转至指定行,中间的代码都是运行了的

15.set var - 修改变量的值

16.bt - 查看各级函数调用及参数

http://www.cnnetsun.cn/news/1955316.html

相关文章:

  • AutoSpotting终极指南:如何在AWS上节省90%EC2成本
  • Payment扩展开发:如何自定义支付网关和添加新支付渠道
  • 沙特阿拉伯王储主持的沙特公共投资基金(PIF)董事会通过并公布PIF 2026-2030年战略
  • AZ-104-MicrosoftAzureAdministrator:从零开始的Azure管理员终极指南
  • 基于PaddlePaddle与PaddleHub的OCR实战:从环境搭建到结果解析
  • 全面掌握FanControl:Windows风扇控制终极指南,告别噪音与高温困扰
  • A2UI 技术详解:下一代自适应用户界面框架
  • 一文讲清,TPM管理是什么意思?TPM管理的核心内涵与目标
  • 告别选择困难!从电路设计角度拆解:买USB HUB到底该看哪些参数?
  • 20个现代Web UI组件原型完全指南:打造专业级用户界面
  • STM32物联网开发避坑指南:MQTT连接Broker失败的10个常见原因及解决办法
  • 从零构建企业级流程图引擎:OXOYO/X-Flowchart-Vue 架构解密与实战指南
  • YOLOv8断点恢复技巧:修改epochs后如何确保训练继续正确进行
  • mybits-plus一个查询中使用多个queryWrapper | 多次使用单个queryWrapper【2025-09-26】(where条件子查询的条件与外层查询的条件相同)
  • c++类和对象以及模板
  • 题解:洛谷 P10059 Choose
  • 面向软件测试从业者的脑机接口(BCI)实战入门:Neuralink API与测试关键指标深度解析
  • 革命性测试体验:jest-extended 70+个强大匹配器完全指南
  • Tangram-Android性能优化终极指南:构建流畅滚动体验的10个技巧
  • 为什么你的团队用不好Copilot?——5个被忽略的敏捷上下文适配陷阱(含Jira+GitHub Actions自动化流水线配置模板)
  • KotlinPoet社区贡献指南:如何参与开源项目并提交你的第一个PR
  • 如何快速上手Multitarget-tracker:5分钟入门多目标跟踪
  • 1000_Projects安全工具开发:从端口扫描器到密码破解器完整指南
  • 别再只用密码了!聊聊身份认证三要素:从USB Key到生物识别的实战选择
  • GitHub汉化插件终极指南:3分钟实现GitHub界面全中文化
  • 【实战指南】VSCode Python项目内模块导入:从PYTHONPATH配置到IDE环境变量全解析
  • ViGEmBus虚拟手柄驱动:Windows游戏控制的终极解决方案
  • Kandinsky-5.0-I2V-Lite-5s参数详解:随机种子复现机制与提示扩写功能实测效果
  • 基于AliceMind基础模型的春联定制方案:支持节日/行业/地域关键词扩展
  • 欧拉角、quat四元组和旋转矩阵的关系