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

【Linux】基础02

cc5efcb8f308488fa7d269423ccfaaf5.png


Linux编译和调试

VI编辑文件

vi : 进入文件编辑 是命令行模式

i :从光标处进入插入模式

dd : 删除光标所在行 n dd 删除指定行数 

Esc : 退出插入模式

冒号进入末行模式

:wq  : 保存退出

:q : 未修改文件可以退出

:q!  : 不保存退出 

分屏操作:sp 上下分屏 vsp左右分屏

在末行模式下 :sp 文件名称

ctrl + ww 切换屏幕

VIM安装

VIM 是一款功能强大的文本编辑器。

VIM 安装必须在 ~ 路径下


gcc编译命令

9697046d92684d6e801b30c49a1004a6.png


gcc main.c          // 编译main.c 文件不指定名称则生成a.out 文件gcc main.c -o myapp //编译main.c生成编译文件myapp./myapp             //执行编译文件myapp

 利用-D等 编译指令 可以实现同一套代码输出不同结果

编译原理

gcc可以同时编译多个源文件源文件都需要编译

3becdc587fdb4c26846ed77fc2b1d51a.png

  • GCC 编译过程主要分为四个阶段:预处理、编译、汇编 和链接 。
  • 这四个阶段可以分别用不同的 GCC 选项来单独执行,也可以让 GCC 自动依次执行完成整个编译过程。

GDB调试

gdb + 可执行文件名字

6324336f170844828dda3c99ee2f221b.png

当前文件编译时候未带-g调试信息  故不能调试该文件

list 列出代码

start 开始/run 开始  前者直接停在第一行 后者到第一个断点

step 逐语句调试

next 逐过程调试

p 监控一次

diaplay 持续监控 undisplay 结束监控

info 断点信息

b 下断点

给权限

disable 不好使断点

able 好用断点

 


makefile

Makefile 是一个文本形式的自动化构建工具脚本,主要用于自动化编译和构建软件项目。在一个包含多个源文件的项目中,手动去编译每个文件并将它们链接起来是非常繁琐且容易出错的,Makefile 可以帮助开发者定义好这些编译规则和依赖关系,让构建过程变得简单高效。

makefile优点

1 便捷的管理代码 不用复杂的重写编译命令

2 重用性极强 可以反复使用编译不同的工程

3 大大节省编译时间


编译时间 

预处理时间+

编译期(生成.o文件)时间+

汇编时间+

链接(将.o文件和依赖库文件连接成可执行文件)时间

节省时间方法 

节省编译期的时间 采用空间换时间第一次编译时候不会节省空间

编译成功会生成.o文件保存下来 再次编译时候识别修改源文件,只编译修改的源文件

修改次数少,节省时间。


makefile三要素

1 目标

最终事情:完成编译 形成可执行文件

2 依赖

源文件 资源文件

3 命令

根据依赖生成可执行文件要执行的命令


makefile文件创建和编写

makefile编写

1 注释使用#

2 文件名必须是makefile 或者 Makefile (靠名字识别文件makefile)

3 执行makefile文件 在对于路径执行make

格式

目标:依赖 依赖 依赖

(tab):命令

2096e64bc86141deb93793b10ce71da5.png

分成链接期和编译期

62c2e8569577488f8a4d4c2462d98600.png

再次make时候只编译修改的文件

e569a7a27c5c4f7599742f19337c01d2.png
makefile文件执行原理和注意事项

最终目标写在最上面 makefile是自顶向下执行的

先看 最终目标的依赖 依赖作为目标 在下面找 目标 执行可以生成目标的文件

如果有多个目标目标直接有多个主从关系

makefile中变量定义和使用

1 自定义变量

无需指定类型,默认都是字符串类型

变量名可以由字母,数子,下划线组成 不可以数字开头 一般全大写

使用变量$(变量名)

2 内置变量

$@ 代表目标名 先有一个目标名 其他的目标名要被代替

$^ 代表依赖项

$< 代表依赖项第一项

makefile内置函数和内建语法

内置函数和内建语法

1 文件名处理函数 (获取文件名称)wildcard

SRCFILE =$(wildcard 参数*.c)

wildcard 可以遍历文件夹 可有获取文件.c名字 保存到SRCFILE变量


2 字符串处理函数 patsubst

DSTFILE =$(patsubst %.c,%.o,$(SRCFILE));

把srcfile中.c换成.o

结果存到dstfile

使用$(DSTFILE)


makefile脚本语言

是低级语言 不会报错 之后返回“结果没出现“ 至于哪没出不知道

只能使用结果分析 错误

常用变量

TARTGRT=myapp 存储目标名字

CC=gcc 存储编译器命令

INCLUDE_PATH=../include 存储头文件路径

LIBRARY_PATH=../lib 存储库文件路径

INSTALL_PATH=../user/bin 存储安装路径

CFLAGS=-I$(INCLUDE_PATH) -C -Wall 存储编译选项

CPPFLGS=-D 存储预处理选项

 

相关文章:

【Linux】基础02

Linux编译和调试 VI编辑文件 vi : 进入文件编辑 是命令行模式 i &#xff1a;从光标处进入插入模式 dd : 删除光标所在行 n dd 删除指定行数 Esc &#xff1a; 退出插入模式 &#xff1a; 冒号进入末行模式 :wq : 保存退出 :q &#xff1a; 未修改文件可以退出 :q! …...

Elasticsearch面试内容整理-安全与权限管理

在 Elasticsearch 中,安全与权限管理至关重要,特别是当系统处理敏感数据时。Elasticsearch 提供了一套全面的安全机制来确保数据的机密性、完整性和可用性。以下是 Elasticsearch 安全与权限管理的详细介绍。 安全组件概述 Elasticsearch 的安全功能由 Elastic Stack 提供的一…...

【数据分享】中国汽车工业年鉴(1986-2023)

本年鉴是由工业和信息化部指导&#xff0c;中国汽车技术研究中心有限公司与中国汽车工业协会联合主办。《年鉴》是全面、客观记载中国汽车工业发展与改革历程的重要文献&#xff0c;内容涵盖汽车产业政策、标准、企业、市场以及全国各省市汽车工业发展情况&#xff0c;并调查汇…...

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…...

代替Spinnaker 的 POINTGREY工业级相机 FLIR相机 Python编程案例

SpinnakerSDK_FULL_4.0.0.116_x64 是一个用于FLIR相机的SDK&#xff0c;主要用于图像采集和处理。Spinnaker SDK主要提供C接口&#xff0c;无法直接应用在python环境。本文则基于Pycharm2019python3.7的环境下&#xff0c;调用opencv,EasySpin,PySpin,的库实现POINTGREY工业级相…...

网络篇12 | SSH2协议应用,禁SFTP子模式实现文件传输

网络篇12 | SSH2的应用 解决的业务问题协议选定SSH2&#xff08;Secure Shell 2&#xff0c;目前基本用这个&#xff09;SSH1&#xff08;Secure Shell 1&#xff09;Telnet 代码实现落地方案1&#xff1a;ganymed-ssh2maven坐标关键源代码技术效果验证连接高版本OpenSSH报错分…...

MetaGPT实现多动作Agent

异步编程学习链接 智能体 LLM观察思考行动记忆 多智能体 智能体环境SOP评审路由订阅经济 教程地址 多动作的agent的本质是react&#xff0c;这包括了think&#xff08;考虑接下来该采取啥动作&#xff09;act&#xff08;采取行动&#xff09; 在MetaGPT的examples/write_…...

docker更新镜像源

常用的国内 Docker 镜像加速器 1. 阿里云镜像加速器&#xff1a;https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2. 腾讯云镜像加速器&#xff1a;https://cloud.tencent.com/document/product/457/33221 3. 网易云镜像加速器&#xff1a;https://hub-mirror…...

TSmaster Trace 窗口

文章目录 1、设置显示刷新率2、设置显示报文格式3、报文过滤3.1 基于报文通道3.2 基于报文 ID过滤3.3 基于过滤字符串&#xff08;FilterString&#xff09;过滤 4、信号的折叠与展开5、固定显示和时间顺序显示切换6、关闭窗体 1、设置显示刷新率 为了降低软件 CPU 占用率&…...

【Python模拟websocket登陆-拆包封包】

Python模拟websocket登陆-拆包封包 解析一个网站获取wss原始数据拆包wss数据封包wss数据发送接收websocket的常驻后台脚本总结 解析一个网站 这里所用的网站是我一个内测的网站&#xff0c;主要手段是chrome devtools&#xff0c;用得很多&#xff0c;但我玩的不深&#xff0c…...

速盾:海外服务器使用CDN加速有什么好处?

随着互联网的快速发展和全球化的需求增加&#xff0c;海外服务器的使用已经成为许多公司和个人的首选。与此同时&#xff0c;为了提供更好的用户体验和更快的网页加载速度&#xff0c;使用CDN&#xff08;内容分发网络&#xff09;加速海外服务器已经成为一个普遍的选择。CDN可…...

windows系统中实现对于appium的依赖搭建

Node.js&#xff1a;Appium是基于Node.js的&#xff0c;因此需要安装Node.js。可以从Node.js官网下载并安装。 Java Development Kit (JDK)&#xff1a;用于Android应用的自动化测试&#xff0c;需要安装JDK。可以从Oracle官网下载并安装。 Android SDK&#xff1a;进行Andro…...

使用MATLAB进行字符串处理

MATLAB是一个强大的数学和计算机科学的软件工具包。它拥有一个灵活的字符串处理工具&#xff0c;可以用于处理和转换不同格式的字符串&#xff0c;例如&#xff0c;数值、日期、时间等。本文将探讨如何使用MATLAB进行字符串处理&#xff0c;以及如何利用它来解决实际问题。 在…...

Sourcetree登录GitLab账号

1. 在GitLab上创建个人访问令牌 在gitlab中点击右上角的头像图标&#xff0c;选择设置进入 Access Tokens&#xff08;访问令牌&#xff09; 页面填写令牌名称和到期时间&#xff0c;指定Scopes&#xff08;范围&#xff09;。一般选择read_repository和api点击 Create person…...

Linux进阶:软件安装、网络操作、端口、进程等

软件安装 yum 和 apt 均需要root权限 CentOS系统使用&#xff1a; yum [install remove search] [-y] 软件名称 install 安装remove 卸载search 搜索-y&#xff0c;自动确认 Ubuntu系统使用 apt [install remove search] [-y] 软件名称 install 安装remove 卸载search 搜索-y&…...

光猫、路由器、交换机之连接使用(Connection and Usage of Optical Cats, Routers, and Switches)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…...

2025蓝桥杯(单片机)备赛--扩展外设之超声波测距原理与应用(十一)

1 超声波测距原理 接收器接到超声波的时间差。超声波发射器想某一方向发射波&#xff0c;再发射时刻开始计时 超声波在空气中传播&#xff0c;遇到障碍物则返回&#xff0c;超声波接收器收到反射波&#xff0c;立即停止计时。 SOR4原理&#xff1a; 通过IO口&#xff08;TRIG…...

分布式数据库中间件可以用在哪些场景呢

在数字化转型的浪潮中&#xff0c;企业面临着海量数据的存储、管理和分析挑战。华为云分布式数据库中间件&#xff08;DDM&#xff09;作为一款高效的数据管理解决方案&#xff0c;致力于帮助企业在多个场景中实现数据的高效管理和应用&#xff0c;提升业务效率和用户体验。九河…...

MyBatis-Plus分页插件IPage用法

首先就是service接口需要继承IService<entity> 然后就是业务类实现类中需要继承ServiceImpl<Mapper,entity> Mapper正常写法&#xff0c;继承baseMapepr<entity> IPage的使用方式 QueryWrapper<MdSaleDayPhone> queryWrappernew QueryWrapper<>…...

使用MATLAB进行遗传算法设计

遗传算法是一种基于自然进化的计算方法&#xff0c;在解决各种优化问题方面具有广泛的应用。MATLAB作为一种强大的数学软件&#xff0c;可以方便快捷地实现遗传算法&#xff0c;并且通过可视化的方式直观地展现算法运行过程和结果。本文将介绍使用MATLAB进行遗传算法设计的步骤…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...