【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分屏,用于多文件操作

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文件对应的命令前加上@符号,

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

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

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

相关文章

蓝桥杯-循环节长度

两个整数做除法,有时会产生循环小数,其循环部分称为: 循环节。比如,11/136>0.8461553846153..... 其循环节为[846153] 共有 6 位。下面的方法,可以求出循环节的长度。请仔细阅读代码,并填写划线部分缺少的代码。 注…

redis—Zset有序集合

目录 前言 1.常见命令 2.使用场景 3.渐进式遍历 4.数据库管理 前言 有序集合相对于字符串、列表、哈希、集合来说会有一-些陌生。它保留了集合不能有重复成员的 特点,但与集合不同的是,有序集合中的每个元素都有-个唯- -的浮 点类型的分数(score) …

20240126收获

el-table比较常见的需要跳转column的场景,目前遇到三种,一种是前面列变成序号,用的是typeindex和:index来设置索引,第二种是变成多选,用的是typeselect和在table上加上select-change事件,第三种…

故障脚本的重要作用:预防、诊断与恢复

故障脚本是在信息技术和计算机领域中广泛使用的一种自动化工具,它们的主要目的是预测、诊断和修复系统或软件中的故障。这些脚本在现代技术环境中扮演着至关重要的角色,本文将介绍故障脚本的主要作用。 一、预防性作用 监控和预警 故障脚本可以用于监控系…

web应用课——(第一讲:html基础标签)

目录 一、html文件结构 二、文本标签 三、图片 四、音频和视频 五、超链接 六、表单 七、列表 八、表格 九、语义标签 十、特殊符号 一、html文件结构 <html>标签&#xff1a;表示一个 HTML 文档的根&#xff08;顶级元素&#xff09;&#xff0c;所以它也被…

vue3-hand-mobile

当我写完手势移动事件后&#xff0c;我又通过svg的方法添加了一段文字和polygon。当我在这个蓝色的polygon上滑动手势的时候&#xff0c;会报错。 可能这个bug只是我个人的代码导致的。但是我觉得vue3-hand-mobile插件的这一段代码写的有问题。 我通过circular-json库修复了这…

在Windows中如何格式化硬盘?这里提供了详细的步骤

格式化硬盘意味着擦除硬盘上的任何信息和设置文件系统,以便操作系统可以从硬盘读取数据并将数据写入硬盘。如果你计划在Windows中使用硬盘,则需要格式化硬盘。 如何在Windows中格式化硬盘 按照以下简单步骤在Windows 11,Windows 10,Windows 8,Windows 7,Windows Vista或…

3d模型上的材质怎么删除---模大狮模型网

在大多数3D软件中&#xff0c;可以通过以下步骤来删除3D模型上的材质&#xff1a; 选择要删除材质的模型&#xff1a;首先&#xff0c;从场景中选择包含目标材质的模型。可以使用选择工具或按名称查找模型。 进入编辑模式&#xff1a;将模型切换到编辑模式。这通常需要选择相应…

私有化部署pdf工具箱

功能简介 用于合并/拆分/旋转/移动PDF及其页面的完全交互式GUI。 将多个 PDF 合并到一个生成的文件中。 将 PDF 拆分为多个文件&#xff0c;并按指定的页码或将所有页面提取为单个文件。 将 PDF 页面重新组织为不同的顺序。 以 90 度为增量旋转 PDF。 删除页面。 多页布局…

专业143总分420+复旦大学957信号与系统考研经验电子信息与通信工程

本人本科排名中流211院校报考复旦。今年考研成绩出来&#xff0c;专业课143&#xff0c;符合自己预估&#xff0c;数学有点拉胯&#xff0c;英语有点超预期&#xff0c;政治正常&#xff0c;总分420&#xff0c;顺利考上复旦大学电子信息&#xff0c;以下总结一些自己去年的复习…

张维迎《博弈与社会》纳什均衡与囚徒困境博弈(3)理性共识的问题

理性人不选择坏战略 上一节&#xff0c;我们借助囚徒困境博弈阐述了什么是占优均衡。在囚徒困境中&#xff0c;无论别人采取什么行动&#xff0c;每一个参与人都有一个特定的最优选择&#xff08;占优战略&#xff09;。也就是说&#xff0c;一个理性的参与人在做决策时&#x…

腾讯云轻量应用Ubuntu服务器如何一键部署幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏&#xff0c;在帕鲁的世界&#xff0c;玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活&#xff0c;也…

SAC(Soft Actor-Critic)理论与代码解释

标题 理论序言基础Q值与V值算法区别 SAC概念Q函数与V函数最大化熵强化学习&#xff08;Maximum Entropy Reinforcement Learning, MERL&#xff09;算法流程1个actor&#xff0c;4个Q Critic1个actor&#xff0c;2个V Critic&#xff0c;2个Q Critic 代码详解Actor网络理论中的…

Opencv——霍夫变换

霍夫直线变换 霍夫直线变换(Hough Line Transform)用来做直线检测 为了加升大家对霍夫直线的理解,我在左图左上角大了一个点,然后在右图中绘制出来经过这点可能的所有直线 绘制经过某点的所有直线的示例代码如下,这个代码可以直接拷贝运行 import cv2 as cv import matplot…

基于JavaWeb开发的服装网上商城系统【附源码】

基于JavaWeb开发的服装网上商城系统【附源码】 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#…

如何优化博客的内容和用户体验

在当今数字时代&#xff0c;博客成为了分享知识、展示个人专业能力和吸引读者的重要工具。然而&#xff0c;随着越来越多的博客涌现&#xff0c;如何优化博客的内容和用户体验成为了一个关键的问题。本文将为你提供一些有效的技巧&#xff0c;帮助你优化博客的内容和提升用户体…

Phoncent博客,探索Rie Kudan的GPT创作之举

近日&#xff0c;大家都在谈论日本作家Rie Kudan&#xff0c;她凭借其小说《东京共鸣塔》&#xff08;"Tokyo-to Dojo-to"&#xff09;荣获了日本极具声望的芥川奖。这本小说引起了广泛的讨论和思考&#xff0c;因为令人惊讶的是&#xff0c;Kudan在其中直接引用了人…

报告发布 | 聚铭网络参编的《数据安全风险评估实务:问题剖析与解决思路》正式发布

近日&#xff0c;由中国信通院、中国通信标准化协会主办&#xff0c;中国通信标准化协会大数据技术标准推进委员会承办的“数据资产管理大会数据安全论坛”在北京成功召开。会上正式发布了《数据安全风险评估实务&#xff1a;问题剖析与解决思路》报告&#xff08;以下简称“报…

事务、MVCC、锁

目录 事务MVCC锁 事务 四大特性&#xff1a;ACID 脏读&#xff1a;事务A读取到未提交事务B修改的数据 不可重复读&#xff1a;事务A修改了未提交事务B读取的数据 幻读&#xff1a;事务A增删了未提交事务B读取的数据 不可重复读与幻读都是读取的结果不同&#xff0c;前者侧重于…

什么是零知识证明?

Web3 的核心原则之一——透明度&#xff0c;也可能是其最大的缺点之一。没有人希望他们的所有在线活动&#xff08;从金融交易到个人身份数据&#xff09;都可供任何人公开查看。为了使区块链能够扩展并变得更容易访问&#xff0c;隐私必须成为首要任务。 零知识证明能够改变我…