linux工具gcc/g++/gdb/git的使用
目录
gcc/g++
基本概念
指令集
函数库 (重要)
gdb使用
基本概念
指令集
项目自动化构建工具make/makefile
进度条小程序
编辑
git三板斧
创建仓库
git add
git commit
git push
git status
git log
gcc/g++
基本概念
gcc/g++称为编译器
进行四个过程:
预处理:头文件展开,去注释,条件编译,宏替换等等操作
编译:检查语法,生成汇编代码
汇编:将汇编代码转换成机器码
链接:生成可执行文件或库文件
指令集
-o +文件:输出到该文件
-static:采用静态链接
-g:生成调试信息
gcc -E :文件预处理完毕后,不进行编译。该指令不生产文件,需要-o指令将文件内容输出到指定文件中。
gcc -S:文件编译完毕后,不进行汇编。生成文件后缀.s
gcc -c:文件汇编后,不进行链接。生成文件后缀.o
gcc +文件 -o 文件名:对文件执行这四个过程 -o指令:指定可执行程序名
当然我们编译一个程序时,不必使用-E,-S,-c这些指令。
只需要gcc 文件 -o 指定文件名 即可完成
函数库 (重要)
c程序当中,如果要使用一个函数,不仅需要函数声明,还需要定义,但是我们所包含的头文件stdio.h当中,只有printf函数的声明,没有其定义,但是我们却可以完成调用?为什么呢?
这是因为系统把c函数的定义都放到libc.so.6这个库当中了,gcc会到默认的/usr/lib路径下进行查找,找到函数定义,这也就是动态链接过程。
函数库分为静态库和动态库,一般以.so结尾为动态库,.a结尾为静态库。
静态链接是指编译链接时把库文件代码全部拷贝到该文件,生成的文件比较大。
动态链接是指程序运行时链接库,到库中找到函数定义,然后完成调用。
gcc默认生成的文件是动态链接的。
gdb使用
基本概念
gdb是linux下的调试器。
如果要对一个程序进行调试,在编译时一定要使用-g指令加入调试信息。
因为一般默认生成的程序是release版本,不支持调试。
指令集
- list 或 l +行号或函数名:显示源代码,接着上次的位置每次列10行,如果是函数则从函数入口显示。
- r或run :运行程序
- n或next:单条代码执行,相当于vs当中的f10,不进入函数。
- s或step:相当于vs当中f11,可以进入函数内部。
- break或b+行号:在改行设置断点
- break+函数名:在函数入口设置断点
- info b:查看断点信息
- finish:直接执行完改函数,然后停下来等待命令
- continue:跳到下一个断点
- until+n:一般在函数内部使用,跳到指定行
- p+变量:打印变量值
- display+变量名:追踪变量,每次停下来都显示该变量值
- undisplay+变量号:取消对变量追踪
- delete b:删除所有断点
- delete b +n :删除n号断点
- disable b n :禁用n号断点
- enable b n:启用n号断点
- bt:查看各级函数调用
- set var :修改变量值
- info locals:查看当前栈帧内局部变量值
- print(p):打印表达式的值,通过表达式可以修改变量值或调用函数
项目自动化构建工具make/makefile
make是指令,而makefile是文件。
通过make和makfile可以实现项目自动化编译,极大提高效率。
实例:
makefile内部:1.依赖关系
2.依赖方法

- make会在当前目录下找名为“makefile”或”Makefile“的文件
- make找到的是第一个目标文件,也就是test,如果test不存在,那它就会根据依赖关系和依赖方法去创建这个目标文件。
- make会一层一层找依赖关系,直到编译出第一个目标文件
- 找寻过程中,如果被依赖文件找不到,那么make直接退出,并报错,而对于所定义的命令错误,或者编译不成功,make不管。
- make成功生成目标文件后,如果目标文件所依赖的文件内容没有改变,此时又进行make,那么该make是不被执行的。
- 用.PHONY修饰的文件称为伪目标,该目标与第一个目标文件没有直接或间接关联,该目标总是可以被执行的。
进度条小程序
git三板斧
创建仓库
指令:git clone +gitee仓库的https
git add
将你要添加的文件先复制到仓库目录中。
然后进入仓库使用git add +文件名
git commit
git commit -m “日志信息” +文件 注意:日志信息一定要有
git push
commit完毕后,使用git push指令,然后代码就提交到gitee仓库了
git status
该指令用于查看git状态。
git log
查看git日志信息。
相关文章:
linux工具gcc/g++/gdb/git的使用
目录 gcc/g 基本概念 指令集 函数库 (重要) gdb使用 基本概念 指令集 项目自动化构建工具make/makefile 进度条小程序 编辑 git三板斧 创建仓库 git add git commit git push git status git log gcc/g 基本概念 gcc/g称为编译器…...
Direct3D 12——纹理——纹理
纹理不同于缓冲区资源,因为缓冲区资源仅存储数据数组,而纹理却可以具有多个mipmap层级(后 文有介绍),GPU会基于这个层级进行相应的特殊操作,例如运用过滤器以及多重采样。支持这些特殊 的操作纹理资源都被限定为一些特定的数据格式…...
产品经理必读 | 俞军产品经理十二条军规
最近在学习《俞军产品方法论》,觉得俞军总结的十二条产品经理原则非常受用,分享给大家。 01. 产品经理首先是产品的深度用户 自己设计的产品都没使用过的产品经理,如何明白用户使用的问题,如何解决问题,所以产品经理肯…...
【机器视觉1】光源介绍与选择
文章目录一、常见照明光源类型二、照明光源对比三、照明技术3.1 亮视野与暗视野3.2 低角度照明3.3 前向光直射照明3.4 前向光漫射照明3.5 背光照明-测量系统的最佳选择3.6 颜色与补色示例3.7 偏光技术应用四、镜头4.1 镜头的几个概念4.2 影响图像质量的关键因素4.3 成像尺寸4.4…...
【三十天精通Vue 3】第十一天 Vue 3 过渡和动画详解
✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录引言一、Vue 3 过度和动画概述1.1过度和动画的简介二、Vue 3 过度2…...
基于多种流量检测引擎识别pcap数据包中的威胁
在很多的场景下,会需要根据数据包判断数据包中存在的威胁。针对已有的数据包,如何判断数据包是何种攻击呢? 方法一可以根据经验,对于常见的WEB类型的攻击,比如SQL注入,命令执行等攻击,是比较容…...
第02章_变量与运算符
第02章_变量与运算符 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 关键字(keyword) 定义:被Java语言赋予了特殊含义,用做专门…...
仅三行就能学会数据分析——Sweetviz详解
文章目录前言一、准备二、sweetviz 基本用法1.引入库2.读入数据3.调整报告布局总结前言 Sweetviz是一个开源Python库,它只需三行代码就可以生成漂亮的高精度可视化效果来启动EDA(探索性数据分析)。输出一个HTML。 如上图所示,它不仅能根据性别、年龄等…...
springboot——集成elasticsearch进行搜索并高亮关键词
目录 1.elasticsearch概述 3.springboot集成elasticsearch 4.实现搜索并高亮关键词 1.elasticsearch概述 (1)是什么: Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。 Lucene 可以被认为是迄今为止最先进、性能最好的…...
MATLAB绘制局部放大图
MATLAB绘制局部放大图 1 工具准备 MATLAB官网-ZoomPlot(Kepeng Qiu. Matlab Central, 2022) 初始数据图绘制完成后,调用以下代码: %% 添加局部放大 zp BaseZoom(); zp.plot;1.1 具体绘制步骤 具体绘制步骤如下: 通过鼠标左键框选作图区…...
第十三天缓存一致性篇
目录 一、缓存的应用场景 二、缓存数据一致性如何保证? 三、缓存的最终一致性解决方案: 一、缓存的应用场景 1、缓存中的数据不应该是实时性一致性要求超高的, 通过缓存加上过期时间保证每天拿到的数据都是最新的即可。 2、如果实时性要求…...
VSCode使用Remote SSH远程连接Linux服务器【远程开发】
文章目录前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar4.2 创建隧道映射4.3 测试公网远程连接5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程转发自CSDN远…...
人工智能专题-知识表示
文章目录人工智能专题-知识表示大纲2.1 知识表示的概念2.1.1 知识表示观点2.1.2 知识表示的要求2.2 一阶谓词逻辑表示法2.2.1 一阶谓词概念2.2.2 谓词逻辑表示方法2.3 产生式表示法2.4 语义网络表示法2.5 框架表示法人工智能专题-知识表示 大纲 大纲:掌握知识表示方…...
各种过滤器使用场景
授权过滤器的使用场景有以下几种: 判断用户是否登录或具有访问权限,如使用Authorize特性来限制只有通过身份验证的用户才能访问某些控制器或操作方法。 实现自定义的授权逻辑,如根据用户的角色、权限、IP地址等来决定是否允许访问。 实现一…...
第04章_IDEA的安装与使用(下)
第04章_IDEA的安装与使用(下) 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 8. 快捷键的使用 8.1 常用快捷键 见《尚硅谷_宋红康_IntelliJ IDEA 常用快捷键一览表.md》…...
2023年全国最新道路运输从业人员精选真题及答案51
百分百题库提供道路运输安全员考试试题、道路运输从业人员考试预测题、道路安全员考试真题、道路运输从业人员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 7.A危险货物运输企业一辆载有甲醇的罐式车辆,在晚上…...
Baumer工业相机堡盟工业相机如何通过BGAPISDK显示Bayer彩色格式的图像(C#)
Baumer工业相机堡盟工业相机如何通过BGAPISDK显示Bayer彩色格式的图像(C#)Baumer工业相机Baumer工业相机的Bayer彩色图像的技术背景Baumer工业相机通过BGAPI SDK在回调函数里显示Bayer彩色图像Baumer工业相机在BufferEvent显示Bayer彩色图像Baumer工业相…...
Unity云渲染,加移动
上次我们根据官方所推出的教程,完成了云渲染,这次我们加个移动。 原谅我又水一篇文章😄😄😄😄😄😄😄😄😄 云渲染的文章看这里:Unity…...
ASP一个简单的网上教务系统模型的设计与实现
对于一个学校来说,大量教师信息,学生信息管理,学生成绩管理,基本数据的维护都难于通过传统的方法进行管理:这就迫切需要利用计算机技术来帮助学校管理者处理这些日常管理。本系统正是为了简化教学任务的管理࿰…...
黑马点评实战篇问题总结
缓存穿透 用户查询的数据在缓存和数据库中都不存在 这样的请求每次都会打到数据库上 解决方案: 1.缓存空字符串(额外的内存消耗,可能造成短期的不一致) 2.布隆过滤(内存占用少,没有多余key,实现…...
黎巴嫩五大核心港口:贝鲁特港、的黎波里港等
黎巴嫩三大核心港口——贝鲁特港、的黎波里港与赛达港,分工明确、互补发力,承担全国进出口货运重任,是中东航运与区域贸易的关键枢纽。一、贝鲁特港(LBBEY):全国第一大港、中东航运枢纽贝鲁特港位于贝鲁特北…...
为Nodejs后端服务接入Taotoken实现AI内容生成功能
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Nodejs后端服务接入Taotoken实现AI内容生成功能 在构建现代后端服务时,集成AI内容生成能力已成为提升产品智能化的常…...
深入解析WasmEdge:高性能WebAssembly运行时的架构设计与工程实践
1. 项目概述:一个高性能的WebAssembly运行时如果你最近在关注云原生、边缘计算或者微服务架构,大概率会听到WebAssembly(简称Wasm)这个名字。它早已不再是那个只能在浏览器里跑一跑JavaScript的“玩具”了。如今,Wasm正…...
从create-codex项目看AI代码生成工具的工程化集成实践
1. 项目概述:从“create-codex”看AI代码生成工具的深度集成最近在GitHub上看到一个挺有意思的项目,叫ramonclaudio/create-codex。光看这个名字,很多开发者可能就会心一笑——“create”前缀加上“codex”,这不就是围绕OpenAI的C…...
构建本地化JavaScript智能补全引擎:从AST解析到上下文感知推荐
1. 项目概述:一个为现代编辑器而生的JavaScript智能引擎如果你是一名前端开发者,或者经常与代码编辑器打交道,那么你一定对“代码补全”、“智能提示”这些功能又爱又恨。爱的是它们能极大提升编码效率,恨的是它们有时不够精准&am…...
TI毫米波雷达的测距极限:带宽、采样率与最大探测距离到底什么关系?
TI毫米波雷达测距极限:从理论公式到工程实践的深度解析 在自动驾驶和工业传感领域,毫米波雷达因其全天候工作能力和精确测距特性成为核心传感器。德州仪器(TI)的AWR和IWR系列雷达芯片凭借高集成度和灵活配置,被广泛应用于无人机避障、智能停车…...
Claw-ED:基于Python的配置驱动Web爬虫框架实战指南
1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫Claw-ED。这个名字乍一看有点抽象,但如果你对数据抓取、自动化处理或者RPA(机器人流程自动化)感兴趣,那它绝对值得你花时间研究。简单来说,Claw-…...
5分钟搞定B站视频备份:m4s-converter完整使用教程
5分钟搞定B站视频备份:m4s-converter完整使用教程 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否遇到过这样的情况࿱…...
FPGA配置核心技术与工程实践详解
1. FPGA配置基础与核心概念解析FPGA配置是将设计好的逻辑电路加载到可编程芯片中的关键过程。与ASIC不同,FPGA的灵活性正是通过这种可重复配置的特性实现的。在Xilinx 7系列器件中,配置过程涉及多个硬件接口和软件流程的协同工作。1.1 配置引脚功能详解P…...
5分钟掌握Windows和Office激活:KMS_VL_ALL_AIO完整指南
5分钟掌握Windows和Office激活:KMS_VL_ALL_AIO完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为电脑上的Windows系统或Office软件提示"需要激活"而烦恼吗&am…...

