Linux第一个小程序git三板斧

目录

        1.Linux项目自动化构建工具 - make/makefile

        1.1.makefile原理

        1.2.项目清理

        2.第一个小程序 - 进度条

        3.git三板斧

1.Linux项目自动化构建工具 - make/makefile

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

makefile是一个围绕依赖关系和依赖方法构建的一个自动化编译的工具!!!

一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。在我们的第一个小程序中,就会用到makefile。

1.1.makefile原理

        例:

        依赖关系

                文件 hello ,它依赖 hell.o

                hello.o , 它依赖 hello.s

                hello.s , 它依赖 hello.i

                hello.i , 它依赖 hello.c

        依赖方法 

         gcc hello.* -o hello.* 

        1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。

        2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“hello”这个文件, 并把这个文件作为最终的目标文件。

        3. 如果hello文件不存在,或是hello所依赖的后面的hello.o文件的文件修改时间要比hello这个文件新(可 以用 touch 测试),那么,他就会执行后面所定义的命令来生成hello这个文件。

        4. 如果hello所依赖的hello.o文件不存在,那么make会在当前文件中找目标为hello.o文件的依赖性,如果找到则再根据那一个规则生成hello.o文件。(这有点像一个堆栈的过程)

        5. 当然,你的C文件和H文件是存在的啦,于是make会生成 hello.o 文件,然后再用 hello.o 文件声明 make的终极任务,也就是执行文件hello了。

        6. 这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。

        7. 在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错, 而对于所定义的命令的错误,或是编译不成功,make根本不理。

        8. make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起, 我就不工作啦。

1.2.项目清理

          ✱工程是需要被清理的

          ✱像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行, 不过,我们可以显示要make执行。即命令——“make clean”,以此来清除所有的目标文件,以便重编译。

          ✱但是一般我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是,总是被执行的。 可以将我们的 hello 目标文件声明成伪目标,测试一下。

2.第一个小程序 - 进度条

   进度条大家应该都不陌生,但是要写一个我们自己的进度条,其中很多细节还需要注意。 

   我们可以自己设置背景颜色和字体颜色

  1 #include"proc.h"
  2 #include<string.h>
  3 #include<unistd.h>
  4 
  5 #define SIZE 102
  6 #define STYLE '$'
  7 #define ARR '>' 
  8 
  9 void process()                                                                                                                                      
 10 {
 11   const char* lable = "|/-\\";
 12   char bar[SIZE];
 13   memset(bar,'\0',sizeof(bar));
 14   int i = 0;
 15   while(i <= 100)
 16   {
 17     printf("[\033[42;32;31m%-100s\033[0m][%d%%][%c]\r",bar, i, lable[i%4]);
 18     fflush(stdout);
 19     bar[i++] = STYLE;
 20     if(i != 100)
 21       bar[i] = ARR;
 22     usleep(100000);
 23   }
 24   printf("\n");
 25 }

最终效果展示: 

 

3.git三板斧

• 三板斧第一招:git add

将代码放到刚才下载好的目录中

git add 文件名 

• 三板斧第二招:git commit

 提交改动到本地

git commit .

注意:最后的“.”表示当前目录

提交的时候应该注明提交日志,详细描述改动的内容

 • 三板斧第三招:git push

同步到远端服务器上

git push

 需要填入用户名密码. 同步成功后, 刷新 Github / Gitee页面就能看到代码改动了。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA开发(自研项目的开发与推广)

案例背景&#xff1a; 作为JAVA开发人员&#xff0c;我们可以开发无数多的web项目&#xff0c;电商系统&#xff0c;小程序&#xff0c;H5商城。有时候作为技术研发负责人&#xff0c;项目做成了有时候也需要对内进行内测&#xff0c;对外进行推广。在此老司机分享自己主导开发…

BeanPostProcessor原理分析

文章目录一、BeanPostProcessor的作用1. 源码2. 使用案例二、Spring生命周期中的BeanPostProcessor三、BeanPostProcessor对PostConstruct的支持四、BeanPostProcessor中的顺序性五、总结一、BeanPostProcessor的作用 BeanPostProcessor提供了初始化前后回调的方法&#xff0c;…

Flutter内阴影

前言 在前几天的业务需求中&#xff0c;UI给出的页面中有新拟态的按钮&#xff0c;就是带内部阴影的按钮&#xff0c;如果是利用css中box-shadow的属性&#xff0c;那么实现起来很简单&#xff0c;但是奈何Flutter中的Container的BoxShadow不具备inset内部阴影的功能&#xff…

人脸识别经典网络-MTCNN(含Python源码实现)

人脸检测-mtcnn 本文参加新星计划人工智能赛道&#xff1a;https://bbs.csdn.net/topics/613989052 文章目录人脸检测-mtcnn1. 人脸检测1.1 人脸检测概述1.2 人脸检测的难点1.3 人脸检测的应用场景2. mtcnn2.1 mtcnn概述2.2 mtcnn的网络结构2.3 图像金字塔2.4 P-Net2.5 R-Net2…

Java语言-----类与对象的秘密

目录 前言 一、类与对象的介绍 二、类的实例化 三.类与对象的使用方法 3.1对象的初始化 3.2内存显示图 四.this的使用方法 总结 &#x1f63d;个人主页&#xff1a; tq02的博客_CSDN博客-C语言,Java领域博主 &#x1f308;理想目标&#xff1a;努力学习&#xff0c;向Java进…

Django(一)安装

好久没更新了 学习的内容太多了有点杂 一时不知道从何说起 !!! 对于Django我也不是很了解 在网上搜了个词条就是以下显示 我目前的了解也仅限于此 希望在接下来的学习过程中 有更多的学习体会可以和大家分享 一涉及到在对应python环境 下载东西时思维就会很混乱 这里再把之前…

计算机网络(第十二弹) --- 传统访问过程与 CDN 访问过程对比

CDN 是构建在现有网络基础之上的智能虚拟网络, 依靠部署在各地的边缘服务器, 通过中心平台的负载均衡 / 内容分发 / 调度等功能模块, 使用户就近获取所需内容, 降低网络拥塞, 提高用户访问响应速度和命中率;   当用户访问网站时, 利用全局负载均衡技术将用户的访问指向距离最近…

CSS 实现六边形柱状图

前言 &#x1f44f;CSS 实现六边形柱状图 速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义全局css变量&#xff0c;柱状宽度为–w&#xff0c;最大高度为–h&#xff0c;柱形整体为渐变色&#xff0c;定义上部分颜色为…

MySQL注入秘籍【绕过篇】

MySQL注入秘籍【绕过篇】1.通用方法2.绕过空格3.绕过引号4.绕过逗号,5.绕过等号6.绕过and/or7.绕过注释符8.绕过函数检测1.通用方法 编码 编码无非就是hex、url等等编码&#xff0c;让传到数据库的数据能够解析的即可&#xff0c;比如URL编码一般在传给业务的时候就会自动解码…

【Java Spring基本问题】记录面试题宝典中自己不熟悉的Spring问题

文章目录Spring Bean定义装配Spring Bean生命周期Spring Bean容器Spring 循环依赖Spring 事务Autowired和ResourceSpring Bean定义装配 参考文章 1. 定义Spring Bean的三种方式 XML文件定义Spring Bean JavaConfig定义Spring Bean Component注解定义SpringBean 2. 装配Spri…

Java现在好找工作吗?

Java到2023年已经28岁了&#xff0c;可能你会怀疑它是否还一如当年一样的强大&#xff0c;在应用层领域独占鳌头。但是基于Java庞大的市场占有率和需求&#xff0c;它依然在保持着更新迭代&#xff0c;依然是最常用的底层开发语言&#xff0c;基于其安全性、开放性、稳定性和跨…

C语言运算符和表达式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、运算符1.算术运算符加()、减(-)、乘(*)、除(/)、取余(%)自增()、自减(–)2.关系运算符3.逻辑运算符4.运算符优先级二、表达式总结前言 本篇文章将带大家学习…

python基于XGBoost开发构建海上船舶航行轨迹多变量序列预测分析模型

在船舶航行状态评估、船舶碰撞概率检测等场景种有着对海面船舶航行轨迹较高的预测需求&#xff0c;准确实时地对航行轨迹进行预测分析有助于评估船舶航行的状态&#xff0c;及时对可能存在的潜在威胁进行发现预警处理&#xff0c;航行轨迹预测本质上来讲就是时间序列建模&#…

一个比较全面的C#公共帮助类

上次跟大家推荐过2个C#开发工具箱&#xff1a;《推荐一个不到2MB的C#开发工具箱&#xff0c;集成了上千个常用操作类》、《推荐一个.Net常用代码集合&#xff0c;助你高效完成业务》。 今天再给大家推荐一个&#xff0c;这几个部分代码功能有重合的部分&#xff0c;大家可以根…

【网络安全工程师】从零基础到进阶,看这一篇就够了

学前感言 1.这是一条需要坚持的道路&#xff0c;如果你只有三分钟的热情那么可以放弃往下看了。 2.多练多想&#xff0c;不要离开了教程什么都不会&#xff0c;最好看完教程自己独立完成技术方面的开发。 3.有问题多google,baidu…我们往往都遇不到好心的大神&#xff0c;谁…

【数据结构与算法】用栈实现队列

文章目录&#x1f63b;前言如何用栈实现队列&#xff1f;用栈实现队列整体的实现代码&#x1f63c;写在最后&#x1f63b;前言 &#x1f61d;上一章我们用队列实现了一个栈&#xff08;-> 传送门 <-&#xff09;&#xff0c;而这一章就带大家用栈实现一个队列。 &#x1…

STM32学习(五)

GPIO General Purpose Input Output&#xff0c;通用输入输出端口&#xff0c;简称GPIO。 作用&#xff1a; 采集外部器件的信息&#xff08;输入&#xff09;控制外部器件的工作&#xff08;输出&#xff09; GPIO特点 1&#xff0c;不同型号&#xff0c;IO口数量可能不一样…

SpringBoot基础教程

springboot基础 一、springboot介绍 Spring Boot 提供一种快速使用spring的方式&#xff0c;基于约定大于配置的思想&#xff0c;可以让开发者不必在配置与逻辑业务中来回进行思维切换&#xff0c;全身心的投入到业务的代码编写中&#xff0c;从而大大提高了开发效率。2014年…

数据结构——栈和队列(2)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年3月22日 内容&#xff1a;数据结构栈和队列知识讲解 目录 前言&#xff1a; 1.队列的概念及构成&#xff1a; 2.队列的插入和删除操作&#xff1a; 3.队列的实现&#xff1a; 1.创建文件&#xff1a; 2.定义结构体&…

基于SpringBoot的学生成绩管理系统

本系统使用SpringBoot进行开发&#xff0c;供大家参考。 开发工具可以选用Eclipse或者IDEA 数据库使用Mysql。 需要相关安装的可以看我之前的文章或者私信我。 简介 现今&#xff0c;越来越多的人乐于选择一项合适的管理方案&#xff0c;但是普通用户往往受到管理经验地限…
最新文章