全面掌握APT、Vim和GCC:Ubuntu软件管理与开发指南
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.更新堆栈
sudo apt update
[*]更新软件包的缓存列表,检查是否有可用的更新。
2.升级体系
sudo apt upgrade
[*]升级已安装的软件包。
sudo apt full-upgrade
[*]升级所有软件包,包含删除旧包和安装新依赖。
3.安装软件包
sudo apt install package_name
[*]安装指定软件包(如 vim、curl 等)。
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
Vim(Vi IMproved)是一种功能强大的文本编辑器,是经典编辑器 Vi 的加强版本,广泛应用于步调开发、体系设置等领域。它以高效的键盘操作、灵活的设置和强大的扩展本事著称,被称为“编辑器之神”。
Vim 的基本概念
Vim 的特点
[*]多模式编辑:
[*]普通模式:浏览、移动光标、复制、粘贴、删除等操作。
[*]插入模式:插入文本。
[*]命令模式:执行保存、退出、更换等命令。
[*]可视模式:选择文本块,举行批量操作。
[*]高效性:
[*]以键盘为焦点操作方式,减少鼠标利用,提高编辑服从。
[*]扩展性:
[*]支持插件(如 NERDTree、YouCompleteMe),可自界说功能。
[*]轻量级:
[*]启动速度快,运行占用资源少。
[*]跨平台支持:
[*]适用于 Linux、macOS、Windows 等多种操作体系。
启动 Vim
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++ :
sudo apt-get update -y
sudo apt install build-essential
[*]sudo apt-get update -y :检查软件包更新
[*]sudo apt install build-essential : build-essential 包含构建步调所需的几个工具。包罗 g++、gcc、make、GNU调试器。
验证 gcc / g++ 是否安装乐成:
gcc --version
g++ --version
如果出现以下环境,乐成检查到版本,则阐明安装乐成。
https://i-blog.csdnimg.cn/direct/4d07a94af4a840f297c66bdfd4827b85.png
编译知识
我们知道,源文件须要颠末编译才可以生成可执行步调,而编译又可以分为以下4个步调:
[*]预处理
[*]头文件睁开
[*]宏更换
[*]条件编译
[*]去掉解释
颠末预处理后源文件(.c 或者 .cpp)就酿成了 .i 文件。
[*] 编译
检查语法,生成汇编代码,由 .i 文件生成 .s 文件。
[*] 汇编
将 .s 文件的汇编代码转换成二进制代码,由 .s 文件生成 .o 目标文件。
[*] 链接
将多个目标文件与所需的库函数链接起来,生成可执行步调。
利用方法
我们这里就以 gcc 做演示,g++ 也是同样的利用方式。
gcc file.c -o output
代码解释:
[*] -o 的作用是指定输出文件名
[*] 整段代码的作用是 file.c 用 gcc 编译生成 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
https://i-blog.csdnimg.cn/direct/f3ee957a22d147cbbd77ebec4be467b8.png
动静态函数库
我们都知道,如果我们的代码中利用到了一些库函数,我们就必须加上它的头文件,好比 printf 须要加上 <stdio.h> ,但是头文件也只是包含了库函数的声明,并没有实在现,这些库函数的实现实在是在特定文件路径的文件里。
在 Linux 体系中,这些库函数的实现是在 libc.so.6 的库文件(函数库)中,存放在在 /lib/x86_64-linux-gnu 路径里 。
ldd 指令可以查看可执行步调详细依赖于的库。
https://i-blog.csdnimg.cn/direct/d23fbf924b66432489342937057f1c07.png
函数库是指为步调开发提供的预界说函数或功能集合,我们可以直接调用这些函数,无需从头写代码,提高开发服从,确保代码的可靠性和一致性。函数库可以分为静态库和动态库两种形式。
1.静态库(Static Library)
静态库在编译时会被直接链接到目标步调中,生成的可执行文件包含了库中的所有须要代码。因此,在步调运行时不须要依赖外部的库文件。
[*]文件格式:通常以.a(Linux)或.lib(Windows)为扩展名。
[*]长处:不依赖外部文件,运行时更稳定;链接后的步调独立性强,分发时只需提供一个可执行文件。
[*]缺点:可执行文件较大,因为包含了所有库代码;更新库时须要重新编译步调。
静态链接
gcc code.c -o mycode -static
https://i-blog.csdnimg.cn/direct/5397ff2b527443c2984760a1c6dfc92f.png
2.动态库(Dynamic Library)
动态库在步调运行时加载,代码不直接嵌入到可执行文件中,而是以外部文件存在,允很多个步调共享同一个动态库。
[*]文件格式:通常以.so(Shared Object,Linux)或.dll(Dynamic Link Library,Windows)为扩展名。
[*]长处:可执行文件更小,节流磁盘空间和内存;库的更新只需更换动态库文件,不须要重新编译步调。
[*]缺点:步调运行时须要依赖动态库文件,大概导致分发复杂性增加;如果动态库丢失或版本不匹配,步调大概无法运行。
动态链接
gcc code.c -o code
https://i-blog.csdnimg.cn/direct/7e43af369c814d78be4c2960d6247d11.png
利用 file 指令可以查看可执行步调链接库的类型。
file filename
https://i-blog.csdnimg.cn/direct/540317df923b4ff4aaa6e644197b9229.png
Have a good day
页:
[1]