当前位置: 首页 > news >正文

Linux Day04

目录

一、文件压缩与解压命令

1.1 tar cvf 文件名    ---打包命令生成.tar

 1.2 tar xvf 文件名   ----解开包  生成文件

 1.3 gzip +.tar    压缩 生成.tar.gz压缩包

1.4 gzip -d +.tar.gz    解压成包

1.5 直接把压缩包解压成文件  tar zxf +.tar.gz

二、Linux 系统上 C 程序的编译与调试

2.1 c程序执行需要经过四个步骤

2.2 多个文件的编译

 2.3 Makefile 文件使用

2.3.1多个步骤

2.3.2一次生成

 2.4 gdb调试


一、文件压缩与解压命令

tar
将文件打包或者解包
c 创建包文件
f 指定目标为文件而不是设备
v 显示详细过程
t 显示包中的内容而不释放
x 释放包中的内容
z GNU 版本新加的,使得 tar 有压缩和解压的功能

1.1 tar cvf 文件名    ---打包命令生成.tar

 1.2 tar xvf 文件名   ----解开包  生成文件

 1.3 gzip +.tar    压缩 生成.tar.gz压缩包

1.4 gzip -d +.tar.gz    解压成包

然后+1.2的命令就能将压缩包解成两个文件

1.5 直接把压缩包解压成文件  tar zxf +.tar.gz

二、Linux 系统上 C 程序的编译与调试

2.1 c程序执行需要经过四个步骤

 

使用gcc编译程序分为四步:

预编译:gcc -E hello.c -o  hello.i

编译:gcc -S hello.i -o hello.s

汇编:gcc -c hello.s -o hello.o

链接:gcc hello.o -o hello

 

也可以是一步:gcc -o hello hello.c 然后./hello

2.2 多个文件的编译

方法一:

 方法二:gcc -o   可执行程序  文件.c

 2.3 Makefile 文件使用

管理工程 实现自动化编译
根据makefile文件中的内容,将整个工程编译链接
vi makefile

2.3.1多个步骤

 

all:可执行文件
main:依赖关系  可以写由.o文件构建也可以用.c文件构建

 

2.3.2一次生成

 

当我们没有改变代码或者删除可执行文件还有.o文件时继续输入make会显示

删除可执行文件还有.o文件

rm -rf *.o main这行命令在makefile文件中

 2.4 gdb调试

转换至debug

gcc -o main main.c -g

-g很重要

1. l //显示 main 函数所在的文件的源代码
2. list 文件名:num //显示 filename 文件 num 行上下的源代码
3. b 行号 //给指定行添加断点
4. b 函数名 //给指点函数的第一有效行添加一个断点
5. info break //显示断点信息
6. delete 断点号 //删除指定断点
7. disable 断点号 //将断点设定为无效的,不加断点号,将所有断点设置为无效
8. enable 断点号 //将断点设定为有效的,不加断点号,将所有断点设置为有效
9. r(run) //运行程序
10. n(next) //单步执行
11. c ( continue //继续执行,直接执行到下一个断点处
12. s //进入将要被调用的函数中执行
13. finish //跳出函数 图论科技
14. q //退出调试
15. p val //打印变量 val 的值
16. p &val //打印变量 val 的地址
17. p a+b //打印表达式的值
18. p arr(数组名) //打印数组所有元素的值
19. p *parr@len //用指向数组的指针打印数组所有元素的值
20. finish //退出函数
21 bt  //函数调用栈关系

 以死循环输入字符串判断是否相等为例:

vi test01.c

使用不同的命令发现debug比release要大,说明debug当中有调试信息

 

开始调试 输入gdb+可执行文件

 加断点:b +行号

查看断点信息 info break

 运行程序:r

下一步:n  

打印:p

 退出:q

找到问题,修改程序:

 

 

 

相关文章:

Linux Day04

目录 一、文件压缩与解压命令 1.1 tar cvf 文件名 ---打包命令生成.tar 1.2 tar xvf 文件名 ----解开包 生成文件 1.3 gzip .tar 压缩 生成.tar.gz压缩包 1.4 gzip -d .tar.gz 解压成包 1.5 直接把压缩包解压成文件 tar zxf .tar.gz 二、Linux 系统上 C 程序的…...

上海亚商投顾:沪指冲高回落 两市成交重回万亿

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日冲高回落,盘初一度集体涨超1%,随后涨幅明显回落,上证50午后一度翻…...

2023最新版本~十分钟零基础搭建EMQX服务器

购买服务器 已知服务器大厂商 1 阿里云 点击直接访问 2 华为云点击直接访问 3 腾讯云 点击直接访问 还是比较推荐大公司 不会跑路 这里我购买的是一年的华为云服务器(新用户 64一年) 镜像推荐乌班图18 登陆服务器(需要重置密码!!&…...

SpringBoot2.5.6整合Elasticsearch7.12.1

SpringBoot2.5.6整合Elasticsearch7.12.1 下面将通过SpringBoot整合Elasticseach,SpringBoot的版本是2.5.6,Elasticsearch的版本是7.12.1。 SpringBoot整合Elasticsearch主要有三种方式,一种是通过elasticsearch-rest-high-level-client&am…...

准大一信息安全/网络空间安全专业学习规划

如何规划? 学习需要一个良好的学习习惯,建议刚开始一定要精通一项程序语言,学习其他的就会一通百通。过程中是按步骤学习,绝不半途看见苹果丢了梨,一定要强迫自己抵制新鲜技术的诱惑。 网络安全其实是个广而深的领域…...

WEB:php_rce

背景知识 Linux命令 thinkPHPv5漏洞 题目 打开页面,页面显示为thinkphp v5的界面,可以判断框架为thinkPHP,可以去网上查找相关的漏洞 由题目可知,php rec是一个通过远程代码执行漏洞来攻击php程序的一种方式 因为不知道是php版…...

问题:idea启动项目错误提示【command line is too long. shorten command line】

问题:idea启动项目错误提示【command line is too long. shorten command line】 参考博客 问题描述 启动参数过长,启动项目,错误提示 原因分析 出现此问题的直接原因是:IDEA集成开发环境运行你的“源码”的时候&#xff08…...

xshell连接Windows中通过wsl安装的linux子系统-Ubuntu 22.04

xshell连接Windows中通过wsl安装的linux子系统-Ubuntu 22.04 一、安装linux子系统 1.1、 启动或关闭Windows功能-适用于Linux的Windows子系统 1.2 WSL 官方文档 使用 WSL 在 Windows 上安装 Linux //1-安装 WSL 命令 wsl --install//2-检查正在运行的 WSL 版本:…...

子域名收集工具OneForAll的安装与使用-Win

子域名收集工具OneForAll的安装与使用-Win OneForAll是一款功能强大的子域名收集工具 GitHub地址:https://github.com/shmilylty/OneForAll Gitee地址:https://gitee.com/shmilylty/OneForAll 安装 1、python环境准备 OneForAll基于Python 3.6.0开发和…...

报数游戏、

描述 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。。 输入 初始人数n 输出 最后一人的初始编号 输入样例 1 3 输出样例 1 2 输入样例 …...

规约模式:优雅设计与灵活应用

引言: 规约模式是软件开发中的重要设计原则,它们提供了一种优雅的、灵活的方式来构建高质量的系统。本文将通过实例演示规约模式的具体应用,带你了解这些原则的实战价值。 一、开放封闭原则 // 图形接口 public interface Shape {void dra…...

Ubuntu Server版 之 apache系列 安装、重启、开启,版本查看

安装之前首先要检测是否安装过 apt list --installed | grep tool tool:要检测的名称,如mysql、apache 、ngnix 等 安装 apache sudo apt install apache2 安装apache 默认是开启的 可以通过浏览器 检测一下 service apache stop # apache 停止服务…...

Redis学习路线(4)—— Redis实现项目缓存

一、什么是缓存 (一)概念:缓存就是数据交换的缓冲区(称为Cache),是存储数据的临时区域,一般读写性能较高。 (二)常见缓存: 浏览器缓存,服务器缓…...

【Unity造轮子】实现一个类csgo的武器轮盘功能

文章目录 前言素材导入开始1.放背景和中间的圆圈,调整合适的宽高和位置2.添加选择图像框3.添加一些武器道具选择4.书写脚本RadialMenuManager5.绑定脚本和对象6.运行效果,按tab键开启关闭轮盘7.优化添加显示选中的武器文本8.添加鼠标选中放大的效果9.添加…...

代码随想录算法训练营第三十天 | 单调栈系列复习

单调栈系列复习 每日温度未看解答自己编写的青春版重点题解的代码日后再次复习重新写 下一个更大元素 I未看解答自己编写的青春版重点题解的代码日后再次复习重新写 下一个更大元素II未看解答自己编写的青春版重点题解的代码日后再次复习重新写 接雨水未看解答自己编写的青春版…...

redis数据未到过期时间被删除

1. 问题描述 使用了jeecgboot开发后端代码,代码设置的redis过期时间为24小时,部署使用的宝塔面板,在redis中看到的过期时间也是为24小时,但是并未到过期时间,数据就被删除。 2. 解决办法 观察了一下redis中的数据&a…...

32.选择器

选择器 html部分 <div class"toggle-container"><input type"checkbox" id"good" class"toggle"><label for"good" class"label"><div class"ball"></div></label&…...

Linux--验证命令行上运行的程序的父进程是bash

1.输入以下代码&#xff1a; #include <stdio.h> #include <unistd.h> int main() {printf("hello world: pid: %d, ppid: %d\n",getpid(),getppid());return 0; }2.编译得到可执行程序​​​ 3.运行得到ppid 4.输入指令 ps axj | head -1 &&am…...

MySQL数据库关于表的一系列操作

MySQL中的数据类型 varchar 动态字符串类型&#xff08;最长255位&#xff09;&#xff0c;可以根据实际长度来动态分配空间&#xff0c;例如&#xff1a;varchar(100) char 定长字符串&#xff08;最长255位&#xff09;&#xff0c;存储空间是固定的&#xff0c;例如&#…...

Spring基于注解管理bean及全注解开发

文章目录 spring概述Spring定义Spring核心Spring Framework的特点 基于注解管理bean依赖开启组件扫描使用注解定义Bean案例:Autowired注入属性注入set注入形参上注入只有一个构造函数&#xff0c;无注解Autowire注解和Qualifier注解联合 Resource注入Spring全注解开发 spring概…...

QtC++ 技术分析3 - IOStream

目录 iostreamscanf/printfiostream 整体架构流相关类流缓冲区 模板特化后整体结构文件流文件流对象创建常见文件流操作输出格式设定文件流状态 字符串流字符串流内部缓冲区字符串流使用 流缓冲区用户自定义 IO iostream scanf/printf 几种常见的输入输出流函数 scanf 从键盘…...

2023年Q2京东环境电器市场数据分析(京东数据产品)

今年Q2&#xff0c;环境电器市场中不少类目表现亮眼&#xff0c;尤其是以净水器、空气净化器、除湿机等为代表的环境健康电器。此外&#xff0c;像冷风扇这类具有强季节性特征的电器也呈现出比较好的增长态势。 接下来&#xff0c;结合具体数据我们一起来分析Q2环境电器市场中…...

TCP/UDP的首部

TCP/UDP首部信息 TCP首部第一个4字节第二个4字节与第三个4字节第四个4字节第五个4字节选项最大报文段长度&#xff08;MSS&#xff09;选项窗口扩大选项时间戳选项 什么时候发送RST包UDP首部 TCP首部 TCP 首部长度为20字节&#xff0c;加上选项部分最大可达60字节。 第一个4…...

Kubernetes(K8s)从入门到精通系列之四:K8s的基本概念和术语之集群类

Kubernetes K8s从入门到精通系列之四:K8s的基本概念和术语之集群类 一、Master二、Node三、命名空间集群表示一个由Master和Node组成的K8s集群。 一、Master Master指的是集群的控制节点。在每个K8s集群都需要有一个或一组被称为Master的节点,来负责整个集群的管理和控制。M…...

黑马头条---day1

手机端查看 docker 容器&#xff0c;镜像操作命令 1、docker删除所有镜像命令 删除所有镜像的命令是Docker中一个非常常见的操作。下面是具体的实现步骤和命令示例&#xff1a; $ docker stop $(docker ps -aq) 停止所有正在运行的容器。 $ docker rm $(docker ps -aq) 删…...

【序列化工具JdkSerialize和Protostuff】

序列化工具对比 JdkSerialize&#xff1a;java内置的序列化能将实现了Serilazable接口的对象进行序列化和反序列化&#xff0c; ObjectOutputStream的writeObject()方法可序列化对象生成字节数组 Protostuff&#xff1a;google开源的protostuff采用更为紧凑的二进制数组&#…...

C++ 多线程编程导论(下)

文章目录 参考资料线程安全&#xff08;续&#xff09;门闩与屏障——latch 对象与 barrier 对象门闩&#xff08;latch&#xff09;屏障&#xff08;barrier&#xff09; 一次性调用——once_flag 对象与 call_once 函数 异步任务未来与承诺——future 对象与 promise 对象fut…...

Java并发系列之一:JVM线程模型

什么是线程模型&#xff1a; Java字节码运行在JVM中&#xff0c;JVM运行在各个操作系统上。所以当JVM想要进行线程创建回收这种操作时&#xff0c;势必需要调用操作系统的相关接口。也就是说&#xff0c;JVM线程与操作系统线程之间存在着某种映射关系&#xff0c;这两种不同维…...

容灾独家技术揭秘:HyperBDR无主机数据同步技术

01、一对一单机热备-传统灾备方式 单机热备是一种备份解决方案&#xff0c;它使用两台服务器来确保高可用性&#xff0c;是市场上最为常见的灾备模式。 在单机热备中&#xff0c;一台主服务器和一台备用服务器保持同步&#xff0c;以确保在主服务器出现故障或宕机时可以立即切换…...

FANUC机器人SRVO-050碰撞检测报警和SRVO-053干扰值过大故障报警总结

FANUC机器人SRVO-050碰撞检测报警和SRVO-053干扰值过大故障报警总结 前面和大家分享了关于SRVO-050碰撞检测报警和SRVO-053干扰值过大的原因分析以及处理方法,感兴趣的朋友可以参考以下链接中的内容: FANUC机器人SRVO-050碰撞检测报警原因分析及处理对策...