【Linux操作系统】基础开发工具(yum、vim、gcc/g++)
文章目录
- Linux软件包管理器 - yum
- Linux下的三种安装方式
- 什么是软件包
- 认识Yum与RPM
- yum常用指令
- 更新软件
- 安装与卸载
- 查找与搜索
- 清理缓存与重建元数据
- yum源更新
- 1. 备份现有的 yum 源配置
- 2. 下载新的 repo 文件
- 3. 清理并重建缓存
- Linux编辑器 - vim
- 启动vim
- Vim 的三种主要模式
- 常用操作速查表
- 配置Vim(~/.vimrc)
- Linux编译器 - gcc/g++
- 基本编译流程
- 一步到位编译命令
- 调试与优化选项
- 静态库与动态库相关命令
- 总结表格(附各阶段示例)
- Linux系列学习目录
Linux软件包管理器 - yum
Linux下的三种安装方式
Linux系统提供多种软件安装方式,主要包括以下三种:
- 源代码编译安装:下载程序源代码后自行编译生成可执行文件
- RPM包安装:使用rpm命令直接安装软件包(需自行处理依赖关系)
- Yum安装:通过yum工具自动安装软件及其依赖(推荐方式)
什么是软件包
- 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
- yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上
认识Yum与RPM
Yum 如何处理 RPM 包:
当使用 yum install package_name
时,Yum 会:
- 从配置好的仓库(如 CentOS 官方源、EPEL 等)中查找
.rpm
包; - 自动解析该软件包所依赖的其他 RPM 包;
- 下载所有需要的
.rpm
文件到本地缓存目录/var/cache/yum/
; - 使用
rpm -i
或rpm -U
命令进行安装或升级。
操作 | 指令 | 工具 |
---|---|---|
查看已安装的 RPM 包 | rpm -qa | rpm |
安装 RPM 包 | rpm -i package.rpm | rpm |
使用 Yum 安装包 | yum install package | yum |
yum常用指令
注意: 在服务器中下载软件包 ,使用 yum
的话,必须保证网络连接。
更新软件
指令 | 描述 |
---|---|
yum check-update | 检查可更新的软件包 |
yum update | 更新所有可升级的软件包 |
yum update package_name | 更新指定的软件包 |
安装与卸载
指令 | 描述 |
---|---|
yum install package_name | 安装指定软件包 |
yum remove package_name / yum erase package_name | 删除/卸载软件包 |
查找与搜索
指令 | 描述 |
---|---|
yum list all | 列出所有可用的软件包 |
yum list installed | 列出已安装的软件包 |
yum search keyword | 根据关键词搜索软件包 |
yum info package_name | 显示某个软件包的详细信息 |
清理缓存与重建元数据
指令 | 描述 |
---|---|
yum clean all | 清除所有缓存 |
yum makecache | 生成新的元数据缓存 |
yum源更新
一般Linux操作系统,默认配置的yum源是国外的,因此你的yum源访问比较慢,可能需要更新yum源 ----- 替换yum源文件!!!
可上网搜索国内相关yum源,复制粘贴替换原本文件即可。
1. 备份现有的 yum 源配置
在进行任何更改之前,建议先备份现有的源配置文件。
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
2. 下载新的 repo 文件
根据你使用的 Linux 发行版选择合适的镜像源。例如,如果你正在使用 CentOS,并希望切换到阿里云的镜像源,可以执行以下命令
# 移除原有的repo文件
sudo rm -f /etc/yum.repos.d/CentOS-Base.repo# 根据你的CentOS版本下载对应的repo文件
# 对于CentOS 7
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 对于CentOS 8(注意:CentOS 8 已经停止维护,推荐使用 CentOS Stream)
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
3. 清理并重建缓存
替换源之后,需要清理旧的缓存并生成新的缓存信息。
sudo yum clean all
sudo yum makecache
Linux编辑器 - vim
VIM 是 Linux 系统中最强大、最常用的文本编辑器之一,它是 vi 编辑器的增强版本(Vi IMproved)。与普通的文本编辑器不同,vim 是一种模式化编辑器,你需要在不同的模式之间切换来进行编辑和保存操作。
启动vim
vim filename.txt
如果文件不存在,Vim 会新建一个空文件。
Vim 的三种主要模式
模式 | 进入方式 | 功能 |
---|---|---|
普通模式(Normal Mode) | 默认启动时进入 | 可以进行复制、粘贴、删除等操作 |
插入模式(Insert Mode) | 按 i, a, o 等键进入 | 输入文字,像普通编辑器一样 |
命令行模式(Command-line Mode) | 在普通模式下按: 键 | 执行保存、退出、查找等命令 |
常用操作速查表
🔹 进入插入模式
按键 | 作用 |
---|---|
i | 在当前光标前插入 |
I | 在当前行首插入 |
a | 在当前光标后插入 |
A | 在当前行末插入 |
o | 在当前行下新增一行并插入 |
O | 在当前行上新增一行并插入 |
🔹 保存和退出(命令行模式)
按
Esc
回到 Normal Mode,再输入:
进入命令行模式:
命令 | 说明 |
---|---|
:w | 保存(write) |
:q | 退出(quit) |
:wq | 保存并退出 |
:q! | 强制退出不保存 |
:wq! | 强制保存退出(用于只读文件) |
:x | 类似于 :wq ,但只有在有修改时才保存 |
:e! | 放弃修改,重新加载原文件 |
🔹 文本编辑操作(Normal Mode)
操作 | 命令 |
---|---|
删除当前字符 | x |
删除整行 | dd |
删除多个字符/行 | 数字 + d (如 5d 删除5个字符) |
复制当前行 | yy |
粘贴 | p (粘贴到光标后)或 P (粘贴到光标前) |
撤销 | u |
重做 | Ctrl + r |
移动光标 | h (左)、j (下)、k (上)、l (右) |
跳转到行首 | 0 (数字零) |
跳转到行尾 | $ |
跳转到某一行 | 数字 + G (如 10G 到第10行) |
跳转到文件末尾 | G |
跳转到文件开头 | gg |
配置Vim(~/.vimrc)
你可以创建 .vimrc 文件来自定义 Vim 行为:
vim /etc/vimrc
示例配置内容如下:
set ai " 自动缩进,与上一行保持一致的自动空格
set ic " 在查询模型与匹配模式下忽略大小写
set number " 左侧显示行号
set showmatch " 显示括号配对,并高亮显示相匹配的括号
set showmode " 文本输入模型下,加亮显示模式指示器
set showcmd " 在状态栏显示所执行的指令,未完成的指令片段
set warn " 长行显示自动折行
set cindent " 以C/C++模式缩进
set ruler " 打开状态栏标尺
set scrolloff=6 " 设置光标离窗口上下6行时窗口自动滚动
set tabstop=4 " 设置Tab长度为4
set wrap " 自动换行显示
syntax enable " 启用语法高亮
syntax on " 开启自动语法高亮
Linux编译器 - gcc/g++
gcc(GNU Compiler Collection)是 GNU 提供的一套编译器工具集。g++ 是 GCC 中专门用于编译 C++ 的前端。
以下是 gcc/g++ 常用的命令及其用途说明:
基本编译流程
步骤 | 命令格式 | 说明 |
---|---|---|
预处理 | gcc -E source.c -o source.i 或 g++ -E source.cpp -o source.i | 仅进行预处理,生成 .i 文件(宏替换、头文件展开等) |
编译 | gcc -S source.i -o source.s 或 g++ -S source.i -o source.s | 将预处理后的代码编译为汇编代码,生成 .s 文件 |
汇编 | gcc -c source.s -o source.o 或 g++ -c source.s -o source.o | 将汇编代码转换为目标机器码,生成 .o 目标文件 |
链接 | gcc source.o -o program 或 g++ source.o -o program | 将目标文件与库链接,生成最终可执行文件 |
一步到位编译命令
功能 | 命令格式 | 说明 |
---|---|---|
编译 C 程序 | gcc source.c -o program | 使用 GCC 编译 C 源文件,输出可执行程序 program |
编译 C++ 程序 | g++ source.cpp -o program | 使用 G++ 编译 C++ 源文件,输出可执行程序 program |
编译并启用标准(C11) | gcc -std=c11 source.c -o program | 指定使用 C11 标准 |
编译并启用标准(C++17) | g++ -std=c++17 source.cpp -o program | 指定使用 C++17 标准 |
调试与优化选项
选项 | 含义 |
---|---|
-g | 生成调试信息,便于 gdb 调试 |
-O0 , -O1 , -O2 , -O3 | 设置不同的优化级别(数字越大优化程度越高) |
-Wall | 开启所有警告信息 |
-Wextra | 显示额外警告 |
-pedantic | 对不符合标准的语法报错 |
静态库与动态库相关命令
功能 | 命令格式 | 说明 |
---|---|---|
创建静态库(.a ) | ar rcs libmylib.a file1.o file2.o | 使用 ar 工具将多个 .o 文件打包成静态库 |
创建动态库(.so ) | g++ -shared -fPIC -o libmylib.so file1.o file2.o | 生成动态链接库(共享库),需使用 -fPIC 生成位置无关代码 |
编译时链接静态库 | g++ main.cpp -L. -lmylib -o program | 链接当前目录下的静态库 libmylib.a |
编译时链接动态库 | g++ main.cpp -L. -lmylib -o program | 链接当前目录下的动态库 libmylib.so |
运行时指定动态库路径 | export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH | 设置环境变量,使系统能找到自定义的 .so 库 |
总结表格(附各阶段示例)
阶段 | 输入文件 | 输出文件 | 工具 | 示例命令 |
---|---|---|---|---|
预处理 | hello.c | hello.i | 预处理器 | gcc -E hello.c -o hello.i |
编译 | hello.i | hello.s | 编译器 | gcc -S hello.i -o hello.s |
汇编 | hello.s | hello.o | 汇编器 | gcc -c hello.s -o hello.o |
链接 | hello.o | hello | 链接器 | gcc hello.o -o hello |
Linux系列学习目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加,添加超链接
相关文章:

【Linux操作系统】基础开发工具(yum、vim、gcc/g++)
文章目录 Linux软件包管理器 - yumLinux下的三种安装方式什么是软件包认识Yum与RPMyum常用指令更新软件安装与卸载查找与搜索清理缓存与重建元数据 yum源更新1. 备份现有的 yum 源配置2. 下载新的 repo 文件3. 清理并重建缓存 Linux编辑器 - vim启动vimVim 的三种主要模式常用操…...
gopool 源码分析
gopool gopool是字节跳动开源节流的gopkg包中协程池的一个实现。 关键结构 协程池: type pool struct {// The name of the poolname string// capacity of the pool, the maximum number of goroutines that are actually working// 协程池的最大容量cap int32…...

【Survival Analysis】【机器学习】【3】 SHAP可解釋 AI
前言: SHAP(SHapley Additive explanations) 是一种基于博弈论的可解释工具。 现在很多高分的 论文里面都会带这种基于SHAP 分析的图,用于评估机器学习模型中特征对预测结果的贡献度. pip install -i https://pypi.tuna.tsinghua.edu.cn/sim…...

ModuleNotFoundError No module named ‘torch_geometric‘未找到
ModuleNotFoundError: No module named torch_geometric’未找到 试了很多方法,都没成功,安装torch对应版本的torch_geometric都不行, 后来发现是pip被设置了环境变量,所有pip文件都给安装在了一个文件夹了 排查建议 1. 检查 p…...
iOS 门店营收表格功能的实现
iOS 门店营收表格功能实现方案 核心功能需求 数据展示:表格形式展示门店/日期维度的营收数据排序功能:支持按营收金额、增长率等排序筛选功能:按日期范围/门店/区域筛选交互操作:点击查看详情、数据刷新数据可视化:关…...
链表题解——环形链表【LeetCode】
141. 环形链表 方法一 核心思想: 使用一个集合 seen 来记录已经访问过的节点。遍历链表,如果当前节点已经存在于集合中,说明链表存在环;否则,将当前节点添加到集合中,继续遍历。如果遍历结束(h…...

Cell-o1:强化学习训练LLM解决单细胞推理问题
细胞类型注释是分析scRNA-seq数据异质性的关键任务。尽管最近的基础模型实现了这一过程的自动化,但它们通常独立注释细胞,未考虑批次水平的细胞背景或提供解释性推理。相比之下,人类专家常基于领域知识为不同细胞簇注释不同的细胞类型。为模拟…...
求解插值多项式及其余项表达式
例 求满足 P ( x j ) f ( x j ) P(x_j) f(x_j) P(xj)f(xj) ( j 0 , 1 , 2 j0,1,2 j0,1,2) 及 P ′ ( x 1 ) f ′ ( x 1 ) P(x_1) f(x_1) P′(x1)f′(x1) 的插值多项式及其余项表达式。 解: 由给定条件,可确定次数不超过3的插值多项式。…...

vue3: bingmap using typescript
项目结构: <template><div class"bing-map-market"><!-- 加载遮罩层 --><div class"loading-overlay" v-show"isLoading || errorMessage"><div class"spinner-container"><div class&qu…...
vue3前端实现导出Excel功能
前端实现导出功能可以使用一些插件 我使用的是xlsx库 1.首先我们需要在vue3的项目中安装xlsx库。可以使用npm 或者 pnpm来进行安装 npm install xlsx或者 pnpm install xlsx2.在vue组件中引入xlsx库 import * as XLSX from xlsx;3.定义导出实例方法 const exportExcel () …...

超大规模芯片验证:基于AMD VP1902的S8-100原型验证系统实测性能翻倍
引言: 随着AI、HPC及超大规模芯片设计需求呈指数级增长原型验证平台已成为芯片设计流程中验证复杂架构、缩短迭代周期的核心工具。然而,传统原型验证系统受限于单芯片容量(通常<5000万门)、多芯片分割效率及系统级联能力&#…...

【工作记录】接口功能测试总结
如何对1个接口进行接口测试 一、单接口功能测试 1、接口文档信息 理解接口文档的内容: 请求URL: https://[ip]:[port]/xxxserviceValidation 请求方法: POST 请求参数: serviceCode(必填), servicePsw(必填) 响应参数: status, token 2、编写测试用例 2.1 正…...

Dubbo Logback 远程调用携带traceid
背景 A项目有调用B项目的服务,A项目使用 logback 且有 MDC 方式做 traceid,调用B项目的时候,traceid 没传递过期,导致有时候不好排查问题和链路追踪 准备工作 因为使用的是 alibaba 的 dubbo 所以需要加入单独的包 <depend…...
【element-ui】el-autocomplete实现 无数据匹配
文章目录 方法一:使用 default 插槽方法二:使用 empty-text 属性(适用于列表类型)总结 在使用 Element UI 的 el-autocomplete 组件时,如果你希望在没有任何数据匹配的情况下显示特定的内容,你可以通过自定…...

NLP学习路线图(二十):FastText
在自然语言处理(NLP)领域,词向量(Word Embedding)是基石般的存在。它将离散的符号——词语——转化为连续的、富含语义信息的向量表示,使得计算机能够“理解”语言。而在众多词向量模型中,FastText 凭借其独特的设计理念和卓越性能,尤其是在处理形态丰富的语言和罕见词…...

力扣面试150题--除法求值
Day 62 题目描述 做法 此题本质是一个图论问题,对于两个字母相除是否存在值,其实就是判断,从一个字母能否通过其他字母到达,做法如下: 遍历所有等式,为每个变量分配唯一的整数索引。初始化一个二维数组 …...
SQL进阶之旅 Day 20:锁与并发控制技巧
【JDK21深度解密 Day 20】锁与并发控制技巧 文章简述 在高并发的数据库环境中,锁与并发控制是保障数据一致性和系统稳定性的核心机制。本文作为“SQL进阶之旅”系列的第20天,深入探讨SQL中的锁机制、事务隔离级别以及并发控制策略。文章从理论基础入手…...

美业破局:AI智能体如何用数据重塑战略决策(5/6)
摘要:文章深入剖析美业现状与挑战,指出其市场规模庞大但竞争激烈,面临获客难、成本高、服务标准化缺失等问题。随后阐述 AI 智能体与数据驱动决策的概念,强调其在美业管理中的重要性。接着详细说明 AI 智能体在美业数据收集、整理…...

生成模型+两种机器学习范式
生成模型:从数据分布到样本创造 生成模型(Generative Model) 是机器学习中一类能够学习数据整体概率分布,并生成新样本的模型。其核心目标是建模输入数据 x 和标签 y 的联合概率分布 P(x,y),即回答 “数据是如何产生的…...

【学习笔记】Python金融基础
Python金融入门 1. 加载数据与可视化1.1. 加载数据1.2. 折线图1.3. 重采样1.4. K线图 / 蜡烛图1.5. 挑战1 2. 计算2.1. 收益 / 回报2.2. 绘制收益图2.3. 累积收益2.4. 波动率2.5. 挑战2 3. 滚动窗口3.1. 创建移动平均线3.2. 绘制移动平均线3.3 Challenge 4. 技术分析4.1. OBV4.…...
在Linux查看电脑的GPU型号
VGA 是指 Video Graphics Array,这是 IBM 于 1987 年推出的一种视频显示标准。 lspci | grep vga 📌 lspci | grep -i vga 的含义 lspci:列出所有连接到 PCI 总线的设备。 grep -i vga:过滤输出,仅显示包含“VGA”字…...

A Execllent Software Project Review and Solutions
The Phoenix Projec: how do we produce software? how many steps? how many people? how much money? you will get it. i am a pretty judge of people…a prank...

windows命令行面板升级Git版本
Date: 2025-06-05 11:41:56 author: lijianzhan Git 是一个 分布式版本控制系统 (DVCS),由 Linux 之父 Linus Torvalds 于 2005 年开发,用于管理 Linux 内核开发。它彻底改变了代码协作和版本管理的方式,现已成为软件开发的事实标准工具&…...
Langgraph实战--自定义embeding
概述 在Langgraph中我想使用第三方的embeding接口来实现文本的embeding。但目前langchain只提供了两个类,一个是AzureOpenAIEmbeddings,一个是:OpenAIEmbeddings。通过ChatOpenAI无法使用第三方的接口,例如:硅基流平台…...

大故障,阿里云核心域名疑似被劫持
2025年6月5日凌晨,阿里云多个服务突发异常,罪魁祸首居然是它自家的“核心域名”——aliyuncs.com。包括对象存储 OSS、内容分发 CDN、镜像仓库 ACR、云解析 DNS 等服务在内,全部受到波及,用户业务连夜“塌房”。 更让人惊讶的是&…...
什么是「镜像」?(Docker Image)
🧊 什么是「镜像」?(Docker Image) 💡 人话解释: Docker 镜像就像是一个装好程序的“快照包”,里面包含了程序本体、依赖库、运行环境,甚至是系统文件。 你可以把镜像理解为&…...

SQLMesh实战:用虚拟数据环境和自动化测试重新定义数据工程
在数据工程领域,软件工程实践(如版本控制、测试、CI/CD)的引入已成为趋势。尽管像 dbt 这样的工具已经推动了数据建模的标准化,但在测试自动化、工作流管理等方面仍存在不足。 SQLMesh 应运而生,旨在填补这些空白&…...
服务器健康摩尔斯电码:深度解读S0-S5状态指示灯
当服务器机柜中闪烁起神秘的琥珀色灯光,运维人员的神经瞬间绷紧——这些看似简单的Sx指示灯,实则是服务器用硬件语言发出的求救信号。掌握这套"摩尔斯电码",等于拥有了预判故障的透视眼。 一、状态指示灯:服务器的生命体…...

设计模式基础概念(行为模式):模板方法模式 (Template Method)
概述 模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 是基于继承的代码复用的基本技术,模板方法模式的类结构图中,只有继承关系。 需要开发抽象类和具体子…...

传统业务对接AI-AI编程框架-Rasa的业务应用实战(番外篇2)-- Rasa 训练数据文件的清理
经过我的【传统业务对接AI-AI编程框架-Rasa的业务应用实战】系列 1-6 的表述 已经实现了最初的目标:将传统平台业务(如发票开具、审核、计税、回款等)与智能交互结合,通过用户输入提示词或语音,识别用户意图和实体信…...