引言
一.软件包管理器
1.1 什么是软件包
在 Linux 系统中,软件包是指经过打包的软件程序或库文件,通常包括源代码、可执行文件、依赖库和配置文件等,旨在便于在 Linux 系统上进行安装、更新和卸载。
1.2 Linux 安装软件的方法
源代码安装、rpm 包安装和包管理器安装(yum/apt)是常见的安装方式。CentOS 环境下使用前者,Ubuntu 环境下使用后者。源代码和 rpm 包安装方法较为繁琐且容易出问题,因此不推荐。
本文将详细介绍如何在 Ubuntu 环境下使用 APT 安装软件。
二.APT 具体操作
2.1 查看软件包命令格式
功能:在仓库中搜索与关键字匹配的软件包,提供包名称和简短描述,帮助快速找到相关软件包。
示例:
apt search 关键字
输出内容:命令会列出所有匹配的包及其简短描述。例如:
lrzsz/now 0.12.20-10 amd64 [installed,automatic] Tools for zmodem/xmodem/ymodem file transfer
简单说明:如果该包已安装,会标明 installed。如果该包是自动安装的依赖包,可能会显示 automatic。
2.2 安装软件命令格式
友情提醒:需要管理员权限。
示例:
sudo apt install -y 软件包名
2.3 卸载软件命令格式
此命令也需要提权!!!
示例:
apt remove -y lrzsz
apt remove -y lrzsz 是用于在基于 Debian 的系统中卸载 lrzsz 软件包的命令,并通过 -y 自动确认删除操作。它删除了软件包的二进制和库文件,但保留配置文件。如果你不再需要这个软件并且想完全清除它,可以使用 apt purge。
2.4 安装源查看
Ubuntu 系统标准源命令格式:通过 cat /etc/apt/sources.list 命令,你可以查看当前系统中 APT 使用的所有软件源,这对于排查软件包下载问题、修改仓库源或切换到其他镜像源等操作非常有用。
三.vim 编辑器
Vim 是一款高度可定制化、功能强大的文本编辑器,它源自于 Vi 编辑器,并在其基础上进行扩展和改进。Vim 的设计目标是为程序员提供一个高效的编辑环境,同时支持多种编程语言和文件格式的处理。
3.1 Vim 编辑器的背景
起源:Vim 是由 Bram Moolenaar 在 1991 年开发的。它是从 Vi 编辑器派生而来的,Vi 编辑器最初由 Bill Joy 在 1976 年开发,并在 Unix 系统中成为标准文本编辑器之一。
Vim 的命名:Vim 的名字来源于 “Vi IMproved”(Vi 改进版),表示它在 Vi 的基础上做了许多增强和改进,例如支持多级撤销、语法高亮、插件扩展等。
跨平台性:Vim 目前已支持多种操作系统,包括 Linux、Windows、macOS 等,这使得它在开发者社区中非常受欢迎。
目标用户:Vim 主要面向开发者,尤其是那些需要频繁编辑代码和处理文本的程序员。由于它的强大功能和高效的键盘操作,Vim 被认为是一款适合于高度熟练用户的编辑器。
3.2 vim 基本概念
3.2.1 vim 常用三种模式
命令模式(command mode):命令模式是 Vim 启动后的默认模式,在该模式下,所有按键的输入都是用来执行编辑命令,而不是直接输入字符。用户在命令模式下可以进行各种文本操作,如移动光标、删除文本、复制粘贴等。
插入模式(Insert mode):插入模式是用于直接输入文本的模式。在插入模式下,Vim 会像传统的文本编辑器一样接收字符输入。你可以在插入模式下输入内容,修改文本。
底行模式(last line mode):末行模式是用于执行更复杂命令的模式,如保存文件、退出 Vim、查找替换等。在末行模式下,用户可以输入类似于命令行的命令。这些命令通常以冒号 : 开头,并在屏幕的底部显示。
3.3 vim 编辑器基本操作
三种模式下如何正确快速切换(如下图)

w:保存当前文件
wq:存盘并退出 vim
q!:不存盘强制退出 vim
3.3.1 正常模式下命令集
h:光标向左移动一格
j:光标向下移动一格
k:光标向上移动一格
l:光标向右移动一格
G:移动到文章最后
$:移动到光标所在行尾
^:移动到光标所在行首
w:光标跳转到下个字的开头
e:光标跳到下个字的字尾
b:光标回到上个字的开头
gg:光标跳转至文本开始
shift + g:光标跳转至文本末端
shift + b:屏幕往“后”移动一页
shift + f:屏幕往“前”移动一页
shift + u:屏幕往“后”移动半页
shift + d:屏幕往“前”移动半页
x:每按一次,将会删除光标所在位置的一个字符
X:大写的X,每按一次,删除光标所在位置的“前”一个字符
dd:删除光标所在行
如果你想粘贴复制的单词,可以按 p 来粘贴。
注意:p:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
yw:复制当前光标所在位置的一个单词,并将其存入寄存器中。
yy:复制光标所在行到缓冲区。
r:替换光标所在处的字符。(这个字符需要你从键盘中输入)
R:一直替换光标所指处的字符,直至用户者按下 Esc 键,即可退出。
u:撤销上次的操作
Ctrl + r:用于重做(redo)你之前的撤销操作。也就是说,它会恢复你用 u(撤销)撤回的上一个操作。
cw:删除光标所在位置的单词(从前往后扫描的)并进入插入模式,允许你直接重新输入该单词。
c#w:更改指定#个字符。
Ctrl + g:快速查看光标的位置信息或显示文件信息。
3.3.2 末行模式下命令集
set nu:会在每一行的前面显示行号,通常这是一个非常有用的功能,尤其是在编程或编辑大文件时,行号能帮助快速定位内容。
/关键字:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
w:在冒号输入字母「w」再按回车就可以将文件保存起来。
wq:保存并退出 vim 编辑器。
q!:不保存并强制退出 vim 编辑器。
批量化注释: Ctrl + v -> hjkl -> shift + i = I -> // -> Esc
批量化去注释: Ctrl + v -> hjkl -> d
vim 文件名 + 数字 x -> 光标进入指定 x 行数
!g/!l:执行最近与!后面(第一个字母相同即可,其它可不同)字符匹配指令
%s/printf/print/g 命令在 Vim 中表示将文件中所有的 printf 替换为 print,并且替换是全局的,即每一行的所有 printf 都会被替换。
Ctrl + ww:底行模式下进行分屏模式,同时可以任意回到任意分屏

四.gcc/g++ 编译器
4.1 编译与汇编
传送门:编译与链接
4.2 编译选项命令格式
4.2.1 编译过程详解
作用:处理源代码中的宏定义、头文件包含、条件编译等指令。
过程:通过处理 #define、#include、#if 等预处理指令,预处理器会生成一个没有宏和头文件指令的源代码文件。
结果:输出一个经过处理的纯源代码文件,准备进入编译阶段。
命令格式:
gcc -E 源文件.c -o 目标文件.i
注:这里后面 -o 目的是方便查看过程,不加 -o 则会将处理的结果打印至显示器文件。
后面的处理过程都是一样的,不再重复强调
作用:将预处理后的源代码转换为汇编语言。
过程:编译器分析源代码,进行语法分析,生成中间表示(如抽象语法树),然后将其转化为目标语言(通常是汇编代码)。
结果:生成一个与平台相关的汇编文件,包含程序的机器指令。
命令格式:
gcc -S 预处理形成文件.i -o 目标文件.s
作用:将汇编代码转化为机器代码。
过程:汇编器将生成的汇编语言代码翻译成目标平台的机器指令,通常生成目标文件(.o 或 .obj)。
结果:生成一个机器代码文件(目标文件),这时的代码还不能独立运行。
命令格式:
gcc -c 编译形成的.s为后缀的临时文件 -o 目标文件.o
注意:这里形成的以.o为后缀的文件,是可重定位目标二进制文件,无法执行。
作用:将一个或多个目标文件和库文件合并成一个可执行文件。
过程:链接器将目标文件中的符号和地址进行解析,并将外部引用(如库函数、全局变量等)链接到相应的内存地址。
结果:生成最终的可执行文件,可以运行在操作系统上。
命令格式:
gcc 汇编形成的.o文件 -o 目标可执行程序
问题1:为什么要编译和汇编:
4.3 动态链接和静态链接
4.3.1 静态库(Static Library)
定义:静态库是一个包含编译好的目标文件的归档文件,通常以 .a 结尾。
链接方式:在编译时,静态库会被复制到最终的可执行文件中。
优点:程序独立性强,不需要外部库文件即可运行。
缺点:程序体积较大,更新库文件时需要重新编译整个程序。
命令格式:
ar rcs libname.a file1.o file2.o
4.3.2 动态库(Dynamic Library)
定义:动态库是一个在程序运行时加载的共享库文件,通常以 .so 结尾。
链接方式:在编译时,程序只包含对动态库的引用,运行时才加载动态库。
优点:程序体积小,更新库文件时无需重新编译程序。
缺点:程序运行时需要依赖外部库文件,可能导致兼容性问题。
补充一个命令 ldd:是一个在 Linux 系统中用来显示一个可执行文件或共享库所依赖的共享库(动态库)列表的命令。它可以帮助你查看一个程序或库在运行时需要加载哪些共享库,并且展示每个库的实际位置。
命令格式:
ldd executable-file
示例:
ldd /bin/ls
输出:
linux-vdso.so.1 (0x00007ffcb9f3f000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f44a3a1f000) /lib64/ld-linux-x86-64.so.2 (0x00007f44a3e0f000)
说明:
linux-vdso.so.1 是 Linux 内核提供的虚拟动态共享对象(Virtual Dynamic Shared Object),它通常不需要物理文件,表示内核所提供的动态库接口。
libc.so.6 是该程序所依赖的动态库。
=> 后面的路径是实际的文件路径
/lib64/ld-linux-x86-64.so.2 是程序加载时的动态链接器,它负责加载其它共享库。
五.最后
以上就是【Linux篇】让开发事半功倍:Linux 开发工具的实战指南(上篇)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号