Linux Day04

news2024/11/15 21:26:07

目录

一、文件压缩与解压命令

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

找到问题,修改程序:

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python实现自动登录和下单脚本,代码嘚魅力~

目录标题 前言环境使用:代码实现思路配置浏览器驱动代码实现尾语 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 学python对selenium应该不陌生吧 Selenium 是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一。 Selenium 支持的语言包括C#…

Winget简单介绍

为什么明明Windows的UI更为便捷,但是还是那么多人用的linux,或者mac 主要还是linux和mac的命令行更好用。 虽然windows中也出现了choco这种东西,但是非官方的总觉得不是很令人信服。 这边挂一下官方文档,然后在开始自己的简单实…

深入理解Vue响应式系统:数据绑定探索

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

某某大学某学院后台Phar反序列化GetShell

觉得这个洞还算有点意思,可以记录一下 首先在另一个二级学院进行目录扫描时发现源码www.rar,并且通过一些页面测试推测这两个二级学院应该是使用了同一套CMS 分析源码,发现使用的是ThinkPHP 5.1.34 LTS框架 通过APP、Public得到后台访问路径…

开放自动化软件的硬件平台

自动化行业的产品主要以嵌入式系统为主,历来对产品硬件的可靠性和性能都提出很高的要求。最典型的产品要数PLC。PLC 要求满足体积小,实时性,可靠性,可扩展性强,环境要求高等特点。它们通常采用工业级高性能嵌入式SoC 实…

无涯教程-jQuery - Selectable选择函数

选择能力功能可与JqueryUI中的交互一起使用。此功能可在任何DOM元素上启用选择能力功能。用光标绘制一个框以选择项目。按住Ctrl键可进行多个不相邻的选择。 Select able - 语法 $( "#selectable" ).selectable(); Select able - 示例 以下是一个简单的示例&…

反弹shell确认是否是docker容器

反弹shell确认是否是docker容器 方法一 如果根目录中存在.dockerwenv文件,证明是doker容器 ls /.dockerenv方法二 出现以下类似内容,证明是在doker容器内 cat /proc/1/cgroup

回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现GRNN广义回归神经网络多输入单输出回归…

【设计模式——学习笔记】23种设计模式——享元模式Flyweight(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入介绍基本介绍原理类图外部状态和内部状态 登场角色 案例实现案例1类图代码实现 案例2类图代码实现 享元模式在JDK源码中的使用总结 案例引入 你的公司主要做一些小型的外包项目,之前给客户A做一个产品展示网站,客户A的朋友感觉效果不错…

uniapp小程序自定义loding,通过状态管理配置全局使用

一、在项目中创建loding组件 在uniapp的components文件夹下创建loding组件&#xff0c;如图&#xff1a; 示例代码&#xff1a; <template><view class"loginLoading"><image src"../../static/loading.gif" class"loading-img&q…

SpringBoot统一异常处理和统一返回格式

上篇博客我们讲解了使用AOP来进行统一的用户登录判断&#xff0c;其实像这种功能统一且使用较多的地方&#xff0c;都可以用AOP来处理&#xff0c;除了统⼀的⽤户登录判断之外&#xff0c;AOP 还可以实现&#xff1a; 统⼀⽇志记录统⼀⽅法执⾏时间统计&#xff08;在性能优化…

8.事件对象

8.1获取事件对象 ●事件对象是什么 也是个对象&#xff0c;这个对象里有事件触发时的相关信息 例如&#xff1a;鼠标点击事件中&#xff0c;事件对象就存了鼠标点在哪个位置等信息 ●使用场景 可以判断用户按下哪个键&#xff0c;比如按下回车键可以发布新闻 可以判断鼠标点击…

【动态规划】子数组系列

文章目录 动态规划&#xff08;子数组系列&#xff09;1. 最大子数组和2. 环形子数组的最大和3. 乘积最大子数组4. 乘积为正的最长子数组的长度5. 等差数列划分6. 最长湍流子数组7. 单词拆分8. 环形字符串中的唯一的子字符串 动态规划&#xff08;子数组系列&#xff09; 1. 最…

ETHERCAT转CCLINK网关连接ethercat转换器

你们有没有遇到这样的问题&#xff1f;在生产管理系统中&#xff0c;数据互联互通是非常重要的&#xff0c;但ETHERCAT和CCLINK这两个协议之间的通讯一直是个大问题。今天&#xff0c;我给大家带来了一个好消息——捷米JM-ECT-CCLK&#xff0c;这是一款让各种CCLINK总线和ETHER…

WEB:php_rce

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

三数之和——力扣15

文章目录 题目描述法一 双指针排序 题目描述 法一 双指针排序 class Solution{ public:vector<vector<int>> threeSum(vector<int>& nums){int nnums.size();vector<vector<int>> ans;sort(nums.begin(), nums.end());for(int first0;first&…

项目实战 — 消息队列(2){创建核心类}

目录 一、创建项目 二、创建核心类 &#x1f345; 1、 编写交换机类&#xff0c;Exchange &#x1f345; 2、编写存储消息的队列&#xff0c;MSGQueue &#x1f345; 3、编写绑定类&#xff0c;binding &#x1f345; 4、编写消息&#xff0c;Message 一、创建项目 二、创…

【Golang 接口自动化04】 解析接口返回JSON串

目录 前言 解析到结构体 json数据与struct字段是如何相匹配的呢&#xff1f; 解析到interface Go类型和JSON类型 实例代码 simpleJson 总结 资料获取方法 前言 上一次我们一起学习了如何解析接口返回的XML数据&#xff0c;这一次我们一起来学习JSON的解析方法。 JSO…

Mysql 索引失效

1、模糊查询%在前面&#xff0c;无法排序所以失效 2、函数计算 3、表达式计算length(NAME) 4、隐式转换 5、联合索引非最左匹配 6、or 必须都为索引列 事务特性 &#xff08;来自小林coding 事务隔离级别是怎么实现的&#xff1f; | 小林coding (xiaolincoding.com)&#…

基于Open3D的点云处理13-分割

平面分割&#xff08;基于RANSAC&#xff09; 使用RANSAC算法从点云中拟合平面&#xff1b; 接口&#xff1a;segment_plane 测试&#xff1a;Plane-segmentation import open3d as o3dpcd_point_cloud o3d.data.PCDPointCloud() pcd o3d.io.read_point_cloud(pcd_point_cl…