Linux基础开发工具(yum、vim、gcc/g++、Makefile、gdb、git)

news2024/11/25 6:36:47

目录

一. yum

yum list

yum install 

yum remove

二. vim

命令模式

底行模式

多文件操作

批量注释

三. gcc/g++

四. make/Makefile

五.gdb

六. git

git clone

git commit

git push


一. yum

作为一款操作系统,免不了需要一些定制化的内容,这就需要我们在Linux系统中自行安装软件,而想要在Linux系统中安装软件,常见的方法有三种:源代码安装、rpm安装、yum安装

而相较而言,yum通过分析PRM的标头数据后,根据各软件的相关性制作出属性依赖时的解决方案,然后可以自动处理软件的依赖属性问题,以解决软件安装或删除与升级的问题

 而yum使用起来非常的简单,简单来说,就是yum list、yum installl、yum remove这三条指令

yum list

通过yum list命令可以罗列出当前一共有哪些可安装的软件包,由于可以安装的安装包有很多,我们可以通过grep命令来进行筛选

yum list | grep python

从前往后依次为软件名称及其后缀(例如x86_64是指64位系统的安装包,i686表示32位,而noarch表示该软件可以在不同的cpu下安装)、版本号及操作系统发行版的版本(el7)、软件源的名称(epel)


yum install 

首先,安装软件时,需要向系统目录中写入内容,因此,我们需要在root用户下进行安装或者使用sudo命令。同时,当在安装一个软件时,不能同时安装其他软件,否则就会发生报错。

 

在安装的过程中,我们可以看到安装包的大小等,同时需要我们进行确认(y/d/N),而在显示Complete就表示安装完成了

yum remove

删除软件,同样需要我们在root用户下或者使用sudo

 

也同样需要确认以及以Complete作为结束标志

 


二. vim

与我们之前学习C/C++时所使用的Vistual studio这种集成开发环境不同,vim仅仅是一款代码编辑器。

vim是多模式编辑器,总共包含12种模式,我们目前先讲解三种基础的模式——命令模式、插入模式和底行模式

首先,我们可以先将现有的文件使用vim打开

 同时,若是该文件不存在,vim会先创建一个文件,之后将其打开

而我们在进入之后,所处的模式便是命令模式

我们可以在命令模式输入 i 进入插入模式(从光标处开始,也可以输入a或o来进入插入模式,a表示从光标的下一个位置输入,o表示新插入一行后开始输入)。或是输入 :(即shift+ : 键)进入底行模式。同时,在这两种模式中,我们可以通过Esc键来退回命令模式

这三种模式中,只有插入模式我们才能够进行输入,而插入模式也只能进行输入

命令模式

 而在命令模式下,我们就可以进行很多操作

首先,想要控制光标的移动,我们当然可以使用键盘右侧的上下左右来控制,同时,我们也可以使用hjkl来控制(h左、j下、k上、l右)。

除开上下左右的移动方式,我们也可以进行跳转,例如

gg 移动到开头、G(shift+g)移动到最后、$ 移动到行尾、^ 移动到行首、w 跳转至下个词的开头、e 跳转到下个词的词尾、b 跳转到上个词的开头、ctrl+b 屏幕后移一页、ctrl+f 屏幕前移一页、ctrl+u 后移半页、ctrl+d 前移半页

我们也可以在命令模式下对文本进行操作

x 删除单个字符、#x 删除#个字符(加shift则向前删除(不包含光标处字符))、dd 删除该行、#dd 删除#行

yw 复制从此开始的字、#yw 复制#个字、yy 复制行、#yy 复制#行、p 粘贴、#p 粘贴#行

r 替代字符、R 向后一直进行r操作,Esc退出

u 撤回、ctrl+r 反撤回

底行模式

在我们进入底行模式后,所输入的内容会显示在右下角的 : 处

set nu 列出行号

#+数字 跳转到某一行

 

 wq w表示保存,q表示退出,可以单独使用,在无法退出或保存的情况下我们可以在后面加上!

 

:!+命令 在不退出vim的情况下执行命令

 

在底行模式下所进行的操作仅在本次vim中生效

多文件操作

在底行模式下,我们可以输入vs+文件名来进行多文件操作,同时,就像vim一样,若是不存在该文件,也会先进行文件的创建

而在多文件操作下,我们的光标处于哪个位置,便对哪个文件进行操作,我们可以通过ctrl+ww来进行文件的切换

批量注释

若是想要进行批量注释,我们需要先进入视图模式(ctrl+v)(仅做批量注释处理,不多做讲解)

,之后通过 hjkl 来批量选择需要注释的区域、

之后输入shift+i进入插入模式,之后输入 // 后 Esc进行批量注释

我们也可以使用同样的操作,在选择注释区域后按 d 来取消注释


三. gcc/g++

gcc : c语言编译器        g++ : c++编译器

gcc [选项] 要编译的文件 [选项] [目标文件]

或是 gcc [选项] [目标文件] [选项] 要编译的文件

目标文件可以省略,默认生成名为a.out的可执行文件

 

而编译分为预处理、编译、汇编、连接

而gcc/g++也是遵循这四个步骤,我们可以通过选项来将编译细化成这四个步骤

gcc -E : 预处理

 

在预处理后的文件尾部,我们可以看到进行了 去注释、宏替换、条件编译,同时,在上面的800多行中,包含了头文件的展开

gcc -S  编译

 

gcc -c 汇编

 

由于是转变成二进制文件,就不做展示了

gcc 连接

 

在连接结束后文件就是可执行文件了

而在命令尾部添加-static选项会进行静态连接,而不加选项则默认为动态连接

 

而我们可以看到,使用静态连接的文件大小明显大于静态连接 

同时,gcc/g++生成的文件默认为release模式,想要debug模式则需要加上 -g 选项


四. make/Makefile

make是一个命令,Makefile是一个文件

当执行make时,make会在当前的目录下查找Makefile/makefile这个文本文件,而该文件里记录了源代码如何编译的详细信息。make会自动地判别源代码是否经过变动了,而自动更新执行文件。

而在Makefile文件内部,包括依赖关系和依赖方法

举个例子

在该文件中,第一行为依赖关系,表示proc依赖于proc.c,porc被称为目标文件。同时,就像第五行一样,可以一个文件不依赖任何文件

第二行为依赖方法,在执行make命令时,会在Makefile文件中自顶向下寻找第一个目标文件, 若是所依赖的文件存在但目标文件不存在或是依赖的文件的修改时间比目标文件晚,则执行依赖方法。而我们可以通过stat命令来查看两个文件的Access(访问)、Modify(内容修改)、Change(属性修改)时间,来判断是否需要更新

 否则则会发出这样的提示

若是我们不想系统进行提示,而是无论是否需要新建或更新目标文件,我们总是去执行依赖方法,我们就需要使用到譬如第四行中的.PHONY关键字

.PHONY这个关键字,被其修饰的目标文件称为伪目标,而伪目标总是会被执行

若是我们不想执行第一个依赖方法,我们可以在make后面加上想要新增或更新的目标文件的名字

到此,我们就可以来简单的实验一下 

 而若是该目标文件所依赖的文件不存在(这里为proc.c),需要在当前Makefile文件中寻找proc.c作为目标文件的依赖关系来新建一个proc.c文件,以此类推。

例如 

 在这种情况下,我们习惯于将test.c和proc.c编译为test.o以及proc.o(test.h作为头文件在编译过程中展开),之后将它们与动态库进行合并链接

因此,我们可以将Makefile写作这样


五.gdb

Linux调试器,需要注意在gcc编译时需要debug版本

在介绍各条命令时我们以vs作比对

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。

list/l 函数名:列出某个函数的源代码。

break(b) 行号:在某一行设置断点

break 函数名:在某个函数开头设置断点

info或i break :查看断点信息。

delete或d breakpoints:删除所有断点

delete breakpoints n:删除序号为n的断点

disable breakpoints:禁用断点

enable breakpoints:启用断点

r或run:运行程序。(F5)

continue(或c):从当前位置开始连续而非单步执行程序(F5)

n 或 next:单条执行。(F10)

s或step:进入函数调用(F11)

finish:执行到当前函数返回,然后挺下来等待命令

print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数

p 变量:打印变量值。

display 变量名:跟踪查看一个变量,每次停下来都显示它的值

undisplay:取消对先前设置的那些变量的跟踪

until X行号:跳至X行

breaktrace(或bt):查看各级函数调用及参数

info(i) locals:查看当前栈帧局部变量的值

quit:退出gdb


六. git

git clone

在gitee或者github中,我们可以新建仓库并获取它的链接,我们就可以使用git clone命令将该仓库克隆到本地

在输入你的git用户名以及密码并克隆成功后,便可以在该目录下找到一个以你仓库名为名的目录

要注意,若是第一次操作,需要配置一下邮箱和用户名 

git config --global user.email ""

git config --global user.name ""

git commit

当我们在该目录下新建文件之后,我们就可以先通过git add . 来将其添加到暂存去之后通过git commit 命令提交

git commit . -m " "        -m表示同时提交日志,而在双引号内我们便需要填入我们的日志

 

git push

在提交之后,我们便可以使用git push 命令将其同步到远端服务器上

在输入账号密码之后,便可以在gitee或github查看更新 

在该目录下,我们还可以看到这样一个隐藏文件:.gitignore

我们可以将不想提交到仓库的某些后缀的文件添加到该文件中

 

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

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

相关文章

工地为什么要做能耗监测?

随着全球气候变化的影响日益严重,环保意识逐渐深入人心,绿色建筑和节能减排成为了建筑行业的热门话题。而在建筑工地中,能耗监测成为了一项不可或缺的任务。本文将从以下几个方面来探讨工地为什么要做能耗监测。 首先,能耗监测有助…

【新星计划·2023】Linux目录与文件之权限意义讲解

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 通过上篇文章,我们知道了Linux 系统内文件的三种身份(拥有者、群组与其他人),还知道每种身份都有三种权限(rwx)…

【小梦C嘎嘎——启航篇】C++ 基础中的精华(一)

C 基础中的精华(一)😎 前言🙌1、namespace(命名空间)的经典知识1.1 namespace 日常如何正确使用?1.2 cout和cin来源,以及为什么相对于C语言中的printf和scanf有自动识别数据类型的功…

记一次用arthas解决springboot项目引入ShardingSphere后启动过慢的问题

背景: springboot项目中由于需要加入了ShardingSphere,之后就发现项目启动时间由之前的十多秒,延长到了70秒左右,去除ShardingSphere之后又恢复十多秒。一直以为是ShardingSphere的问题,网上搜罗了各种信息&#xff0c…

华安联大 | 蓝牙人员定位与UWB人员定位技术的应用案例分析

引言:随着物联网和定位技术的快速发展,蓝牙人员定位和UWB人员定位成为了人员定位领域的两种重要技术,两者都能在安防、工业、矿山、救灾、海航等领域得到广泛的应用。 在这有用户或会问蓝牙人员定位和UWB人员定位谁优谁劣,那么这…

2023.7.5例题:HCIA初级实验-2

一、题目要求: 1.在AR1左侧使用DHCP协议使左边可自动获得ip,左侧为192.168.1.0网段ip 2.右侧使用手动配置ip---右侧为192.168.2.0网段ip 3.telent客户端可远程登录到AR1 4.笔记本可以访问DNS获取文件 5.全网可达 二、解题步骤 第一步: 在AR1左侧使…

Charles 工具如何做断点测试?

在测试工作过程中,我们经常会在程序的某一行或者某一环节设置断点,在程序请求的过程中,修改断点处的参数、请求或者响应,借此定位问题,这就是所谓的断点测试。这类断点测试主要用于接口测试。 断点测试可以通过查看接…

高效制作财务报表的秘诀:探索财务报表工具和快速制作方法

财务报表是公司重要的财务信息输出形式,是反映公司经济活动和财务状况的一个重要工具。在日常业务运营中,财务报表可以帮助经理人与投资者了解企业的经营情况,为决策提供数据支持。 尽管Excel在制作各种类型的报表方面具有很好的功能&#xf…

记录力扣热题-100——从链表中找到刷题感觉

目录 一. 🦁 前言二. 🦁 解题过程1. 题目2. 思路一3. 思路二 三. 🦁 文末活动内容简介本书结构关于代码 一. 🦁 前言 狮子此前已经很久没有碰过算法题了,对于之前好不容易攒起来的题感又没了…最近准备面试&#xff0…

【Linux从入门到精通|开发工具】---gcc/g++的基本使用

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 接下来我们来学习L…

ROS:节点运行管理launch文件

目录 一、launch文件1.1概念1.2作用1.3实例1.新建launch文件2.调用 launch 文件 二、<launch>三、node四、include五、remap六、param七、rosparam八、group九、arg 一、launch文件 1.1概念 aunch 文件是一个 XML 格式的文件&#xff0c;可以启动本地和远程的多个节点&…

Redis从入门到精通【进阶篇】之对象机制详解

文章目录 0. 前言1. 详解1.1 redisObject 对象设计目的1.2 redisObject数据结构1.2 Redis 是如何使用redisObject1.2.1. 对象创建1.2.2. 对象引用计数1.2.3. 对象共享1.2.4. 对象的编码方式1.2.4. 对象的值 2. 总结2.1. redisObject对象如何实现数据共享和对象池技术&#xff1…

vue项目打包并配置到iOS工程中

一、修改vue项目的配置文件 将config文件夹里面的index.js中的 assetsPublicPath的值修改为“./” Webpack.prod.conf.js 中output添加参数publicPath:./ 在webpack.base.conf.js里 publicPath: process.env.NODE_ENV 生产 &#xff1f;./ config.build.assetsPublicPath :…

Compose编排工具应用

补充&#xff1a; Docker Compose 文件&#xff1a;Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。它使用 YAML 文件格式来描述应用程序的各个组件和其配置。以下是一个简单的示例&#xff1a; 在上面的示例中&#xff0c;我们定义了两个服务&#xff1a;web 和…

SpringBoot 之实现 PDF 添加水印的方案

简介 PDF&#xff08;Portable Document Format&#xff0c;便携式文档格式&#xff09;是一种流行的文件格式&#xff0c;它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下&#xff0c;我们需要对 PDF 文件添加水印&#xff0c;以使其更具有辨识度或者保护其版…

ChatGLM2-6B的P-Tuning微调

ChatGLM2-6B&#xff1a;https://github.com/THUDM/ChatGLM2-6B 模型地址&#xff1a;https://huggingface.co/THUDM/chatglm2-6b 详细步骤同&#xff1a;ChatGLM-6B的P-Tuning微调详细步骤及结果验证 环境可复用ChatGLM-6B&#xff08;上述部署教程&#xff09;&#xff0c;…

简要介绍 | 知识蒸馏:轻量级模型的智慧之源

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对知识蒸馏进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 知识蒸馏&#xff1a;轻量级模型的智慧之源 A Gentle Introduction to Hint Learning & Knowledge Distillation | by LA Tran | …

Some about RMI

&#xff08;备份防止忘掉&#xff09; 一开始编译javac所有文件 这个问题概率遇到 解决方法&#xff1a; 然后java编译impl文件 直到出现bound in registry这一句 然后这个cmd不要关掉 重新在eclipse这个类的工作路径打开一个cmd 看到这个之后回到eclipse里面运行app这个文…

数据结构--树的性质

数据结构–树的性质 树的常考性质 常见考点 1 : 结点数 总度数 1 \color{red}常见考点1:结点数总度数1 常见考点1:结点数总度数1 结点的度 ―― 结点有几个孩子(分支) 树的度 ―― 各结点的度的最大值 m叉树 ―― 每个结点最多只能有m个孩子的树 常见考点 2 : 度为 m 的树、…

MySQL安装以及体系结构

1.简述mysql体系结构 MySQL 最重要、最与众不同的特性是它的存储引擎架构&#xff0c;这种架构的设计将查询处理 &#xff08;Query Processing&#xff09;及其他系统任务&#xff08;Server Task&#xff09;和数据的存储/提取相分离。这种 处理和存储分离的设计可以在使用时…