Linux 学习笔记(八)—— Linux 工具 3

一、make / makefile

make是一条指令;makefile是当前路径下的一个文件;两者配合使用

例makefile文件内容:

mycode: mycode.c ——  依赖关系:名为mycode的可执行文件依赖mycode.c的源文件

    (此处有个tab)    gcc -o mycode mycode.c  ——  依赖方法

clean:

    (此处有个tab)   rm -f mycode

有了这样的makefile文件以后,命令行只要敲“make”回车,那么mycode.c就会自动被编译;命令行只要敲“make clean”回车,那么mycode这个可执行文件就会被删除;

扩展:

  • 如果被依赖的文件不存在在外面的目录中,make会扫描makefile文件里的其它依赖关系,找到生成被依赖文件的其它依赖关系,递归生成,直至完成;
  • make扫描完外部文件和makefile内部依赖关系依旧找不到被依赖文件,则会中断并报错;
  • “make”指令是执行“makefile”文件里的第一行,如果第一行变成“clean: tab 内容”那么“make”就会执行清除;而代码编译就需要“make mycode”回车;(建议把最常用的编译代码放在最前面)
  • make编译代码的时候,如果代码没有更新(可执行程序的最新修改时间和源文件的最新修改时间比较,指令:stat 查看文件的时间数据),就不会重新编译了会显示无更新(提高编译效率);
  • 如果想要不管修没修改都编译的话,可以在上方加上“.PHONY:mycode.exe”,这样生成"mycode.exe"这个可执行文件的编译就是每次都执行了;(但不建议,因为这种重编译会在可执行文件里面修改而不是重头编译,会导致一些问题,可执行文件最好还是删掉重新编译)(建议在clean前面加.PHONY:clean)
  • mycode: mycode.c ——  依赖关系

        (此处有个tab)    gcc -o $@ $^  ——  $@表示依赖关系冒号左边的内容,$^表示依赖关系冒号右边的内容

  • 正常指令“make”的时候不仅会编译文件,还会回显依赖方法,如果不需要回显,可以在依赖方法先前加上@;
  • 注释用“#”

指令:stat [文件名]

功能:查看文件的时间数据

说明:Access 文件最近访问的时间(优化后访问好几次修改一次,避免过于频繁的修改;如果想修改Access用“touch [已存在文件名] —— 更新所有的时间”“touch -a ——  更新access”;"touch -m —— 修改modify时间";);modify 文件内容最近修改的时间;change 文件属性的最近修改时间;

二、应用(进度条)

前置:

  • 换行(\n):单纯的换到下一行的同一处位置;回车(\r):移到当前行的最开始;
  • 缓冲区:“printf("hellllllllo"); sleep(2);”会神奇的先休眠再打印,这是不合理的,因为打印出来的东西被存储到了标准输出流(flie* stdout)里面没有刷新;如果““printf("hellllllllo"); fflush(stdout); sleep(2);”像这样强制刷新就会先打印后休眠了;
  • 倒计时:【printf("%-2d\r", innt); fflush(stdout); sleep(1); innt--;】其中"%-2d\r"里2d是一次显示两个字符,如果innt是一个字符那么就是"空+字符";负号是想让字符左对齐,\r是每次跳转到这一行的最开始,覆盖掉原来的内容
\\ "proccess.h"

#include<stdio.h>

typedef void (*callback_t) (int)
typedef void (*callback_b) ()

typedef "=" STPY_O
typedef ">" NARROW
typedef NUM 103
char process_o[NUM] ={0}; 
\\ 主函数,调用download函数,此函数通过函数指针调用了进度条;
\\ main.c
#include "proccess.h"

void download(callback_t cb, callback_b intiti)
{
total = 1000;
curr = 0;
intit();
    while( curr <= total)
    {
    usleep(5000);  //单位毫秒
    int rate = curr * 100 / total;
    (*cb)(rate);
    curr++;
    }
printf("\n");
}

int main()
{
download(proccessbar, initia_bar);
return 0;
}
\\ proccessbar.c
#include "proccess.h"

void proccessbar(int rate)
{
if (rate < 0 || rate > NUM - 3) return;

process_o[rate] = "STPY_O";
process_o[rate + 1] = "NARROW";
cycle_o = {"|", "/","-","\"};
printf("%-100s""%d%%""[%c]\r",process_o, rate, cycle_o[ rate % 4]);
fflush(stdout);

}

void initia_bar()
{
memset(process_o, '\0', sizeof(process_o));
return 0;
}

三、git 命令行

git是一个具有网络功能的版本控制器,它是开源的,特点是客户端和服务端是一体的(即,客户可以把自己磁盘内容开源让别人访问);github 和 gitee都是基于git这个工具建立的商业版的网页;

创建gitee仓库:gitignore这个选项是忽略临时文件(会生成一个配置文件【.gitignore】,凡是在这个配置文件里的后缀都不会被添加到仓库),只上传头文件、源文件;

3.1 安装 git

yum install -y git

安装完后:git --version  可以看到git的安装版本

3.2 将gitee与Linux同步
  1. 创建gitee仓库;
  2. 克隆/下载:HTTPS网址复制;
  3. git clone 网址 ——  会创建一个和仓库名同名的目录;
  4. 将要放到gitee仓库里的东西放到该目录下;
  5. git add 地址,添加到本地仓库里进行管理;
  6. git commit -m "提交日志,做了什么,认真写";
  7. git push ——  上传到云端;

扩展:

  • git log :查看提交记录/日志;
  • git status :查看仓库中文件的托管状态;
  • 在首次使用git的时候需要配置git信息:[git config --global user.email "邮箱地址"] 、[git config --global user.name "名字"];注意:此处邮箱要和登录gitee的邮箱一致,才会结算工作量绿点点

四、gdb调试工具

指令:gdb [可执行程序] —— 进入调试状态

内部指令:

  • q/quit  ——  退出;
  • l/list  ——  显示代码;
  • l/list num ——  从第num行开始显示;
  • list 1 回车 回车 回车 —— 会从第一行一直往后显示;
  • list 函数名 —— 显示该函数对应代码;
  • r ——  开始运行;
  • b/breakpoint num  ——  在第num行打断点;
  • b 函数名  ——  在对应函数的起始行打断点;
  • b 文件名: num  ——  在该文件的对应行上打断点;
  • info b ——  查看断点信息,即看自己在哪里打了断点;
  • d num  ——  删除第num个断点,注意这里的num不是行号;
  • n/next  ——  逐过程运行,即不进入函数运行;
  • n 回车 回车 回车  ——  会一直向下运行;
  • s  ——  逐语句运行,即会进入到函数里运行;
  • s 回车 回车 回车  ——  会一直向下运行;
  • p 变量名  ——  查看变量当前的值;
  • display 变量名  ——  常显示变量当前的值,每走一步显示在当前语句的下面;
  • undisplay num  ——  取消num编号对应的变量的常显示;
  • until num  ——  直接跳到某一行;
  • finish  ——  跑完所在的函数;
  • c/continue  ——  从一个断点处直接运行到另一个断点处停止;
  • disable num  ——  将第num个断点失效,但不删除(改变info b显示的Enb列信息);
  • enable num  ——  将第num个断点从失效变为激活;
  • set var i=10  ——  在调试期间修改变量的值;
  • breaktrace/bt  ——  查看各级函数调用及参数;
  • info locals /  i locals  ——  查看局部变量的值;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值