【学习笔记之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

目录
相关文章
|
4天前
|
数据挖掘 大数据 Linux
探索Linux中的snice命令:一个虚构但启发性的数据分析工具
`snice`是一个想象中的Linux命令,用于低优先级地从大数据集中抽样数据。它结合`nice`和`sampling`,支持多种抽样策略,如随机和分层。参数包括指定样本数、策略、输入输出文件和进程优先级。示例:`snice -n 1000 -s random -i large_log.txt -o sample_log.txt`。使用时注意资源管理、数据完整性及权限,并与其它工具结合使用。虽然虚构,但体现了Linux工具在数据分析中的潜力。
|
10天前
|
存储 Unix Linux
探索Linux中的sed命令:强大的文本处理工具
`sed`是Linux/Unix的流编辑器,用于文本替换、删除、新增等操作,无需直接编辑文件。它逐行处理输入,存储在模式空间,执行脚本后输出。主要特点是非交互、支持正则表达式和简洁语法。示例:`sed &#39;s/apple/orange/g&#39; example.txt`替换文本,`/error/d`删除包含&quot;error&quot;的行,`a\---`在每行后加&quot;---&quot;。使用时注意备份、测试命令和理解正则表达式。
|
12天前
|
监控 算法 Linux
Linux下工具tc详细讲解及限制IP和端口实例
TC (Traffic Control) 是Linux内核中提供的一个用于控制和管理网络流量的强大工具,它允许用户实现QoS(Quality of Service)策略,包括带宽限制、优先级控制、延迟保证等。TC基于内核的队列 discipline (qdisc) 和流量类别(class) 体系结构,允许对进入或离开网络接口的数据流进行复杂的整形和过滤。
|
12天前
|
运维 Linux 应用服务中间件
Linux之自动化运维工具ansible、ansible模块(2)
Linux之自动化运维工具ansible、ansible模块(2)
|
2月前
|
Linux Shell 开发工具
Git 安装和配置教程:Windows - Mac - Linux 三平台详细图文教程,带你一次性搞 Git 环境
Git是一款免费、开源的分布式版本控制系统,广泛应用于软件开发领域。随着开源和云计算的发展,Git已经成为了开发者必备的工具之一。本文将为大家介绍Git在Windows、Mac和Linux三个平台上的安装和配置方法,带你一次性搞定Git环境
1832 0
|
JavaScript Java Unix
【Git】一文带你入门Git分布式版本控制系统(简介,安装,Linux命令)
【Git】一文带你入门Git分布式版本控制系统(简介,安装,Linux命令)
|
Linux 网络安全 开发工具
Git - 安装 & 配置(Linux)
Git - 安装 & 配置(Linux)
242 0
Git - 安装 & 配置(Linux)
|
Linux 开发工具 C语言
Git - Linux 安装 Git
Git - Linux 安装 Git
407 0
Git - Linux 安装 Git