【Linux后端服务器开发】常用开发工具

news2025/2/12 13:07:56

目录

一、apt / yum

二、gcc / g++

三、make / makefile

四、vi / vim

五、gdb


一、apt / yum

apt 和 yum 都是在Linux环境下的软件包管理器,负责软件的查找、安装、更新与卸载。

apt 是Ubuntu系统的包管理器,yum是Centos系统的包管理器,它们的使用格式大致一样。

apt的使用

  • 下载软件包:sudo apt install <package_name>
  • 下载并安装软件包:sudo apt install -y <package_name>
  • 卸载软件包:sudo apt remove <package_name>
  • 升级软件包:sudo apt upgrade <package_name>
  • 更新软件库:sudo apt update
  • 查看软件包信息:apt show <package_name>
  • 查看已安装的软件包:apt list --installed

yum的使用

  • 下载软件包:sudo yum install <package_name>
  • 下载并安装软件包:sudo yum install <package_name> -y
  • 卸载软件包:sudo yum remove <package_name>
  • 升级软件包:sudo yum upgrade <package_name>
  • 查看所有软件包:yum list
  • 查看已安装软件包:yum list installed

二、gcc / g++

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。

GNU工具链也包含了编译器、汇编器和连接器。一个C/C++文件要经过预处理(Preprocessing)、编译(Compilation)、汇编 (Assembly)和链接(Linking)才能变成可执行文件。

gcc只能编译链接C语言文件,g++能编译链接C语言文件和C++文件。

源文件到可执行程序的过程

  • 预处理:去注释,宏替换,头文件展开,条件编译
  • 编译:C -> 汇编
  • 汇编:汇编 -> 可重定向二进制目标文件
  • 链接:多个 .o .obj -> 合并形成一个可执行文件

三、make / makefile

make是一个命令,makefile是一个文件(makefile文件也可命名为Makefile)。

make命令是用来自动完成大批量源文件编译工作的维护工具;能够建立不同文件之间的依赖关系自动识别被修改的源文件并重新编译,避免不必要的编译。

通过make命令编译链接多个C语言源文件示例:

用make配置静态库的makefile代码示例:

四、vi / vim

vim 是 vi 的升级版本,vi 是Linux自带默认文本编辑器,vim 更好用,Linux环境安装 vim 之后需要自己配置vim环境,才能设置出更适合自己编程风格的编辑器。

模式

  • 命令模式:按 a/i/o 进入编辑模式,按 shift : 进入底层模式
  • 编辑模式:按esc进入命令模式
  • 底行模式:按esc进入命令模式

编辑模式和底层模式的相互切换,必须先按 Esc 切换为命令模式作为中转

命令模式切换到编辑模式:

【i,L】前插模式

  • i:从光标所在处前面插入
  • L:从光标所在行第一个非空字符处插入

【a,A】后插模式

  • a:从光标所在处后面插入
  • A:从光标所在行最后一个字符后面插入

【o,O】插入模式

  • o:从光标的下一行插入新的一行
  • O:从光标的上一行插入新的一行

【r,R】取代模式

  • r:取代光标所在字符一次,nr 可替换n个字符
  • R:开启取代模式,按下esc键停止


命令模式常见命令

  • yy:复制,nyy是复制n行
  • dd:剪切,ndd是剪切n行        
  • p:粘贴在下一行,np是粘贴n次;P是粘贴在前一行
  • x:删除光标处字符,nx删除n个字符;X向前删除字符
  • u:撤销操作
  • ctrl r:撤销撤销操作
  • shift g:光标定位到文件结尾,n shift g,定位到第n行
  • gg:光标定位到文件开始
  • &(shift 4):光标到当前行的最末
  • ^(shift 6):光标到当前行的开始
  • w / b:以单词为单位进行光标的前/后移动
  • h / j / k / l:光标向左/下/上/右移动
  • ~ / (shift `):大小写替换
  • shift r:替换模式,shift nr,替换n个字符
  • r:替换字符,nr,替换n个字符


批量操作

  • v:字符选择
  • shift + v:行选择
  • ctrl + v:列选择
  • shift + i:插入模式(ctrl + v进入选择模式可在每列前面插入,按esc结束插入)
  • //:插入注释
  • <:插入模式的回缩
  • >:插入模式的缩进

底行模式常见命令

  • w:保存
  • q:退出
  • !:强制执行
  • wq:保存并退出
  • !cmd:不退出vim执行终端命令
  • vs filename:分屏编辑,ctrl ww 进行光标跳转
  • %s/str1/str2/g:将文件中所有的str1字符串替换为str2,%表示当前文件全部,g表示全部替换

环境配置

如何用linux系统编写c程序_linux下c语言编程_陈陈陈小航的博客-CSDN博客

Vim设置括号自动补全和快速跳出_weixin_33755847的博客-CSDN博客

Ubuntu20.04安装YouCompleteMe自动补齐插件_OIDCAT的博客-CSDN博客

五、gdb

gdb常用指令

  • gdb exe_filename                      开始调试
  • quit                                             退出调试
  • r                                                 开始调试,若无断点,则直接运行结束(run)
  • b + 行号                                     给这一行打断点(break point)
  • info b                                          查看断点
  • d + 断点编号                              删掉某断点(delete)
  • n                                                逐过程调试(next)
  • s                                                 逐语句调试(step)
  • c                                                 进入下一个断点(continue)
  • bt                                               查看调用堆栈
  • finish                                          将函数调试结束
  • display  + 变量                           设置常显示
  • undisplay + 常显示编号             取消常显示
  • enable/disable + 断点编号         打开/关闭断点
     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL回顾总结,超级全

SELECT&#xff1a;语句用于从数据库中选取数据 从 "Websites" 表中选取 "name" 和 "country" 列 SELECT name,country FROM Websites 从 "Websites" 表中选取所有列 SELECT * FROM Websites; SELECT DISTINCT&#xff1a;用于返…

Android系统视角下对APK的分析(2)- APK安装过程的定性分析

声明 以Android手机用户角度来看&#xff0c;安装各式各样的APP&#xff0c;基本就是从应用市场上 “搜索->下载->安装” 三连。而对Android系统来说&#xff0c;这就是个大工程了&#xff0c;因为对Android系统来说APK是“外来户”&#xff0c;如何安装它、有限制地支持…

linux实验三 vi编辑器及用户管理

1、vi编辑器的详细使用 &#xff08;1&#xff09;在用户主目录下建一个名为vi的目录。 &#xff08;2&#xff09;进入vi目录。 &#xff08;3&#xff09;将文件/etc/man_db.conf复制到当前目录下&#xff0c;并用命令sudo修改man_db.conf的属性为所有用户可以读写。 &am…

.net版本下载

1先登录微软 Microsoft - 云、计算机、应用和游戏 下载 .NET Framework | 免费官方下载

【Oauth2请求不带client_id,获取方法】

文章目录 前言一、关键&#xff1a;请求头 Basic xxx:xxx二、源码分析BasicAuthenticationFilter 类extractAndDecodeHeader 方法authenticate方法loadUserByUsername 方法 总结 前言 这段时间在学习 oauth2, 发现我组用的框架&#xff0c;登录请求参数中并没有 client_id &a…

JVM 面试必会面试题

1. 说一说JVM的主要组成部分 点击放大看&#xff0c;一图胜千文 jvm 方法区和堆是所有线程共享的内存区域&#xff1b;而虚拟机栈、本地方法栈和程序计数器的运行是线程私有的内存区域&#xff0c;运行时数据区域就是我们常说的JVM的内存。类加载子系统&#xff1a;根据给定的…

Altium Designer二次开发

Altium Designer二次开发就在该软件原有的基础上&#xff0c;自己写代码给它添加新功能&#xff0c;如&#xff1a;一键生成Gerber&#xff0c;计算铺铜面积&#xff0c;PCB走线的寄生参数和延时等等。 Altium Designer二次开发有两种方式&#xff0c;一种是基于Altium Designe…

Hadoop集群部署和启动与关闭

Hadoop集群的部署方式分为三种&#xff0c;分别是独立模式&#xff08;Standalone mode&#xff09;、伪分布式模式&#xff08;Pseudo-Distributed mode&#xff09;和完全分布式模式&#xff08;Cluster mode&#xff09;&#xff0c;独立模式和伪分布式模式主要用于学习和调…

Day974.授权码和访问令牌的颁发流程 -OAuth 2.0

授权码和访问令牌的颁发流程 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于授权码和访问令牌的颁发流程的内容。 授权服务就是负责颁发访问令牌的服务。更进一步地讲&#xff0c;OAuth 2.0 的核心是授权服务&#xff0c;而授权服务的核心就是令牌。 为什么这么说…

被冻结的层在训练过程中参与正向反向传递,只是这一层的梯度不再更新。||底层逻辑

被冻结的层可以前向传播,也可以反向传播,只是自己这一层的参数不更新,其他未冻结层的参数正常更新。 在微调期间&#xff0c;只有被激活的层的梯度会被计算和更新&#xff0c;而被冻结的层的梯度则会保持不变。 其实从数学上去理解也不难&#xff0c;但自己手推还是需要花点时…

《自然》:DeepMind推出AlphaDev或将加速全球计算

数字世界对计算和能源的需求正在不断增加。在过去的五十年中&#xff0c;人类主要依靠硬件层面的改进来满足这一点。然而&#xff0c;随着微芯片接近其物理极限&#xff0c;改进计算机运行代码&#xff0c;以使计算算力更强大和可持续&#xff0c;变得至关重要。对于每天运行数…

线程的生命周期

我是一个线程 第一回 初生牛犊 我是一个线程&#xff0c;我一出生就被编了个号: 0x3704&#xff0c;然后被领到一个昏暗的屋子里&#xff0c;在这里我发现了很多和我一模一样的同伴。 我身边…

一文教你如何在数据库中安全地存储密码

前言 作者&#xff1a;神的孩子在歌唱 大家好&#xff0c;我叫智 让我们先谈谈什么不该做。 不要以明文形式存储密码。任何具有数据库内部访问权限的人都可以看到它们。如果数据库受损&#xff0c;攻击者可以轻松获取所有密码。那么&#xff0c;我们应该如何在数据库中安全地存…

10个ai算法常用库java版

今年ChatGPT 火了半年多,热度丝毫没有降下来。深度学习和 NLP 也重新回到了大家的视线中。有一些小伙伴问我,作为一名 Java 开发人员,如何入门人工智能,是时候拿出压箱底的私藏的学习AI的 Java 库来介绍给大家。 这些库和框架为机器学习、深度学习、自然语言处理等提供了广…

OceanBase 安全审计之身份鉴别

本文主要以 MySQL 和 OceanBase 对比的方式&#xff0c;来介绍 OceanBase&#xff08;MySQL 模式&#xff09;安全体系中关于身份鉴别的相关内容&#xff0c;包括身份鉴别机制、用户名组成、密码复杂度、密码过期策略等。 作者&#xff1a;金长龙 爱可生测试工程师&#xff0c;…

快速掌握SQL语言——数据查询语言DQL

0️⃣前言 数据查询语言DQL是一种用于查询数据库中数据的语言&#xff0c;它是SQL的一部分&#xff0c;也是SQL中最常用的语言之一。 文章目录 0️⃣前言1️⃣介绍2️⃣使用3️⃣重要性4️⃣总结 1️⃣介绍 DQL&#xff08;Data Query Language&#xff09; 主要用于从数据库中…

为PyCharm IDE 配置三剑客:QtDesigner[可视化设计器]、PyUIC[可视化设计器ui文件转py代码]、PyRcc[资源文件转py代码]

过去一直在使用Eric6 PyQt5&#xff0c;然而最近它[已然是古董级的了]似乎有些不太正常&#xff0c; 像我这样有强迫症的人怎么可以容忍呢? 于是有了换IDE的想法&#xff0c;听说PyCharm是个高富帅&#xff0c;大家都很喜欢用它呢&#xff01;于是乎才有了这篇文章。 前提条…

【C++ 笔记五】STL 标准模板库 —— 容器基础进阶

【C 笔记五】STL 标准模板库 —— 容器基础进阶 文接上文 【C 笔记四】STL 标准模板库 —— 容器基础 文章目录 【C 笔记五】STL 标准模板库 —— 容器基础进阶I - 简单回顾1.1 - 序列式容器&#xff08;顺序容器&#xff09;1.2 - 关联式容器 (关联容器)1.3 - 访问方法/对外接…

面试-java常见问题

JVM 配置 程序计数器&#xff1a;当前线程所执行的字节码的行号指示器java虚拟机栈:临时变量元空间&#xff1a;类常量池&#xff0c;运行时常量池方法区&#xff1a;类信息&#xff0c;静态变量堆&#xff1a;对象实例&#xff0c;Sting常量池等 类加载过程 加载->链接&am…

使用javacv中的ffmpeg实现录屏

今天突发奇想&#xff0c;想自己写一个录屏的软件&#xff0c;上次写了一个专门录音的Demo&#xff0c;但是要把声音和视频放到一起合成一个mp4文件&#xff0c;着实有一点艰难&#xff0c;所以就打算使用ffmpeg来写一个&#xff0c;而这篇博客中会顺便谈一谈我碰到的各种坑。 …