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

目录

一、前言

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

二、make和makefile工具

1.快速认识一下

make实质上是一个指令,makefile实质上是一个文本文件 。makefile的作用主要是为了实现自动化构建项目,进行指定描述如何对源代码进行编译和链接。

接下来我们看一下如何简单的使用一下

这个makefile的功能就是通过main.c和processbar.c两个源文件中的代码进行编译和链接,最终生成processbar这个可执行程序。

2.依赖关系和依赖方法

在上面这个例子中

powershell 复制代码
processbar:main.c processbar.c

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

powershell 复制代码
gcc -o $@ $^

这个则为依赖方法,必须通过依赖方法才能将依赖文件列表转换成依赖对象 。其中,我们可以关注到,其实所谓的依赖方法就是通过gcc或者g++编译器进行编译的过程。 其中$^,是指整个依赖文件列表,在需要有多个源文件同时转换成一个可执行程序的时候,我们可以便捷的使用这个符号。

此外,因为整个编译过程是分为预处理,编译,汇编,链接四个阶段,所以我们的依赖关系也就变得多种多样起来

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

3.执行原理

我们在讲述完makefile之后,再来进行makefile和make的联动,make就是对makefile中的指令进行执行,一般而言是从上到下 ,挨个进行执行,但同时也遵循显示依赖关系,即依赖的源文件会先被执行。

make的执行还有个特点,make形成可执行程序只编译最新更新的一次,通过对比acm时间

同时也存在一种不受时间限制的执行对象,就是伪目标,这种对象一般不受更新时间的限制,直接进行更新,一般都是一些不产生实质性文件的操作,因为频繁的产生文件会导致效率严重低下,像清理之类的操作会被设置成为伪目标。

三、Git工具

1.快速认识一下

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

git的使用一般就是三板斧:

powershell 复制代码
git add .
git commit -m "备注"
git push

2.git的使用

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

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

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

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

四、gdb工具

1.快速认识一下

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

2、类比Windows使用

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

创作不易,感谢阅读。

相关推荐
牧以南歌〆2 小时前
在Ubuntu主机中修改ARM Linux开发板的根文件系统
linux·arm开发·驱动开发·ubuntu
ai小鬼头2 小时前
Ollama+OpenWeb最新版0.42+0.3.35一键安装教程,轻松搞定AI模型部署
后端·架构·github
emplace_back3 小时前
C# 集合表达式和展开运算符 (..) 详解
开发语言·windows·c#
萧曵 丶3 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust
夜月yeyue3 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
老任与码4 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
kfepiza4 小时前
Debian的`/etc/network/interfaces`的`allow-hotplug`和`auto`对比讲解 笔记250704
linux·服务器·网络·笔记·debian
华子w9089258594 小时前
基于 SpringBoot+VueJS 的农产品研究报告管理系统设计与实现
vue.js·spring boot·后端
星辰离彬5 小时前
Java 与 MySQL 性能优化:Java应用中MySQL慢SQL诊断与优化实战
java·后端·sql·mysql·性能优化
cuijiecheng20185 小时前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu