【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系列学习目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加,添加超链接