【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
繁體地址,請注明出處:http://hk.pswp.cn/news/908712.shtml
英文地址,請注明出處:http://en.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…