首页 > 运维 > linux运维 > 正文

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

蓮花仙者
发布: 2025-06-21 11:48:01
原创
750人浏览过

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创作工具

橙篇 145
查看详情 橙篇

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

五.最后

以上就是【Linux篇】让开发事半功倍:Linux 开发工具的实战指南(上篇)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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