【Linux操作系统】基础开发工具(yum、vim、gcc/g++)


文章目录


Linux软件包管理器 - yum

Linux下的三种安装方式

Linux系统提供多种软件安装方式,主要包括以下三种:

  1. 源代码编译安装:下载程序源代码后自行编译生成可执行文件
  2. RPM包安装:使用rpm命令直接安装软件包(需自行处理依赖关系)
  3. 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 -irpm -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 源配置

在进行任何更改之前,建议先备份现有的源配置文件。

bash 复制代码
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

2. 下载新的 repo 文件

根据你使用的 Linux 发行版选择合适的镜像源。例如,如果你正在使用 CentOS,并希望切换到阿里云的镜像源,可以执行以下命令

bash 复制代码
# 移除原有的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. 清理并重建缓存

替换源之后,需要清理旧的缓存并生成新的缓存信息。

bash 复制代码
sudo yum clean all
sudo yum makecache

Linux编辑器 - vim

VIM 是 Linux 系统中最强大、最常用的文本编辑器之一,它是 vi 编辑器的增强版本(Vi IMproved )。与普通的文本编辑器不同,vim 是一种模式化编辑器,你需要在不同的模式之间切换来进行编辑和保存操作。

启动vim

bash 复制代码
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 行为:

bash 复制代码
vim  /etc/vimrc

示例配置内容如下:

bash 复制代码
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.ig++ -E source.cpp -o source.i 仅进行预处理,生成 .i 文件(宏替换、头文件展开等)
编译 gcc -S source.i -o source.sg++ -S source.i -o source.s 将预处理后的代码编译为汇编代码,生成 .s 文件
汇编 gcc -c source.s -o source.og++ -c source.s -o source.o 将汇编代码转换为目标机器码,生成 .o 目标文件
链接 gcc source.o -o programg++ 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系列学习目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加,添加超链接

相关推荐
Mikhail_G25 分钟前
Python应用变量与数据类型
大数据·运维·开发语言·python·数据分析
曹瑞曹瑞27 分钟前
VMware导入vmdk文件
linux·运维·服务器
Johny_Zhao30 分钟前
2025年6月Docker镜像加速失效终极解决方案
linux·网络·网络安全·docker·信息安全·kubernetes·云计算·containerd·yum源·系统运维
hello kitty w1 小时前
Python学习(7) ----- Python起源
linux·python·学习
十年磨一剑~1 小时前
centos查看开启关闭防火墙状态
linux·运维·centos
无效的名字1 小时前
向日葵远程控制debian无法进入控制画面的解决方法
运维·debian
藥瓿亭2 小时前
K8S认证|CKS题库+答案| 7. Dockerfile 检测
运维·ubuntu·docker·云原生·容器·kubernetes·cks
搬码临时工2 小时前
如何把本地服务器变成公网服务器?内网ip网址转换到外网连接访问
运维·服务器·网络·tcp/ip·智能路由器·远程工作·访问公司内网
vortex52 小时前
探索 Shell:选择适合你的命令行利器 bash, zsh, fish, dash, sh...
linux·开发语言·bash·shell·dash
GalaxyPokemon3 小时前
LeetCode - 148. 排序链表
linux·算法·leetcode