Linux基础环境开发工具(二)

news2025/7/12 23:53:19

目录

  • 一、前言
  • 二、make和makefile工具
    • 1.快速认识一下
    • 2.依赖关系和依赖方法
    • 3.执行原理
  • 三、Git工具
    • 1.快速认识一下
    • 2.git的使用
  • 四、gdb工具
    • 1.快速认识一下
    • 2、类比Windows使用

一、前言

在开发工具第一篇中我们介绍了yum,vim,gcc/g++编译器这几种工具,在这篇文章中,我们即将介绍剩余的几种常见的开发工具。

二、make和makefile工具

1.快速认识一下

make实质上是一个指令,makefile实质上是一个文本文件。makefile的作用主要是为了实现自动化构建项目,进行指定描述如何对源代码进行编译和链接。
接下来我们看一下如何简单的使用一下
在这里插入图片描述
这个makefile的功能就是通过main.c和processbar.c两个源文件中的代码进行编译和链接,最终生成processbar这个可执行程序。

2.依赖关系和依赖方法

在上面这个例子中

processbar:main.c processbar.c

就是依赖关系,也就是一个实体必须依赖于另一个实体才能实现功能,而其中的processbar是依赖对象,main.c和processbar.c则是依赖文件列表

gcc -o $@ $^

这个则为依赖方法,必须通过依赖方法才能将依赖文件列表转换成依赖对象。其中,我们可以关注到,其实所谓的依赖方法就是通过gcc或者g++编译器进行编译的过程。 其中$^,是指整个依赖文件列表,在需要有多个源文件同时转换成一个可执行程序的时候,我们可以便捷的使用这个符号。
此外,因为整个编译过程是分为预处理,编译,汇编,链接四个阶段,所以我们的依赖关系也就变得多种多样起来
在这里插入图片描述

这个例子就是先将.c文件转换成.o文件,然后将.o文件再转换成可执行程序。

3.执行原理

我们在讲述完makefile之后,再来进行makefile和make的联动,make就是对makefile中的指令进行执行,一般而言是从上到下,挨个进行执行,但同时也遵循显示依赖关系,即依赖的源文件会先被执行。
make的执行还有个特点,make形成可执行程序只编译最新更新的一次,通过对比acm时间
同时也存在一种不受时间限制的执行对象,就是伪目标,这种对象一般不受更新时间的限制,直接进行更新,一般都是一些不产生实质性文件的操作,因为频繁的产生文件会导致效率严重低下,像清理之类的操作会被设置成为伪目标。

三、Git工具

1.快速认识一下

git实际上就是管理文件的一个工具,也可以称为版本控制器。管理文件分为两种,一种是在本地端进行管理,另一种是在远端进行管理。git在可以管理本地和远端仓库的同时还可以允许其他人或者其他设备来访问这个仓库,进行团队协作,所以说git既可以当做客户端,又可以当做服务器
git的使用一般就是三板斧:

git add .
git commit -m "备注”
git push

2.git的使用

在详细了解git的三板斧之前,我们先来熟悉几个概念。首先是工作区,xshell中的工作区其实就是正在进行编辑工作的目录。其次,真正有效的存储是存储在本地仓库中,在远端仓库存储更多的是一种起到保险作用的备份。

git add .//将工作区中没有存储到仓库里的文件全部存放在暂存区
git commit -m "备注”//将暂存区中的文件存储到本地仓库中
git push//和远端仓库进行同步

在push阶段还会让我们输入自己远端仓库的用户名和密码。
以上是主要的三板斧,接下来还有几个重要的指令

git clone //将远端仓库复制到本地中
git status //查看工作区中的文件修改记录
git rm 文件 //对远端文件进行删除,同时也会在status中有记录

四、gdb工具

1.快速认识一下

调试我们已经不再陌生了,在代码量大一点的程序中,我们都要用的到调试,这个gdb就是调试工具。

2、类比Windows使用

我们知道,程序一般都是有两个模式,一个是debug模式,另一个是release模式,只有debug模式比较适合让程序员进行调试的。但是Linux默认的是release模式,所以我们需要手动调回debug模式。只需要在makefile的依赖方法的最后加上一个-g即可。
在这里插入图片描述

创作不易,感谢阅读。

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

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

相关文章

C++ 继承 派生类的拷贝构造

继承 派生类的拷贝构造构造顺序拷贝构造 引例1: 当子类,不自实现拷贝构造时,默认调用父类的拷贝构造引例2: 子类自实现拷贝构造,不做特殊处理时,只会调用父类的构造器.引例3: 显示的调用父类的拷贝构造器。案例: 内嵌函数的拷贝构造 引例1 :当内嵌子对象,子类不自实现拷贝构造时…

Netty二

Netty 问题分析 bootstrap serverBootstrap pipeline和channelPipeline EventLoopGroup和实现类NioEventLoopGroup

U2net论文复现-简单解读-以及奇奇怪怪的改进-测试roc以及pr

论文地址:U2net论文地址 显著性目标检测: Salient ObjectDetetion(SOD)显著性目标检测,就是要把图片中最显著的物体分割出来,所以是二分类任务,只需要背景和前景。 1、Introduce 1.1、目前存在的2个挑战&#xff1…

Day-11 员工管理案例 增删改查、配置文件

SpringBootWeb案例 前面我们已经实现了员工信息的条件分页查询以及删除操作。 关于员工管理的功能,还有两个需要实现: 新增员工修改员工 首先我们先完成"新增员工"的功能开发,再完成"修改员工"的功能开发。而在"新…

Midjourney、Sora和硅谷机密-《分析模式》漫谈15

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的Preface(前言)有这么一句: Kent Beck, Ward Cunningham, and Jim Coplein encouraged me to get involved with the commu…

《Advanced RAG》-02-揭开 PDF 解析的神秘面纱

摘要 PDF 文件是非结构化文档的代表,但从 PDF 文档中提取信息是一个具有挑战性的过程。 PDF 文件由一系列指令组成,这些指令指示 PDF 阅读器或打印机在屏幕或纸张上显示符号的位置和方式。与 HTML 和 docx 等文件格式不同,后者使用标记来组织…

8月2日,贪心-买卖股票的最佳时期

大家好呀,今天我们看两道用贪心算法解的两道题,150道经典面试题中的买卖股票的最佳时期1和2。 1.买卖股票的最佳时期1 . - 力扣(LeetCode) 思路 对于这题,我们其实很容易想出暴力解,那就是从后往前找值&…

【文件系统】抽象磁盘的存储结构 CHS寻址法 | sector数组 | LAB数组

目录 1.为什么要抽象 2.逻辑抽象_版本1 2.1sector数组 ​2.2index转化CHS 3.逻辑抽象_版本2 3.1LBA数组 3.2LAB下标转化sector下标 文件其实就是在磁盘中占有几个扇区的问题❗文件是很多个sector的数组下标❗文件是有很多块构成的❗❗文件由很多扇区构成------>文件…

C语言刷题小记3

题目1 序列中删除指定数字 分析:本题要求我们来删除一个序列中指定的数字,这里大家要注意我们要删除的数字可能不止出现一次,所以我们需要用两个变量来进行处理,一个变量来遍历数组,一个变量来存储数组的位置&#xff…

H5 上使用腾讯位置服务选择收货信息

效果图 首先需要在腾讯位置服务上申请你自己的key,可参考地图选点组件 // 点击打开地图 backurl 是点击选中的位置点后,页面跳转至要返回的地址(backurl),会将位置信息添加到回跳地址(backurl&#xff0…

【威胁情报】新的 BingoMod Android 安卓恶意软件伪装成安全应用程序,清除数据

关注公众号网络研究观获取更多内容。 小心 BingoMod!这种危险的 Android 恶意软件会窃取您的钱财、清除您的手机数据并控制您的设备。 了解如何保护自己免受这种阴险威胁。保持在线安全! 计算机安全解决方案提供商 Cleafy 发现了一种狡猾的远程访问木…

PCIe总线-RK3588 PCIe RC初始化流程分析(十二)

1.简介 RK3588 PCIe RC的初始化涉及PCIe设备枚举、中断(INTx、MSI、MSI-X)配置、BAR配置、ATU配置、链路训练等,下面一一介绍。 2.初始化 当RC的模式为RK_PCIE_EP_TYPE时,平台驱动调用rk_add_pcie_port函数初始化RC&#xff0c…

如何将Maven子项目插入到Maven父项目中

Maven项目的融合具体方法: 1.在电脑本地磁盘拷贝Maven子项目; 2.用IDEA软件打开Maven父项目; 3.在IDEA中选中Maven父项目; 4.将复制好的的Maven子项目粘贴到Maven父项目中; 5.选中子项目的pom文件,右键选择…

apk反编译修改教程系列-----修改apk 解除软件限制功能 实例操作步骤解析_5【二十四】

解除apk功能 限制主要是一些app只有付费或者开通vip才可以使用所有功能。这些对于热爱反编译的你是不是比较愤慨,今天继续以一款app为大家来演示如何去除软件的限制功能。教程的目的主要是学习反编译的基础修改方法,了解app的修改步骤以及基础的入门修改常识。 反编译工具:…

无人机无人车固态锂电池技术详解

随着无人机和无人车技术的飞速发展,对高性能、高安全性电池的需求日益迫切。固态锂电池作为下一代电池技术的代表,正逐步从实验室走向市场,为无人机和无人车等应用领域带来革命性的变化。相比传统液态锂电池,固态锂电池在能量密度…

C++中的二维数组

引言 C语言的二维数组可直接用【】【】建立&#xff0c;C的数组更多实用vector<int>表示&#xff0c;那二维数组如何表示呢&#xff1f; 表示法 解读 vector<int>的含义是。 申请了一个连续空间vector&#xff0c;里面的数据是一个个的int vector<vector&l…

Spring - 解析 统一数据格式返回以及统一异常处理

接上篇文章的统一数据格式返回… 文章目录 1. 统一异常处理1.1 使用 2. 统一数据返回和统一异处理是怎么实现的2.1 initHandleAdapters2.2 initHandleExceptionResolvers 1. 统一异常处理 1.1 使用 统一异常处理的两个关键的注解是ControllerAdvice ExceptionHandler Contro…

C++入门基本语法(2)

一、引用 1、基本概念与定义 引用不是新定义一个变量&#xff0c;而是给已存在的变量起一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它所引用的变量公用同一块内存空间&#xff1b; 引用的写法&#xff1a;变量类型& 引用别名 变量&#xff…

第六周:机器学习

目录 摘要 Abstract 一、深度学习的优化算法 1、SGD 2、SGDM 3、Adagrad 4、RMSProp 5、Adam算法 二、分类器 三、卷积神经网络 总结 摘要 接着上周学习率在训练中的影响&#xff0c;本周对深度学习常见的几种优化算法做了总结&#xff0c;着重分析Adam算法的优缺…

太阳光强光照射实验在材料科学中的应用

强光照射实验方法 所谓的强光照射即使用人造太阳光模拟器设备模拟太阳光的真实光照环境。强光照射实验是一种在材料科学中常用的实验方法&#xff0c;主要用于研究材料在强烈光照条件下的稳定性、性能变化及其内在机制。实验通常涉及将材料置于特定波长和强度的光源下&#xff…