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

打印 上一主题 下一主题

主题 777|帖子 777|积分 2331

Ubuntu 软件包管理器

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

Ubuntu 软件包管理的基本概念

软件包(Package)


  • 软件包是包含步调文件、元数据和依赖信息的压缩文件。
  • Ubuntu 利用 DEB(Debian Package) 格式的包。
堆栈(Repository)


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

常用的软件包管理器APT

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

1.更新堆栈
  1. sudo apt update
复制代码


  • 更新软件包的缓存列表,检查是否有可用的更新。
2.升级体系
  1. sudo apt upgrade
复制代码


  • 升级已安装的软件包。
  1. sudo apt full-upgrade
复制代码


  • 升级所有软件包,包含删除旧包和安装新依赖。
3.安装软件包
  1. sudo apt install package_name
复制代码


  • 安装指定软件包(如 vim、curl 等)。
4.删除软件包
  1. sudo apt remove package_name
复制代码


  • 删除软件包及其设置文件。
  1. sudo apt purge package_name
复制代码


  • 删除软件包及其设置文件。
5.搜索软件包
  1. apt search package_name
复制代码


  • 搜索包含指定关键字的软件包。
6.表现包信息
  1. apt show package_name
复制代码


  • 查看指定包的详细信息。
7.清理缓存
  1. sudo apt autoremove
复制代码


  • 删除不再须要的依赖包。
  1. sudo apt clean
复制代码


  • 清空下载的缓存文件。

vim

Vim(Vi IMproved)是一种功能强大的文本编辑器,是经典编辑器 Vi 的加强版本,广泛应用于步调开发、体系设置等领域。它以高效的键盘操作、灵活的设置和强大的扩展本事著称,被称为“编辑器之神”。
Vim 的基本概念

Vim 的特点

  • 多模式编辑

    • 普通模式:浏览、移动光标、复制、粘贴、删除等操作。
    • 插入模式:插入文本。
    • 命令模式:执行保存、退出、更换等命令。
    • 可视模式:选择文本块,举行批量操作。

  • 高效性

    • 以键盘为焦点操作方式,减少鼠标利用,提高编辑服从。

  • 扩展性

    • 支持插件(如 NERDTree、YouCompleteMe),可自界说功能。

  • 轻量级

    • 启动速度快,运行占用资源少。

  • 跨平台支持

    • 适用于 Linux、macOS、Windows 等多种操作体系。

启动 Vim
  1. vim filename
复制代码


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


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


  • 普通模式到插入模式:i 或 a。
  • 插入模式到普通模式: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++

gcc 和 g++ 是 GNU项目标一部分,是用于编译和处理C、C++等多种编程语言的编译工具。
gcc 是用于 C 语言编译,g++是用于 C++ 编译
Ubuntu 安装 gcc / g++

运行以下指令来安装 gcc / g++ :
  1. sudo apt-get update -y               
  2. sudo apt install build-essential
复制代码


  • sudo apt-get update -y :检查软件包更新
  • sudo apt install build-essential : build-essential 包含构建步调所需的几个工具。包罗 g++、gcc、make、GNU调试器。
验证 gcc / g++ 是否安装乐成:
  1. gcc --version
  2. g++ --version
复制代码
如果出现以下环境,乐成检查到版本,则阐明安装乐成。

编译知识

我们知道,源文件须要颠末编译才可以生成可执行步调,而编译又可以分为以下4个步调:

  • 预处理

    • 头文件睁开
    • 宏更换
    • 条件编译
    • 去掉解释

颠末预处理后源文件(.c 或者 .cpp)就酿成了 .i 文件。

  • 编译
    检查语法,生成汇编代码,由 .i 文件生成 .s 文件
  • 汇编
    将 .s 文件的汇编代码转换成二进制代码,由 .s 文件生成 .o 目标文件
  • 链接
    将多个目标文件与所需的库函数链接起来,生成可执行步调
利用方法

我们这里就以 gcc 做演示,g++ 也是同样的利用方式。
  1. gcc [options] file.c -o output
复制代码
代码解释:


  • -o 的作用是指定输出文件名
  • 整段代码的作用是 file.c 用 gcc 编译生成 output 可执行文件
  • 执行可执行文件 ./output
  • 如果是直接不带任何选项的编译 gcc file.c ,默认生成的是 a.out 文件。
如果我们想要编译过程在详细某个步调停下来,生成编译过程中的暂时文件,我们可以通过带特定选项来实现。
1.-E 选项,在预处理后停下来,由 .c 文件生成 .i 文件
  1. gcc -E code.c -o code.i
复制代码
2.-S 选项,在编译后停下来,由.i 文件生成 .s 文件
  1. gcc -S code.i -o code.s
复制代码
3.-c 选项,在汇编后停下来,由 .s 文件生成 .o 目标文件
  1. gcc -c code.s -o code.o
复制代码

动静态函数库

我们都知道,如果我们的代码中利用到了一些库函数,我们就必须加上它的头文件,好比 printf 须要加上 <stdio.h> ,但是头文件也只是包含了库函数的声明,并没有实在现,这些库函数的实现实在是在特定文件路径的文件里。
在 Linux 体系中,这些库函数的实现是在 libc.so.6 的库文件(函数库)中,存放在在 /lib/x86_64-linux-gnu 路径里 。
ldd 指令可以查看可执行步调详细依赖于的库。

函数库是指为步调开发提供的预界说函数或功能集合,我们可以直接调用这些函数,无需从头写代码,提高开发服从,确保代码的可靠性和一致性。函数库可以分为静态库动态库两种形式。
1.静态库(Static Library)
静态库在编译时会被直接链接到目标步调中,生成的可执行文件包含了库中的所有须要代码。因此,在步调运行时不须要依赖外部的库文件。


  • 文件格式:通常以.a(Linux)或.lib(Windows)为扩展名。
  • 长处:不依赖外部文件,运行时更稳定;链接后的步调独立性强,分发时只需提供一个可执行文件。
  • 缺点:可执行文件较大,因为包含了所有库代码;更新库时须要重新编译步调。
静态链接
  1. gcc code.c -o mycode -static
复制代码

2.动态库(Dynamic Library)
动态库在步调运行时加载,代码不直接嵌入到可执行文件中,而是以外部文件存在,允很多个步调共享同一个动态库。


  • 文件格式:通常以.so(Shared Object,Linux)或.dll(Dynamic Link Library,Windows)为扩展名。
  • 长处:可执行文件更小,节流磁盘空间和内存;库的更新只需更换动态库文件,不须要重新编译步调。
  • 缺点:步调运行时须要依赖动态库文件,大概导致分发复杂性增加;如果动态库丢失或版本不匹配,步调大概无法运行。
动态链接
  1. gcc code.c -o code       
复制代码

利用 file 指令可以查看可执行步调链接库的类型。
  1. file filename
复制代码


Have a good day

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表