【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系统提供多种软件安装方式,主要包括以下三种:

  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 -qarpm
安装 RPM 包rpm -i package.rpmrpm
使用 Yum 安装包yum install packageyum

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.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对不符合标准的语法报错

静态库与动态库相关命令

功能命令格式说明
创建静态库(.aar rcs libmylib.a file1.o file2.o使用 ar 工具将多个 .o 文件打包成静态库
创建动态库(.sog++ -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.chello.i预处理器gcc -E hello.c -o hello.i
编译hello.ihello.s编译器gcc -S hello.i -o hello.s
汇编hello.shello.o汇编器gcc -c hello.s -o hello.o
链接hello.ohello链接器gcc hello.o -o hello

Linux系列学习目录

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

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

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

相关文章

73常用控件_QFormLayout的使用

目录 代码⽰例: 使⽤ QFormLayout 创建表单. 除了上述的布局管理器之外, Qt 还提供了 QFormLayout , 属于是 QGridLayout 的特殊情况, 专 ⻔⽤于实现两列表单的布局. 这种表单布局多⽤于让⽤⼾填写信息的场景. 左侧列为提⽰, 右侧列为输⼊框 代码⽰例: 使⽤ QFormLayout 创…

兰亭妙微 | 医疗软件的界面设计能有多专业?

从医疗影像系统到手术机器人控制界面,从便携式病原体检测设备到多平台协同操作系统,兰亭妙微为众多医疗设备研发企业,打造了兼具专业性与可用性的交互界面方案。 我们不仅做设计,更深入理解医疗场景的实际需求: 对精…

鸿蒙开发修改版本几个步骤

鸿蒙开发修改版本几个步骤 比如:5.0.4(16)版本改为5.0.2(14)版本 一、项目下的build-profile.json5 "products": [{"name": "default","signingConfig": "default&qu…

Flask 基础与实战概述

一、Flask 基础知识 什么是 Flask? Flask 是一个基于 Python 的轻量级 Web 框架(微框架)。 特点:核心代码简洁,给予开发者更多选择空间。 与 Django 对比: Django 创建空项目生成多个文件,Flask 仅需一个文件即可实现简单应用(如 "Hello, World!")。 Flask …

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…

Java严格模式withResolverStyle解析日期错误及解决方案

在Java中使用DateTimeFormatter并启用严格模式(ResolverStyle.STRICT)时,解析日期字符串"2025-06-01"报错的根本原因是:模式字符串中的年份格式yyyy被解释为YearOfEra(纪元年份),而非…

Java中的泛型底层是怎样的

Java 泛型深入底层原理解析:类型擦除与桥方法的真相 一、Java中的伪泛型 Java 从 JDK 1.5 引入泛型之后,大大提升了代码的类型安全性与可读性。但泛型的底层实现并不像 C 的模板机制那样是“真正的泛型”,Java 的泛型是伪泛型,在…

Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)

前言 无论是软件还是硬件的本质都是要解决IO问题(输入、输出),再说回网络编程本质上都是基于TCP/UP的开发,socket是在此基础上做的扩展与封装,而Netty又是对socket做的封装。本文旨在通过相关案例对socket进行探讨。 一…

【大模型LLM学习】function call/agent学习记录

【大模型LLM学习】function call/agent学习记录 0 前言1 langchain实现function call2 调用本地模型3 微调本地模型3.1 few-shot调用Claude生成Q-A对3.2 tools格式3.3 agent微调格式3.4 swift微调 p.s. 0 前言 记录一下使用langchain做简单的function call/agent(或者说意图识别…

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…

Puppeteer测试框架 - Node.js

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】

compose 组件 ---无ui组件

在 Jetpack Compose 中,确实存在不直接参与 UI 渲染的组件,它们主要用于逻辑处理、状态管理或副作用控制。这些组件虽然没有视觉界面,但在架构中扮演重要角色。以下是常见的非 UI 组件及其用途: 1. 无 UI 的 Compose 组件分类 (…

图像超分辨率

图像超分辨率 用AI当“像素侦探”,从模糊中重建合理高清细节,让看不见的细节“无中生有”。 举个生活例子 假设你有一张模糊的老照片,通过超分辨率技术,它能变成清晰的高清照片: 低分辨率图像超分辨率结果 传统放…

多线程语音识别工具

软件介绍 本文介绍一款支持大厂接口的语音转文字工具,具备免配置、免费使用的特点。 软件特性 该工具是一款完全免费的桌面端应用程序,部署于开源社区平台,其核心优势在于整合了多家技术供应商的接口资源。 操作方式 用户只需将音频…

金融预测模型开发:数据预处理、机器学习预测与交易策略优化

金融预测模型开发:数据预处理、机器学习预测与交易策略优化 概述 本文将详细介绍一个完整的金融预测模型开发流程,包含数据预处理、机器学习预测和交易策略优化三个核心模块。我们使用Python实现一个端到端的解决方案,适用于股票价格预测和量化交易策略开发。 # 导入必要…

triton学习笔记7: GEMM相关

这是之前的学习笔记 triton puzzles part1triton puzzles part2triton puzzles part3triton tutorials part1triton tutorials: part2triton tutorails: part3 这是triton tutorials里最后一篇关于GEMM的系列了 GEMM的知识可以参考这篇,写的非常详细具体https://…

食养有方:进行性核上性麻痹患者的健康饮食指南

进行性核上性麻痹是一种罕见的神经系统变性疾病,患者常出现吞咽困难、肢体运动障碍等症状,合理的饮食安排不仅能保证营养供给,还能缓解不适,提高生活质量。以下是适合这类患者的健康饮食建议。 ​患者饮食应遵循 “均衡、细软、易…

使用ORM Bee (ormbee) ,如何利用SQLAlchemy的模型生成数据库表.

使用ORM Bee (ormbee) ,如何利用SQLAlchemy的模型生成数据库表. 将原来SQLAlchemy的模型,修改依赖为: from bee.helper import SQLAlchemy 然后就可以开始生成了。很简单,主要是两个接口。 db.create_all(True) #创建所有模型的表…

C# 使用正则表达式

C# 使用正则表达式 /// <summary> /// 测试正则表达式 /// </summary> private static void test022() {//检查是否匹配&#xff1a;Regex.IsMatch(currencyValue, pattern); 或 new Regex(...).IsMatch(currencyValue)string pattern "\d{3,}";bool b…