当前位置: 首页 > 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进行遗传算法设计的步骤…...

mindtorch study

安装 pip install mindtorch mindtorch 用于帮助迁移torch模型到mindspore 大部分都可以直接把mindtorch的torch搞成torch&#xff0c;就和以前的代码一致&#xff0c;注意下面 只有静态图有点点差异 step也有差异 自定义优化器就麻烦了。 pyttorch还是牛啊 并行计算还是用的…...

java八股-SpringCloud微服务-Eureka理论

文章目录 SpringCloud架构Eureka流程Nacos和Eureka的区别是&#xff1f;CAP定理Ribbon负载均衡策略自定义负载均衡策略如何实现&#xff1f;本章小结 SpringCloud架构 Eureka流程 服务提供者向Eureka注册服务信息服务消费者向注册中心拉取服务信息服务消费者使用负载均衡算法挑…...

2024信创数据库TOP30之蚂蚁集团OceanBase

数据库作为存储、管理和分析这些数据的关键工具&#xff0c;其地位自然不言而喻。随着信息技术的日新月异&#xff0c;数据库技术也在不断演进&#xff0c;以满足日益复杂多变的市场需求。近日&#xff0c;备受瞩目的“2024信创数据库TOP30”榜单由DBC联合CIW/CIS权威发布&…...

查找redis数据库的路径

Redis 数据库的路径通常由配置文件中的 dir 参数指定 查找 Redis 配置文件&#xff1a; Redis 配置文件通常命名为 redis.conf。您可以在以下位置查找它&#xff1a; /etc/redis/redis.conf&#xff08;Linux 系统上的常见位置&#xff09;/usr/local/etc/redis/redis.conf&…...

DrugLLM——利用大规模语言模型通过 Few-Shot 生成生物制药小分子

摘要 小分子由于能够与特定的生物靶点结合并调节其功能&#xff0c;因此在药物发现领域发挥着至关重要的作用。根据美国食品和药物管理局&#xff08;FDA&#xff09;过去十年的审批记录&#xff0c;小分子药物占所有获批上市药物的 76%。小分子药物的特点是合成相对容易&…...

【蓝桥杯C/C++】翻转游戏:多种实现与解法解析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: 蓝桥杯C/C 文章目录 &#x1f4af;题目&#x1f4af;问题分析解法一&#xff1a;减法法解法二&#xff1a;位运算解法解法三&#xff1a;逻辑非解法解法四&#xff1a;条件运算符解法解法五&#xff1a;数组映射法不同解法的比较…...

【AI系统】核心计算之矩阵乘

核心计算之矩阵乘 AI 模型中往往包含大量的矩阵乘运算&#xff0c;该算子的计算过程表现为较高的内存搬移和计算密度需求&#xff0c;所以矩阵乘的效率是 AI 芯片设计时性能评估的主要参考依据。本文我们一起来看一下矩阵乘运算在 AI 芯片的具体过程&#xff0c;了解它的执行性…...

Vue.js 自定义指令:从零开始创建自己的指令

vue使用directive 前言vue2使用vue3使用 前言 关于使用自定义指令在官网中是这样描述的 vue2:对普通 DOM 元素进行底层操作&#xff0c;这时候就会用到自定义指令。 vue3:自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。 在 Vue.js 中使用自定义指令&#xf…...

策略模式

定义&#xff1a;即定义一系列的算法&#xff0c;算法1&#xff0c;算法2&#xff0c;...&#xff0c;算法n&#xff0c;把他们封装起来&#xff0c;使他们可以相互替换。 优点&#xff1a;使得一个类的行为或者其算法可以在运行时改变&#xff0c;而且使用Context类的人在外部…...

性能优化--CPU微架构

一 指令集架构 Intel X86, ARM v8, RISC-V 是当今广泛使用的指令架构的实例。 大多数现代架构可以归类为基于通用寄存器的加载和存储型架构&#xff0c;在这种架构下&#xff0c;操作数倍明确指定&#xff0c;只能使用夹在和存储指令访问内存。除提供基本的功能之外&#xff0c…...

joomla 做 企业网站/深圳关键词优化平台

1.基础概念理解 首先&#xff0c;python里有包和模块&#xff0c;对应到我们熟知的windows系统里来&#xff0c;就是文件夹与py文件&#xff0c;也即python的包是一个文件夹&#xff0c;但这个文件夹下必须要有一个__init__.py的文件&#xff0c;而python的模块对应的是一个py文…...

银川怎么做网站/拉新推广一手接单平台

眼下我们项目是基于AngularJS和ionic框架开发的Hybrid App。支持android phone/pad&#xff0c; iPhone,iPad四个平台版本号。以及微信版。由于使用的技术有点新&#xff0c;所以做了这个内部的新人上手指引&#xff0c;对于想学习HTML5Hybrid App开发的同学也有參考价值。 合格…...

网页app生成器原理/四川seo快速排名

基本思路&#xff1a;使用SQL SERVER 2014的Reporting Services定位MYSQL用于生产&#xff0c;MS SQL SERVER用于统计分析处理&#xff0c;不占用CPU和IO。与MYSQL的关系采用链接服务器方式&#xff1a; http://www.cnblogs.com/hukn/archive/2011/07/27/SQL_Server_ODBC_LinkS…...

网站风险怎么解决方案/手机百度快照

案例一&#xff1a;去除集合里面的重复元素 package cn.itcast_04;import java.util.ArrayList;/** ArrayList去除集合中字符串的重复值(字符串的内容相同)* * 分析&#xff1a;* A:创建集合对象* B:添加多个字符串元素(包含内容相同的)* C:创建新集合* D:遍历旧集合,获…...

市桥做网站/百度一下移动版首页

1. 系统版本 MySQL 5.7.25 ubuntu 16.04 2. 全局锁 全局锁即对整个数据库实例加锁&#xff0c;使得整个库处于只读状态&#xff0c;会阻塞DML和DDL语句。使用如下命令&#xff08;简称FTWRL&#xff09;可为数据库加全局锁&#xff1a;flush tables with read lock;释放全局锁命…...

做网站需要提供什么/中国万网域名注册免费

识别新老客户 识别新老客户 本身客户端业务有新老用户的标识&#xff0c;但是不够准确&#xff0c;需要用实时计算再次确认(不涉及业务操作&#xff0c;只是单纯的做个状态确认)。数据拆分不同数据写入Kafka不同的Topic中 1. 封装kafka工具类 public class MyKafkaUtil {sta…...