【linux基础(七)】Linux中的开发工具(下)--make/makefile和git

这篇具有很好参考价值的文章主要介绍了【linux基础(七)】Linux中的开发工具(下)--make/makefile和git。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💓博主CSDN主页:杭电码农-NEO💓

⏩专栏分类:Linux从入门到开通⏪

🚚代码仓库:NEO的学习日记🚚

🌹关注我🫵带你学更多操作系统知识
  🔝🔝


【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维

1. 前言

如果你不知道什么是vim和gcc
请先阅读这两篇文章后再学习本节:

文章一: vim和yum
文章二: gcc/g++

本章重点:

本篇文章会着重讲解Linux中的
自动化构建代码工具: make/makefile
的介绍与使用,并且将再次熟悉并拓展
文件的属性相关概念和指令,最后
讲解代码管理仓库git的使用方法

在Linux下编译代码时,每次都会输入

gcc code.c -o code.exe

在删除可执行程序时,每次都会输入

rm -rf code.exe

这样非常的不方便,很麻烦,于是乎学习
自动化构建代码是很重要的,它可以提高
我们之后在Linux下编程的效率!


2. make和makefile介绍

首先,make是一条指令,而makefile是一个文件
makefile是需要自己创建的一个文件
并且makefile是一个具有特定格式的文本文件

在当前目录创建makefile文件,再用vim编辑

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维

不要问这代码是什么意思,先写这段代码
请注意,第二行是以TAB键开头
不管你的TAB键是向后移动两格
还是四格,固定格式是以TAB开头

写好后在底行模式用wq保存并退出

在当前目录下我有一个.c文件叫csdn.c
现在我想自动化构建代码只需要

使用指令: make

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维
此时我们需要删除这个可执行程序

使用指令: make clean

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维


3. make和makefile再理解

在上面使用make指令时,其实我们执行的是

make = make mybin

输入make mybin也可以自动化构建代码
这是因为:

在首次使用make时,会从上到下扫描
makefile文件,若发现了第一个目标
文件,就会执行它,所以makefile文件中
的第一个指令可以直接使用make执行
而后面的指令的make后面需要跟特定的指令

现在将这两个代码的位置交换:

.PHONY:clean 
clean:
    rm -rf mybin                                                                                                                                                     
mybin:csdn.c
    gcc csdn.c -o mybin 

然后再使用make指令

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维

此时它们的使用就交换了!


4. 伪目标的定义以及性质

在makefile文件中,我们写了这样一段代码:

.PHONY:clean
clean:
	rm -rf mybin

.PHONY是将clean指令修饰成了伪目标

这样做有什么用?mybin没有修饰
那么clean和mybin有什么区别?
来看下面的指令:

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维

可以发现,clean指令被修饰成伪目标后
每次使用它都会执行相应的指令
然而mybin在执行了一次后,就无法在
短时间内程序执行了

以我们目前的经验来看有两个结论:

  1. 被修饰成伪目标后,此文件总是被执行
  2. make总是不让重新编译代码

那么为什么不是伪目标的文件
不能实时刷新呢?请看接下来的讲解


5. 文件的三个属性

在了解文件的三个属性之前
我们要先了解系统是怎样做到第二次
make的时候将我们的请求驳回的?

现在我们知道一个事实:
一点是先有源文件才有可执行程序

所以在文件第一次编写后编译代码时
此时的源文件修改时间一定是小于
生成的可执行程序文件的修改时间
所以在第二次make时,系统发现源文件
的修改时间还是小于可执行程序的
所以系统驳回了请求,然而当我们修改
了源文件后,还没有编译时,此时源文件
修改时间大于可执行程序的修改时间
所以程序会接受我们的请求!

查看文件的属性:

使用指令: stat 文件名

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维

这些信息你可能看的不太懂,但是没关系
我们今天的主角是红框中的三个文件属性
现在用下图来隆重介绍一下它们:

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维

我们经常说,文件等于内容+属性
修改文件的内容可能会影响文件属性
因为增加或减少代码会影响文件的大小
然而修改文件的属性不会影响文件内容
比如修改文件的拥有者,修改文件权限等

上面的过程大家可以自行下来验证一下

这里想要带给大家的结论是:
看文件的频次是最频繁的,所以access
时间并不是实时更新的!

可以通过下面的视频来验证一下:

access时间的更新

所以现在能够解释为什么系统
不让我们频繁的进行编译代码操作了!
而伪目标的作用就是强制执行指令


6. makefile推导能力和特殊指令

在makefile文件中时常能写出有趣的代码
这里给大家举个例子:

mybin:csdn.o
    gcc csdn.o -o mybin 
csdn.o:csdn.s
    gcc -c csdn.s -o csdn.o
csdn.s:csdn.i
    gcc -S code.i -o csdn.s
csdn.i:csdn.c
    gcc -E csdn.c -o csdn.i 

这段代码是什么意思呢?

首先,mybin依赖的是.o文件
但是系统中此时没有.o文件
就会执行下一条指令,但是.o文件
依赖的是.s文件,系统中此时没有.s文件
又会跳到下一条指令,以此往复直到
找到系统中存在的.c文件,再倒推回去

当然这只是做一个了解,这就是推导能力

除此之外,在makefile中还可以定义变量

target=mybin                                                                                                                                                        
cc=gcc 
src=csdn.c   
$(target):$(src) 
    $(cc) $(src) -o $(target)
.PHONY:clean 
clean: 
    rm -rf $(target)

这样写你还认识之前的代码吗?
在要替换的内容前加上$和()即可
像C语言定义变量一样编辑代码

并且,可以用$^代表依赖关系的左边
可以用$@代表依赖关系的右边

比如:

mybin:csdn.c
     gcc $@ -o $^
.PHONY:clean  
clean: 
     rm -rf mybin

这里的$^就代表csdn.c

如果你不想一条指令被打印在显示器
可以在指令前加上@符号

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维


7. git的简单介绍以及使用

git是一种代码管理器,写git程序的和
写Linux系统的是同一个人,所以Linux
可以直接和gitee或GitHub相关联!

这里使用gitee举例子:先在远端创建仓库

Linux下的gitee创建仓库

在创建好仓库后,复杂https的链接

使用指令: git clone 链接

即可将远端仓库克隆到本地
接下来的操作和Windows上的三板斧相似:

首先在本地仓库创建一份文件:

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维


7.1 git三板斧之add

我们在当前目录下直接输入指令:

git add 文件名 或 git add .

前者是添加特定的文件到本地仓库
后者是将当前目录下所有文件提交

输入完这条指令后,文件就已经
被添加到本地仓库了

那么怎样在本地仓库查看有哪些文件呢?

使用指令: git status

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维

可以发现,本地仓库中还有test.c
没有被提交到远端仓库!


7.2 git三板斧之commit

请注意,在commit时一定要输入日志

使用指令: git commit -m "日志"

日志一定不要乱写!
日志一定不要乱写!
日志一定不要乱写!

重要的事情说三遍,有些面试官会查看
你的gitee或GitHub,就会去看日志!

比如这里我可以这样写日志:

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维

输入此指令后,如果你是第一次输入
系统可能会让你输入邮箱和用户名密码
这时系统会将指令的格式给你显示出来
你只需要将格式中引号内的内容改成
你的自己的邮箱或用户有即可!

显示这样的内容代表成功了!

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维


7.3 git三板斧之push

在commit输入完日志后,输入指令:

git push

将本地仓库的文件推送至远端仓库!

输入这条指令后,会显示这样的画面:

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维
输入你自己的账号和密码即可推送成功!

请注意,账号最好输入下图红框的内容

(注意不要加上@符号)

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git,Linux从入门到精通,linux,git,运维


8. 总结以及拓展

Linux下的开发工具不止于此
还有常用的调试工具gdb等等
并且make/makefile现在只是入门
要真正把make/makefile搞懂至少得用10篇博客!
所以这里只做了makefile得简单介绍,够用就行!

大家要维护好自己的gitee或GitHub
一年都百分之80都是小绿点会很加分的!

拓展阅读:关于git的历史故事:

git的历史故事文章来源地址https://www.toymoban.com/news/detail-713048.html


🔎 下期预告:Linux进程概念 🔍

到了这里,关于【linux基础(七)】Linux中的开发工具(下)--make/makefile和git的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux开发工具Make/Makefile篇

    我们使用gcc/g++编译代码时,每次都要输入一长串的指令,对于单个文件或者文件较少的时候,我们还能接受,可是当文件较多的时候,我们再一个一个编译,就会比较麻烦。Linux中 make 命令加上 Makefile 文件搭配使用,就可以完成项目的自动化构建。 C代码 创建makefile文件 写入

    2024年02月12日
    浏览(33)
  • 【Linux】基础开发工具——make

    上一期分享了在Linux下编译源代码的两个工具,gcc和g++。每次编译源代码,都要输入一串很长的指令,这个过程显然是十分复杂,且容易出错的,尤其是在一些大型的项目中,源代码可能有多个,此时编译起来就会更费劲。为了解决上面的问题,今天就给大家分享一个,Linu

    2024年02月16日
    浏览(36)
  • Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具

    目录 Ⅰ.  Linux 软件包管理器 yum 一、yum 背景知识 二、yum 的基本使用 1、查看软件包 2、软件包名称构成 3、安装软件 4、卸载软件 Ⅱ.vim编辑器  一、认识vim 1、vim概念  2、模式及其切换  二、vim使用 1、vim的指令(重要)  命令模式 插入模式 底行模式 2、vim配置 Ⅲ.gcc/g++编

    2024年02月05日
    浏览(52)
  • 【Linux取经路】基础开发工具——make

    上一期分享了在Linux下编译源代码的两个工具,gcc和g++。每次编译源代码,都要输入一串很长的指令,这个过程显然是十分复杂,且容易出错的,尤其是在一些大型的项目中,源代码可能有多个,此时编译起来就会更费劲。为了解决上面的问题,今天就给大家分享一个,Linu

    2024年02月14日
    浏览(34)
  • Linux中的开发工具(yum,vim,gcc/g++,gdb,Makefile,git)

    yum(Yellow dog Updater,Modified)是Linux下非常常用的一种 包管理器 。主要应用在Fedora,RedHat,Centos等发行版上。 和手机上的软件商店类似,我们可以使用 yum 来下载各种我们想要的软件包。使用 yum 时必须联网。 yum 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装

    2024年02月08日
    浏览(43)
  • [Linux 基础] make、Makefile自动化构建工具

    make是一个命令,Makefile是一个在当前目录下存在的一个具有特定格式的文本文件。 在VS编译器中,我们在编译执行代码的时候ctrl+f5就可以了,而在linux中我们需要使用gcc/g++ 配合选项并需要正确的格式才可以完成编译,这样是比较麻烦的,我们make与Makefile可以实现自动化构建

    2024年02月06日
    浏览(38)
  • [Linux 基础] make、Makefile自动化构建代码工具

    make是一个命令,Makefile是一个在当前目录下存在的一个具有特定格式的文本文件。 在VS编译器中,我们在编译执行代码的时候ctrl+f5就可以了,而在linux中我们需要使用gcc/g++ 配合选项并需要正确的格式才可以完成编译,这样是比较麻烦的,我们make与Makefile可以实现自动化构建

    2024年02月08日
    浏览(43)
  • Linux 开发工具vim、gcc/g++、makefile

    目录 Linux编辑器-vim 1. 基本概念 2. 基本操作 3. 正常模式命令集 4. 末行模式命令集 5. 其他操作 6. 简单vim配置 Linux编译器-gcc/g++ 1、基本概念  2、程序翻译的过程 3. gcc如何完成程序翻译 4、动静态库  Linux项目自动化构建工具-make/Makefile 1、背景 2、创建makefile 3、原理 5、项目清

    2024年03月11日
    浏览(64)
  • 【linux基础(六)】Linux中的开发工具(中)--gcc/g++

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到开通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 如果你不知道vim的各种用法和快捷键 请先阅读上一篇文章: yum和vim详解 现在,我们可以在Linux下编辑代码了 编辑好的文件是

    2024年02月07日
    浏览(34)
  • 【linux基础(五)】Linux中的开发工具(上)---yum和vim

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到开通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 理解了Linux基本指令和权限之后 终于开始了与代码相关的工具的使用 想必各位早已听说过vim的大名,这篇文章 将带你深入浅

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包