0

0

【Linux篇】让开发事半功倍:Linux 开发工具的实战指南(上篇)

蓮花仙者

蓮花仙者

发布时间:2025-06-21 11:48:01

|

762人浏览过

|

来源于php中文网

原创

linux 开发工具的魅力:如何提升你的开发效率

引言

一.软件包管理器

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 编辑器基本操作

三种模式下如何正确快速切换(如下图)

【Linux篇】让开发事半功倍:Linux 开发工具的实战指南(上篇)

w:保存当前文件

wq:存盘并退出 vim

q!:不存盘强制退出 vim

3.3.1 正常模式下命令集

h:光标向左移动一格

j:光标向下移动一格

k:光标向上移动一格

l:光标向右移动一格

G:移动到文章最后

$:移动到光标所在行尾

^:移动到光标所在行首

w:光标跳转到下个字的开头

e:光标跳到下个字的字尾

b:光标回到上个字的开头

l:光标移到该行的第#个位置

gg:光标跳转至文本开始

shift + g:光标跳转至文本末端

shift + b:屏幕往“后”移动一页

shift + f:屏幕往“前”移动一页

shift + u:屏幕往“后”移动半页

shift + d:屏幕往“前”移动半页

x:每按一次,将会删除光标所在位置的一个字符

x:表示删除光标所在位置的“后”(包含自己在内)x个字符

X:大写的X,每按一次,删除光标所在位置的“前”一个字符

X:表示删除光标所在位置的“前”x个字符

dd:删除光标所在行

dd:从光标所在行从上往下开始删除#行

如果你想粘贴复制的单词,可以按 p 来粘贴。

注意:p:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

yw:复制当前光标所在位置的一个单词,并将其存入寄存器中。

yw:复制当前光标所在位置的#个单词,并将其存入寄存器中。

yy:复制光标所在行到缓冲区。

yy:复制光标当前所在行从上往下数#行到缓冲区。

r:替换光标所在处的字符。(这个字符需要你从键盘中输入)

R:一直替换光标所指处的字符,直至用户者按下 Esc 键,即可退出。

u:撤销上次的操作

飞笔AI
飞笔AI

飞笔AI致力于创作高质量的海报等图像,满足用户个性化设计需求。用户可通过平台便捷地创建各种风格和主题的海报、新媒体素材图等。

下载

Ctrl + r:用于重做(redo)你之前的撤销操作。也就是说,它会恢复你用 u(撤销)撤回的上一个操作。

cw:删除光标所在位置的单词(从前往后扫描的)并进入插入模式,允许你直接重新输入该单词。

c#w:更改指定#个字符。

Ctrl + g:快速查看光标的位置信息或显示文件信息。

G:光标跳转到指定#行行首。

3.3.2 末行模式下命令集

set nu:会在每一行的前面显示行号,通常这是一个非常有用的功能,尤其是在编程或编辑大文件时,行号能帮助快速定位内容。

:后面接上数字 x,再按回车即可跳转至 x 行。

/关键字:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「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:底行模式下进行分屏模式,同时可以任意回到任意分屏

【Linux篇】让开发事半功倍:Linux 开发工具的实战指南(上篇)

四.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 是程序加载时的动态链接器,它负责加载其它共享库。

五.最后

相关专题

更多
c#是什么意思
c#是什么意思

C#是一种通用的面向对象编程语言,它在.NET框架上运行,可用于开发各种类型的应用程序。本专题为大家提供c#相关的各种文章、以及下载和课程。

263

2023.08.08

什么是c#
什么是c#

C#(读作C Sharp)是一种现代的、通用的、面向对象的编程语言。它由微软公司开发,于2000年首次发布,主要用于开发Windows桌面应用程序、Web应用程序、移动应用程序以及游戏开发等领域。C#是一种类型安全和托管的编程语言,它结合了C++的强大性能和C语言的简单易学特点,并引入了许多新的特性和概念,如委托、属性、泛型和异步编程等,以提高开发效率和代码可维护性。

181

2023.08.31

C#中base关键字的用法
C#中base关键字的用法

在C#中,base关键字用于访问当前类的基类成员,这包括基类的字段、属性、方法、构造函数、索引器以及事件。想了解更多C#的相关内容,可以阅读本专题下面的文章。

298

2024.03.13

C#Task用法
C#Task用法

Task在C#中是用于表示异步操作的对象,它位于System.Threading.Tasks命名空间中。想了解更多C#中各种用法的相关内容,可以阅读本专题下面的文章。

348

2024.03.14

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

185

2023.09.27

typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

107

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

335

2023.10.11

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

757

2023.08.22

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

1

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 11.6万人学习

Rust 教程
Rust 教程

共28课时 | 4.7万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号