Linux学习笔记(软件包管理器apt/yum+Vim编辑器+gcc/g++编译器)1.22

一、软件包管理器(了解即可)

(一)核心概念

  1. 软件包:提前编译好的软件安装包(类似Windows安装程序),避免手动编译源代码的繁琐。

  2. 包管理器:用于获取、安装、卸载软件包,自动解决依赖关系,类比“应用商店”。

  3. 主流工具:

    1. CentOS/Fedora/RedHat:yum(Yellow dog Updater, Modified)

    2. Ubuntu/Debian:apt(Advanced Package Tool)

(二)软件包依赖与镜像源

  1. 依赖问题:软件运行可能依赖其他库文件(如libc.so、ssl.so),包管理器会自动下载依赖包。

  2. 国内镜像源(解决国外源下载慢问题):

    1. 阿里云镜像站:https://developer.aliyun.com/mirror/

    2. 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/

    3. 中国科学技术大学开源镜像站:http://mirrors.ustc.edu.cn/

    4. 其他:北京交通大学、中科院软件研究所、上海交大、网易镜像站等。

(三)yum/apt常用操作

操作场景

CentOS(yum)命令

Ubuntu(apt)命令

查看软件包

yum list | grep 软件名

apt search 软件名;apt show 软件名

安装软件

sudo yum install -y 软件名

sudo apt install -y 软件名

卸载软件

sudo yum remove [-y] 软件名

sudo apt remove [-y] 软件名

备份安装源

sudo mv /etc/yum.repos.d/*.repo 备份目录

sudo cp /etc/apt/sources.list 备份文件

更新安装源缓存

sudo yum clean all;yum makecache

sudo apt update

(四)注意事项

  1. 安装/卸载需管理员权限(sudo或root账户)。

  2. 同一时间只能执行一个yum/apt操作,避免冲突。

  3. 必须保证网络畅通(可通过ping www.baidu.com验证)。

  4. 软件包命名规则:主版本号.次版本号.源程序发行号-软件包发行号.主机平台.cpu架构(如x86_64为64位,i686为32位;el7对应CentOS7/RedHat7)。

  5. 安装源路径:

    1. CentOS:/etc/yum.repos.d/(CentOS-Base.repo为标准源,epel.repo为扩展源)

    2. Ubuntu:/etc/apt/sources.list(标准源);/etc/apt/sources.list.d/(扩展源)

二、Vim编辑器

(一)vi与vim的区别

  • vim是vi的升级版本,兼容vi所有指令,新增语法高亮、可视化操作等功能,支持多系统(Linux、Mac OS、Windows)。

(二)三种核心模式及切换

模式

功能描述

切换方式

命令模式(Normal)

控制光标移动、删除/复制字符/行、切换其他模式

打开vim默认进入;插入模式/底行模式按ESC返回

插入模式(Insert)

输入/编辑文字(最常用编辑模式)

命令模式下按i(光标前插入)、a(光标后插入)、o(新行插入)

底行模式(Last line)

保存/退出文件、查找字符、列出行号、替换等操作

命令模式下按Shift+;(输入:)进入

(三)常用操作指令

1. 命令模式核心指令
  • 光标移动:

    • 上下左右:h(左)、j(下)、k(上)、l(右)(num+j,如15j向下跳15行)

    • 行内:^(行首)、$(行尾)

    • 全文:gg(文首)G(文末)、#G(第#行,如15G跳至第15行)

    • 行号+shift+g:跳至所输入的行

    • 屏幕滚动:Ctrl+B(后滚一页)、Ctrl+F(前滚一页)、Ctrl+U(后滚半页)、Ctrl+D(前滚半页)

  • 删除操作:

    • x:删除光标所在字符;#x(删除光标后#个字符,如6x)

    • X:删除光标前一个字符;#X(删除光标前#个字符)

    • dd:删除光标所在行;#dd(删除光标后#行,如6dd)

  • 剪切操作:

    • dd+p:剪切光标所在行,然后粘贴缓冲区内容到光标位置;

  • 复制与粘贴:

    • yw:复制光标到字尾的字符;#yw(复制#个字)

    • yy:复制光标所在行;#yy(复制#行)

    • p:粘贴缓冲区内容到光标位置

  • 替换与撤销:

    • r:替换光标所在字符;R(Shift+r):持续替换至按ESC

    • u:撤销上一步操作;Ctrl+R(恢复撤销)

  • 其他:

    • Ctrl+v+(光标移动):区域选择

    • cw:更改光标到字尾的字符;#cw(更改#个字)

    • Ctrl+G:显示光标所在行号

2. 底行模式核心指令
  • 保存与退出:

    • :w:保存文件

    • :q:退出vim;:q!(强制退出不保存)

    • :wq:保存并退出;ZZ(等价于:wq)、ZQ(等价于:q!)

  • 查找与替换:

    • /关键字:向后查找;按n继续查找

    • ?关键字:向前查找;按n继续查找

  • 其他:

    • :set nu:显示行号

    • :set nonu 取消显示行号

    • :#:跳至第#行(如:10跳至第10行)

3. 注释:
  • 批量化注释(给多行代码加注释)

  1. 进入字符可视模式:光标移到要注释的第一行代码前,按 Ctrl + v(小写 v 是字符可视,Ctrl+V 是块可视)。

  2. 选中目标行:按 j 键向下移动光标,选中需要注释的所有行的 “行首位置”(进行区域选择)。

  3. 插入注释符:按 I(大写 i,块插入模式),输入注释符//(根据语言选择),按 ESC 键。


    1. 批量化去注释(删除多行代码的注释符)

  4. 进入字符可视模式:Ctrl + v

  5. 移动光标选中所有行的 “注释符区域”// 。按 j 键向下移动光标,选中需要取消注释的所有行,再按l键向右移动所选中所有行的//

  6. 直接删除:按 d 键(删除选中的块内容),所有行的注释符会同步删除。


4. 多文件窗口视图:
  1. 底行模式下输入:vs (XXX.xx)打开/新建对于名称的文件(vim 新的文件,如果不保存就在目录下生成对应的文件)

  2. ctrl+ww:在不同的文件窗口切换光标。

(四)简单配置(了解即可)

  1. 配置文件位置:

    1. 系统公共配置:/etc/vimrc(对所有用户生效)

    2. 个人配置:~/.vimrc(用户主目录下,无则创建)

  2. 常用配置选项(添加到.vimrc中):

    1. syntax on:语法高亮

    2. set nu:显示行号

    3. set shiftwidth=4:缩进为4个空格

  3. 插件推荐(可选):

    1. TagList:代码标签列表,需下载解压后将doc和plugin目录内容分别放入~/.vim/doc和~/.vim/plugin,配置.vimrc添加:

      let Tlist_Show_One_File=1
      let Tlist_Exit_OnlyWindow=1
      let Tlist_Use_Right_Window=1
      • WinManager:文件浏览器和窗口管理器,配置.vimrc添加:

        let g:winManagerWindowLayout='FileExplorer|TagList'
        nmap wm :WMToggle<cr>

      三、GCC/G++编译器(了解即可)

      (一)编译流程(C/C++程序从源码到可执行文件)

      1. 预处理(Preprocessing):

        1. 功能:宏替换、去注释、条件编译、头文件展开

        2. 指令:gcc -E 源文件.c -o 目标文件.i(.i为预处理后文件)

        3. 示例:gcc -E hello.c -o hello.i

      2. 编译(Compilation):

        1. 功能:检查语法错误,将预处理后的代码翻译成汇编语言

        2. 指令:gcc -S 预处理文件.i -o 目标文件.s(.s为汇编文件)

        3. 示例:gcc -S hello.i -o hello.s

      3. 汇编(Assembly):

        1. 功能:将汇编代码转换为机器可识别的二进制目标代码

        2. 指令:gcc -c 汇编文件.s -o 目标文件.o(.o为目标文件)

        3. 示例:gcc -c hello.s -o hello.o(主要使用)

        4. gcc -c hello.c(默认生成同名的目标文件 hello.o)

      4. 链接(Linking):

        1. 功能:将多个目标文件及依赖的库文件链接为可执行文件

        2. 指令:gcc 目标文件.o -o 可执行文件名

        3. 示例:gcc hello.o -o hello

      (二)静态链接与动态链接

      链接方式

      核心特点

      优缺点

      后缀名(Linux)

      静态链接

      编译时将库文件代码全部加入可执行文件

      优点:运行速度快,不依赖外部库;缺点:文件体积大,库更新需重新编译

      .a(静态库)

      动态链接

      编译时不加入库代码,运行时由系统加载依赖库

      优点:文件体积小,库更新无需重新编译;缺点:依赖系统库存在

      .so(动态库)

      • 注意:gcc默认使用动态链接,可通过-static选项强制静态链接(需安装静态库:CentOSyum install glibc-static libstdc++-static -y

      • 查看依赖库:ldd 可执行文件名(如ldd hello

      (三)常用编译选项

      选项

      功能描述

      -E

      只执行预处理,不生成文件(需重定向输出)

      -S

      编译到汇编语言,不进行汇编和链接

      -c

      编译到目标代码(.o文件),不链接

      -o

      指定输出文件名(如gcc hello.c -o hello

      -static

      强制静态链接

      -g

      生成调试信息(供gdb调试使用)

      (四)核心概念补充

      1. 库文件:

        1. 系统默认库路径:/usr/lib

        2. 示例:C语言printf函数实现位于libc.so.6(动态库),gcc自动链接该库

      2. 跨平台差异:

        1. Linux:动态库.so,静态库.a

        2. Windows:动态库.dll,静态库.lib

      3. 多文件编译:

        1. 示例:两个源文件a.c和b.c,编译命令:gcc a.c b.c -o main(先分别编译为.o,再链接)

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值