文章目錄
- 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系列學習目錄
提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加,添加超鏈接