首页 > 系统相关 >全面掌握APT、Vim和GCC:Ubuntu软件管理与开发指南

全面掌握APT、Vim和GCC:Ubuntu软件管理与开发指南

时间:2024-12-24 23:27:19浏览次数:5  
标签:文件 gcc GCC APT Vim apt 软件包 模式 光标

文章目录

Ubuntu 软件包管理器

**Ubuntu** 系统中,软件包管理器用于安装、更新、删除和管理软件包。Ubuntu 主要使用 APTAdvanced Package Tool 作为软件包管理系统,并提供了多种工具和命令来简化软件管理。


Ubuntu 软件包管理的基本概念

软件包(Package

  • 软件包是包含程序文件、元数据和依赖信息的压缩文件。
  • Ubuntu 使用 DEBDebian Package 格式的包。

仓库(Repository

  • Ubuntu 的软件包存储在官方的在线仓库中,也支持第三方仓库(PPA)。
  • 仓库的地址保存在 /etc/apt/sources.list 文件中。

常用的软件包管理器APT

Ubuntu 的主要软件包管理工具,基于命令行。管理 .deb 格式的软件包,自动处理依赖关系。

APT常用命令

1.更新仓库

sudo apt update
  • 更新软件包的缓存列表,检查是否有可用的更新。

2.升级系统

sudo apt upgrade
  • 升级已安装的软件包。
sudo apt full-upgrade
  • 升级所有软件包,包含删除旧包和安装新依赖。

3.安装软件包

sudo apt install package_name
  • 安装指定软件包(如 vimcurl 等)。

4.删除软件包

sudo apt remove package_name
  • 删除软件包及其配置文件。
sudo apt purge package_name
  • 删除软件包及其配置文件。

5.搜索软件包

apt search package_name
  • 搜索包含指定关键字的软件包。

6.显示包信息

apt show package_name
  • 查看指定包的详细信息。

7.清理缓存

sudo apt autoremove
  • 删除不再需要的依赖包。
sudo apt clean
  • 清空下载的缓存文件。

vim

VimVi IMproved)是一种功能强大的文本编辑器,是经典编辑器 Vi 的增强版本,广泛应用于程序开发、系统配置等领域。它以高效的键盘操作、灵活的配置和强大的扩展能力著称,被称为“编辑器之神”。

Vim 的基本概念

Vim 的特点

  1. 多模式编辑
    • 普通模式:浏览、移动光标、复制、粘贴、删除等操作。
    • 插入模式:插入文本。
    • 命令模式:执行保存、退出、替换等命令。
    • 可视模式:选择文本块,进行批量操作。
  2. 高效性
    • 以键盘为核心操作方式,减少鼠标使用,提高编辑效率。
  3. 扩展性
    • 支持插件(如 NERDTreeYouCompleteMe),可自定义功能。
  4. 轻量级
    • 启动速度快,运行占用资源少。
  5. 跨平台支持
    • 适用于 LinuxmacOSWindows 等多种操作系统。

启动 Vim

vim filename
  • 如果文件不存在,会新建一个文件。
  • 进入后默认处于 普通模式

Vim 的工作模式

  1. 普通模式:默认进入的模式,用于浏览和编辑操作(非直接输入文本);切换到普通模式:按 ESC
  2. 插入模式:用于文本输入;进入插入模式:按 i(从光标前开始插入);
  3. 命令模式:用于执行命令(如保存、退出);从普通模式进入:按 :
  4. 可视模式:用于选择文本块;进入可视模式:按 v

快速切换

  • 普通模式到插入模式:ia
  • 插入模式到普通模式:ESC
  • 普通模式到命令模式::
  • 普通模式到可视模式:v

Vim 的基本操作

普通模式

移动光标:

  • gg :光标移动到开头
  • G :光标移动到结尾
  • num + G :光标移动到指定行
  • ^ :光标移动到当前行开头
  • $ :光标移动到当前行结尾
  • h :光标左移
  • l :光标右移
  • k :光标上移
  • j :光标下移
  • w :光标移动到下一个字的开头
  • e :光标移动到下一个字的结尾
  • b :光标移动到上一个字的开头

删除:

  • x :删除光标位置的字符
  • num + x :删除从光标位置开始的 num 个字符
  • X :删除光标位置的前一个字符
  • num + X :删除光标位置前面的 num 个字符
  • dd :删除当前行

复制:

  • yy : 复制当前行
  • num + yy : 复制从光标开始的 num 行
  • p : 复制粘贴内容到当前行

其他:

  • u : 撤销操作
  • ctrl + r : 撤销的恢复
  • shift + ~ :切换大小写

搜索与替换:

  • /text :搜索文本
  • ?text :向上搜索
  • n :查找下一个
  • r :替换光标所在的字符
  • R :替换光标所到之处的字符,按下 ESC 为止

命令模式

  • :w : 保存文件
  • :q :退出 Vim
  • :q! :强制退出
  • :wq :保存并退出
  • :vs file :分屏模式
  • ctrl + ww :光标切换另一个窗口

gcc/g++

gccg++GNU项目的一部分,是用于编译和处理CC++等多种编程语言的编译工具。

gcc 是用于 C 语言编译,g++是用于 C++ 编译

Ubuntu 安装 gcc / g++

运行以下指令来安装 gcc / g++

sudo apt-get update -y		
sudo apt install build-essential
  • sudo apt-get update -y :检查软件包更新
  • sudo apt install build-essentialbuild-essential 包含构建程序所需的几个工具。包括 g++gccmakeGNU调试器。

验证 gcc / g++ 是否安装成功:

gcc --version
g++ --version

如果出现以下情况,成功检查到版本,则说明安装成功。
在这里插入图片描述

编译知识

我们知道,源文件需要经过编译才可以生成可执行程序,而编译又可以分为以下4个步骤:

  1. 预处理
    • 头文件展开
    • 宏替换
    • 条件编译
    • 去掉注释

经过预处理后源文件(.c 或者 .cpp)就变成了 .i 文件。

  1. 编译
    检查语法,生成汇编代码,.i 文件生成 .s 文件

  2. 汇编
    .s 文件的汇编代码转换成二进制代码,.s 文件生成 .o 目标文件

  3. 链接
    将多个目标文件与所需的库函数链接起来,生成可执行程序

使用方法

我们这里就以 gcc 做演示,g++ 也是同样的使用方式。

gcc [options] file.c -o output

代码解释:

  • -o 的作用是指定输出文件名

  • 整段代码的作用是 file.cgcc 编译生成 output 可执行文件

  • 执行可执行文件 ./output

  • 如果是直接不带任何选项的编译 gcc file.c ,默认生成的是 a.out 文件。

如果我们想要编译过程在具体某个步骤停下来,生成编译过程中的临时文件,我们可以通过带特定选项来实现。

1.-E 选项,在预处理后停下来,由 .c 文件生成 .i 文件

gcc -E code.c -o code.i

2.-S 选项,在编译后停下来,由.i 文件生成 .s 文件

gcc -S code.i -o code.s

3.-c 选项,在汇编后停下来,由 .s 文件生成 .o 目标文件

gcc -c code.s -o code.o

在这里插入图片描述

动静态函数库

我们都知道,如果我们的代码中使用到了一些库函数,我们就必须加上它的头文件,比如 printf 需要加上 <stdio.h> ,但是头文件也只是包含了库函数的声明,并没有其实现,这些库函数的实现其实是在特定文件路径的文件里。

Linux 系统中,这些库函数的实现是在 libc.so.6 的库文件(函数库)中,存放在在 /lib/x86_64-linux-gnu 路径里 。

ldd 指令可以查看可执行程序具体依赖于的库。
在这里插入图片描述

函数库是指为程序开发提供的预定义函数或功能集合,我们可以直接调用这些函数,无需从头写代码,提高开发效率,确保代码的可靠性和一致性。函数库可以分为静态库动态库两种形式。

1.静态库(Static Library

静态库在编译时会被直接链接到目标程序中,生成的可执行文件包含了库中的所有必要代码。因此,在程序运行时不需要依赖外部的库文件。

  • 文件格式:通常以.aLinux)或.libWindows)为扩展名。
  • 优点:不依赖外部文件,运行时更稳定;链接后的程序独立性强,分发时只需提供一个可执行文件。
  • 缺点:可执行文件较大,因为包含了所有库代码;更新库时需要重新编译程序。

静态链接

gcc code.c -o mycode -static

在这里插入图片描述
2.动态库(Dynamic Library

动态库在程序运行时加载,代码不直接嵌入到可执行文件中,而是以外部文件存在,允许多个程序共享同一个动态库。

  • 文件格式:通常以.soShared ObjectLinux)或.dllDynamic Link LibraryWindows)为扩展名。
  • 优点:可执行文件更小,节省磁盘空间和内存;库的更新只需替换动态库文件,不需要重新编译程序。
  • 缺点:程序运行时需要依赖动态库文件,可能导致分发复杂性增加;如果动态库丢失或版本不匹配,程序可能无法运行。

动态链接

gcc code.c -o code	

在这里插入图片描述

使用 file 指令可以查看可执行程序链接库的类型。

file filename

在这里插入图片描述


Have a good day

标签:文件,gcc,GCC,APT,Vim,apt,软件包,模式,光标
From: https://blog.csdn.net/2301_80373479/article/details/144196801

相关文章

  • Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
    文章目录前言......
  • YOLO11改进-模块-引入空间自适应特征调制网络SAFMN(Spatial Adaptive Feature Modulat
            尽管基于深度学习的解决方案在图像超分辨率(SR)中取得了令人瞩目的重建性能,但这些模型通常较大且架构复杂,使其与许多具有计算和内存限制的低功耗设备不兼容。为了克服这些挑战,我们提出了一种用于高效SR设计的空间自适应特征调制(SAFM)机制。具体来说,SAFM层使用......
  • Vim 命令速查表
    简介#Vim命令速查表,注释化vimrc配置文件,经典Vim键盘图,实用Vim书籍,Markdown格式,目录化检索,快速熟悉使用!重复的威力#.#小数点,重复上一次的命令N<command>#重复某个命令N次,例如:10k,光标上移10行光标移动#注:一般模式下,任意一个动......
  • Linux之Vim编辑器
    Vim文本编辑器Linux系统中“一切皆文件”,因此当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。Vi编辑器是Unix系统最初的编辑器。它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。在GNU项目中,程序员在将Vi......
  • Linux -Vim
    博客主页:【夜泉_ly】本文专栏:【Linux】欢迎点赞......
  • 针对高级持续性威胁(APT),有哪些有效的防御策略?
    法律法规与监管环境方面全球立法加强:随着网络犯罪和数据泄露事件的频发,世界各国都在加强信息安全和网络安全相关的立法。例如,欧盟的《通用数据保护条例》(GDPR),它对企业处理个人数据的方式进行了严格的规定,包括数据主体的权利、数据控制者和处理者的责任等诸多方面。任何违反GD......
  • 使用Localstorage(Mapty)
    使用Localstorage(Mapty)首先,我们创建一个函数名,先在app中去调用它//为所有的锻炼创建本地存储this._setLocalStorage();之后我们就开始编写这个函数的功能_setLocalStorage(){localStorage.setItem('workouts',JSON.stringify(this.#workouts));......
  • Vim
    VimVim的模式正常模式:在界面中四处移动光标,通过命令进行修改内容插入模式:i键进入,插入文本,与正常编辑器一样的功能替换模式:R键进入,替换文本可视化模式:v键进入正常可视化模式,V键进入行可视化模式,^V键进入块可视化模式,进入后使用移动命令进行选中,类似于鼠标拖动效果命令行模式......
  • 【转载】 Gcc 安全编译选项
    【转载】Gcc安全编译选项转载信息:本文来自博客园,作者:pwl999,转载请注明原文链接:https://www.cnblogs.com/pwl999/p/15534983.html文章目录目录【转载】Gcc安全编译选项文章目录1.简介2.NX(DEP)3.RELRO4.PIE(ASLR)5.CANARY(栈保护)6.FORTIFY7.RPATH/RUNPATH参考资料:......
  • 计算机组成原理-Chapter2
    Chapter2数据表达和MIPS汇编语言2.1二进制表示方法        针对于有符号整数,可以使用原码、补码和反码的方式进行表示。2.1.1反码与原码        对于一个数的有符号数,若其为正数则反码为其本身。例如正数0001的反码为0001与之前保持一致;负数1001......