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

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 开发工具的实战指南(上篇)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/485948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 13:26:11
下一篇 2025年11月8日 13:27:41

相关推荐

  • CSS mask属性无法获取图片:为什么我的图片不见了?

    CSS mask属性无法获取图片 在使用CSS mask属性时,可能会遇到无法获取指定照片的情况。这个问题通常表现为: 网络面板中没有请求图片:尽管CSS代码中指定了图片地址,但网络面板中却找不到图片的请求记录。 问题原因: 此问题的可能原因是浏览器的兼容性问题。某些较旧版本的浏览器可能不支持CSS…

    2025年12月24日
    900
  • SASS 中的 Mixins

    mixin 是 css 预处理器提供的工具,虽然它们不是可以被理解的函数,但它们的主要用途是重用代码。 不止一次,我们需要创建多个类来执行相同的操作,但更改单个值,例如字体大小的多个类。 .fs-10 { font-size: 10px;}.fs-20 { font-size: 20px;}.fs-…

    2025年12月24日
    000
  • 为什么设置 `overflow: hidden` 会导致 `inline-block` 元素错位?

    overflow 导致 inline-block 元素错位解析 当多个 inline-block 元素并列排列时,可能会出现错位显示的问题。这通常是由于其中一个元素设置了 overflow 属性引起的。 问题现象 在不设置 overflow 属性时,元素按预期显示在同一水平线上: 不设置 overf…

    2025年12月24日 好文分享
    400
  • 网页使用本地字体:为什么 CSS 代码中明明指定了“荆南麦圆体”,页面却仍然显示“微软雅黑”?

    网页中使用本地字体 本文将解答如何将本地安装字体应用到网页中,避免使用 src 属性直接引入字体文件。 问题: 想要在网页上使用已安装的“荆南麦圆体”字体,但 css 代码中将其置于第一位的“font-family”属性,页面仍显示“微软雅黑”字体。 立即学习“前端免费学习笔记(深入)”; 答案: …

    2025年12月24日
    000
  • 旋转长方形后,如何计算其相对于画布左上角的轴距?

    绘制长方形并旋转,计算旋转后轴距 在拥有 1920×1080 画布中,放置一个宽高为 200×20 的长方形,其坐标位于 (100, 100)。当以任意角度旋转长方形时,如何计算它相对于画布左上角的 x、y 轴距? 以下代码提供了一个计算旋转后长方形轴距的解决方案: const x = 200;co…

    2025年12月24日
    000
  • 旋转长方形后,如何计算它与画布左上角的xy轴距?

    旋转后长方形在画布上的xy轴距计算 在画布中添加一个长方形,并将其旋转任意角度,如何计算旋转后的长方形与画布左上角之间的xy轴距? 问题分解: 要计算旋转后长方形的xy轴距,需要考虑旋转对长方形宽高和位置的影响。首先,旋转会改变长方形的长和宽,其次,旋转会改变长方形的中心点位置。 求解方法: 计算旋…

    2025年12月24日
    000
  • 旋转长方形后如何计算其在画布上的轴距?

    旋转长方形后计算轴距 假设长方形的宽、高分别为 200 和 20,初始坐标为 (100, 100),我们将它旋转一个任意角度。根据旋转矩阵公式,旋转后的新坐标 (x’, y’) 可以通过以下公式计算: x’ = x * cos(θ) – y * sin(θ)y’ = x * …

    2025年12月24日
    000
  • 为什么我的特定 DIV 在 Edge 浏览器中无法显示?

    特定 DIV 无法显示:用户代理样式表的困扰 当你在 Edge 浏览器中打开项目中的某个 div 时,却发现它无法正常显示,仔细检查样式后,发现是由用户代理样式表中的 display none 引起的。但你疑问的是,为什么会出现这样的样式表,而且只针对特定的 div? 背后的原因 用户代理样式表是由…

    2025年12月24日
    200
  • 如何计算旋转后长方形在画布上的轴距?

    旋转后长方形与画布轴距计算 在给定的画布中,有一个长方形,在随机旋转一定角度后,如何计算其在画布上的轴距,即距离左上角的距离? 以下提供一种计算长方形相对于画布左上角的新轴距的方法: const x = 200; // 初始 x 坐标const y = 90; // 初始 y 坐标const w =…

    2025年12月24日
    200
  • CSS元素设置em和transition后,为何载入页面无放大效果?

    css元素设置em和transition后,为何载入无放大效果 很多开发者在设置了em和transition后,却发现元素载入页面时无放大效果。本文将解答这一问题。 原问题:在视频演示中,将元素设置如下,载入页面会有放大效果。然而,在个人尝试中,并未出现该效果。这是由于macos和windows系统…

    2025年12月24日
    200
  • inline-block元素错位了,是为什么?

    inline-block元素错位背后的原因 inline-block元素是一种特殊类型的块级元素,它可以与其他元素行内排列。但是,在某些情况下,inline-block元素可能会出现错位显示的问题。 错位的原因 当inline-block元素设置了overflow:hidden属性时,它会影响元素的…

    2025年12月24日
    000
  • 为什么 CSS mask 属性未请求指定图片?

    解决 css mask 属性未请求图片的问题 在使用 css mask 属性时,指定了图片地址,但网络面板显示未请求获取该图片,这可能是由于浏览器兼容性问题造成的。 问题 如下代码所示: 立即学习“前端免费学习笔记(深入)”; icon [data-icon=”cloud”] { –icon-cl…

    2025年12月24日
    200
  • 为什么使用 inline-block 元素时会错位?

    inline-block 元素错位成因剖析 在使用 inline-block 元素时,可能会遇到它们错位显示的问题。如代码 demo 所示,当设置了 overflow 属性时,a 标签就会错位下沉,而未设置时却不会。 问题根源: overflow:hidden 属性影响了 inline-block …

    2025年12月24日
    000
  • 为什么我的 CSS 元素放大效果无法正常生效?

    css 设置元素放大效果的疑问解答 原提问者在尝试给元素添加 10em 字体大小和过渡效果后,未能在进入页面时看到放大效果。探究发现,原提问者将 CSS 代码直接写在页面中,导致放大效果无法触发。 解决办法如下: 将 CSS 样式写在一个单独的文件中,并使用 标签引入该样式文件。这个操作与原提问者观…

    2025年12月24日
    000
  • 如何模拟Windows 10 设置界面中的鼠标悬浮放大效果?

    win10设置界面的鼠标移动显示周边的样式(探照灯效果)的实现方式 在windows设置界面的鼠标悬浮效果中,光标周围会显示一个放大区域。在前端开发中,可以通过多种方式实现类似的效果。 使用css 使用css的transform和box-shadow属性。通过将transform: scale(1.…

    2025年12月24日
    200
  • 为什么我的 em 和 transition 设置后元素没有放大?

    元素设置 em 和 transition 后不放大 一个 youtube 视频中展示了设置 em 和 transition 的元素在页面加载后会放大,但同样的代码在提问者电脑上没有达到预期效果。 可能原因: 问题在于 css 代码的位置。在视频中,css 被放置在单独的文件中并通过 link 标签引…

    2025年12月24日
    100
  • 如何用HTML/JS实现Windows 10设置界面鼠标移动探照灯效果?

    Win10设置界面中的鼠标移动探照灯效果实现指南 想要在前端开发中实现类似于Windows 10设置界面的鼠标移动探照灯效果,有两种解决方案:CSS 和 HTML/JS 组合。 CSS 实现 不幸的是,仅使用CSS无法完全实现该效果。 立即学习“前端免费学习笔记(深入)”; HTML/JS 实现 要…

    2025年12月24日
    000
  • 如何计算旋转后的长方形在画布上的 XY 轴距?

    旋转长方形后计算其画布xy轴距 在创建的画布上添加了一个长方形,并提供其宽、高和初始坐标。为了视觉化旋转效果,还提供了一些旋转特定角度后的图片。 问题是如何计算任意角度旋转后,这个长方形的xy轴距。这涉及到使用三角学来计算旋转后的坐标。 以下是一个 javascript 代码示例,用于计算旋转后长方…

    2025年12月24日
    000
  • 如何用前端实现 Windows 10 设置界面的鼠标移动探照灯效果?

    如何在前端实现 Windows 10 设置界面中的鼠标移动探照灯效果 想要在前端开发中实现 Windows 10 设置界面中类似的鼠标移动探照灯效果,可以通过以下途径: CSS 解决方案 DEMO 1: Windows 10 网格悬停效果:https://codepen.io/tr4553r7/pe…

    2025年12月24日
    000
  • 如何用前端技术实现Windows 10 设置界面鼠标移动时的探照灯效果?

    探索在前端中实现 Windows 10 设置界面鼠标移动时的探照灯效果 在前端开发中,鼠标悬停在元素上时需要呈现类似于 Windows 10 设置界面所展示的探照灯效果,这其中涉及到了元素外围显示光圈效果的技术实现。 CSS 实现 虽然 CSS 无法直接实现探照灯效果,但可以通过以下技巧营造出类似效…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信