【学习笔记之Linux】工具之make/Makefile与git

简介: 【学习笔记之Linux】工具之make/Makefile与git

make/Makefile:

背景知识:

一个工程中的源文件不计数,按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,那些文件需要重新编译等,可以说Makefile关系到了整个工程的编译规则,因此会不会写Makefile,能不能写好Makefile,说明了一个程序员完成大型工程的能力。

 Makefile带个程序员的好处就是自动化编译,只要写好Makefile,整个项目工程就能够完全自动编译,大大提高软件的开发效率。

Makefile介绍:

make是一个命令,Makefile是一个文件,两者搭配使用,就能实现项目自动化构建。通过touch先创建一个名为Makefile的文件,然后在Makefile文件中编写内容,编写完成后就可以在对应的目录下执行make命令。make会自动在目录下查找Makefile文件。

 Makefile更像是一个脚本语言,它的语法与编程语言是有区别的。Makefile实际上是一个很大的很深的技术点,这篇文章只是简单的介绍一下,如果想要深入学习可以看陈皓大佬的文章。刚学的话没必要马上就专研的很深。

Makefile规则:

  Makefile主要的规则是依赖关系和依赖方法。

target ...:prerequisites ...
  command
  ...
  ...


target是目标文件,执行make命令生成的文件名就是target文件的名字;

 prerequisites是生成target文件所需要的文件或者目标,他们之间是依赖关系,target依赖prerequisites生成,一个目标文件可以依赖多个文件生成;

 command是make需要执行的命令,可以是任何的shell命令,这就是与之对应的依赖方法。

实例:

  这里我已经写好Makefile文件和对应的C文件,之后会贴源码。

db7a79e984c64f9dbb38af0a445cdd98.png

//main.c文件
#include "proc.h"
int main()
{                                                                                                                                                         
    process();
    return 0;
}
//proc.c文件
#include "proc.h" 
#define SIZE 52
#define STYLE '='
#define ARR '>'
void process()
{
   const char *lable = "|/-\\";
   char bar[SIZE];
   memset(bar, '\0', sizeof(bar));
   int i = 0;
   while( i <= 50 )
   {
     printf("[%-50s][%d%%][%c]\r", bar, i * 2, lable[i%4]);
     fflush(stdout);
     bar[i++] = STYLE;
     if(i != 50)
     bar[i] = ARR;
     usleep(100000);
   }
   printf("\n");
}
//proc.h文件
#pragma once  
#include <stdio.h>
#include <string.h>
#include <unistd.h>
extern void process();
myprocess:main.c proc.c                                                                                                                                   
   gcc -o myprocess main.c proc.c
.PHONY:clean
clean:
   rm -f myprocess

.PHONY表示clean是一个伪目标,为目标不是一个文件,只是一个标签,所以make命令无法生成它的依赖关系和决定他是否要执行,需要我们显示地指明这个目标才能让其生效。伪目标取名不能和文件名重名,不然失去意义了。

d2bb73c09d2b4e4c9b671067a93d9a4d.png

git:


在Linux中,git需要自己进行下载,yum install git,就可以安装git了,如果是普通用户需要sudo提权,或者换到root用户安装。

 先建好远端仓库,然后克隆就行了,git clone url(对应仓库的链接)。

 然后就是git三板斧,最常用的添加、提交、推送。添加:git add 添加内容,将修改内容添加到缓存区;提交git commit -m “对提交内容进行描述”,把修改内容提交到本地仓库;推送:git push,把已经提交到本地仓库的内容推送到远端仓库。

 没有进行过全局配置,每次推送都会需要输入邮箱和密码。

8a6ce4812b2745d39b8f147daad87fcc.png

目录
相关文章
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
165 8
|
2月前
|
Linux 网络安全 开发工具
Git学习笔记(一):基础与应用
本文档详细介绍了如何将本地项目关联到Gitee上的空仓库并上传代码,以及如何验证本机与Git服务器的SSH连接。同时,还概述了Git的基本概念、安装步骤、初始配置、常见命令及如何配置多个SSH-Key,适用于初学者快速上手Git操作。
119 51
Git学习笔记(一):基础与应用
|
3天前
|
安全 网络协议 Linux
结合 `nc` 工具利用笑脸漏洞(Smile Bug)攻击 Metasploitable2 Linux
本文介绍如何使用 `nc`(Netcat)工具结合笑脸漏洞(Smiley Bug)攻击 Metasploitable2 Linux 靶机。首先概述了 `nc` 的基本功能和高级用法,包括建立连接、监听端口、文件传输等操作。接着详细描述了笑脸漏洞的原理及其在网络攻防中的应用,展示了通过 `nc` 发送恶意输入检测漏洞的方法。最后结合 Python 脚本实现更复杂的攻击场景,并强调了合法性和环境隔离的重要性。
31 13
|
11天前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
|
2月前
|
存储 开发工具 git
git工具使用教程全讲解
本文介绍了版本控制的概念及其重要性,详细对比了多种版本控制工具,如VSS、CVS、SVN和Git,重点讲解了Git的基本使用方法、工作原理及与SVN的区别。此外,文章还介绍了GitHub、GitLab和Gitee等流行的代码托管平台,以及如何在这些平台上注册账号、创建和管理仓库。最后,文章还提供了如何在IntelliJ IDEA中配置和使用Git的具体步骤。
75 1
|
2月前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
200 1
|
2月前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
105 1
|
8月前
|
Linux Shell 开发工具
Git 安装和配置教程:Windows - Mac - Linux 三平台详细图文教程,带你一次性搞 Git 环境
Git是一款免费、开源的分布式版本控制系统,广泛应用于软件开发领域。随着开源和云计算的发展,Git已经成为了开发者必备的工具之一。本文将为大家介绍Git在Windows、Mac和Linux三个平台上的安装和配置方法,带你一次性搞定Git环境
3086 0
|
JavaScript Java Unix
【Git】一文带你入门Git分布式版本控制系统(简介,安装,Linux命令)
【Git】一文带你入门Git分布式版本控制系统(简介,安装,Linux命令)
|
Linux 网络安全 开发工具
Git - 安装 & 配置(Linux)
Git - 安装 & 配置(Linux)
278 0
Git - 安装 & 配置(Linux)
下一篇
开通oss服务