一、Linux编译器--gcc/g程序翻译过程预处理 .i - 编译 .s - 汇编 .o - 链接 - .out/可执行文件1. -E告诉gcc进行程序翻译、预处理结束就行头文件展开 宏替换 条件编译-E 源文件名 -o 文件(后缀名为.i)2. gcc file_name1 -o file_name2-o-- 可重命名用途直接形成可执行文件3. -S将 -E 后的预处理文件翻译为汇编文件编译处理结束就行-S源文件-o 文件(后缀名为.s)4.-c将 -E 后的汇编文件翻译为机器码可重定位目标二进制文件-c源文件-o可垂直定位目标二进制文件(后缀名为.o)(简称目标文件)(不可以独立执行需要链接才可以执行)*链接库 -- 提供方法的实现 -- 将源文件.c进行一定的翻译打包头文件 -- 提供方法的说明c语言标准库 -- 本质为一个有路径的文件 -- Linux(.so -- 动态库 .a -- 静态库) Windows(.dll -- 动态库 .lib -- 静态库)5. .o(目标文件)如何与库进行链接(动态链接 静态链接)1在linux中编译形成可执行程序默认采用的就是动态链接--提供动态库在linux中如果要按照静态链接的方式进行形成可执行程序需要添加static动态链接 -- 程序编译链接阶段不拷贝库代码仅记录库函数符号与依赖信息。程序运行阶段由系统动态链接器加载动态库(.so)进行地址重定位、完成函数符号绑定与链接。多个程序可以共享同一份动态库(核心库代码独立存放运行时绑定)静态链接 -- 程序编译链接阶段链接器将程序调用的库函数从静态库(.a)中提取目标代码直接拷贝合并到最终可执行文件中。程序运行时不再依赖任何外部库完全独立运行(核心可代码打包进程序链接时绑定)2动态库 静态库定义优点缺点动态库.so库代码独立存放编译时仅记录符号与依赖运行时由动态链接器加载库文件再完成链接重定位为共享库有效节省资源磁盘空间等一旦缺失各个相关程序不工作静态库.a目标文件(.o)的集合编译链接时链接器会将程序用到的库代码直接复制拷贝到可执行文件中不依赖库程序可独立运行体积大消耗资源若无静态库但就要-static(进行静态链接)是否可行不可行若无动态库只有静态库gcc可以找到静态库可以进行静态链接 -- gcc默认优先进行动态链接-static要求全部静态链接如果系统没有对应静态库报错3不一定所有的文件的链接都是单一的动态链接或者静态链接是混合的-static 所有链接要求都变成静态链接4debug releaseA. -g以debug的形式发布 优点可以调试 可以查看源码B. 原始版本为release 优点优化 无调试信息二、make/Makefile1. make -- 一条指令Makefile -- 一个当前目录下的文件目标文件依赖文件执行命令2. 依赖关系 依赖方法依赖关系生成这个文件需要哪些文件为前提(make会自动推导makefile中的依赖关系 -- 有向无环图DAG)依赖方法[目标 依赖] make会自动判断是否需要重新编译3. 如何清理怎样做到清理clean依赖关系为空(建议放在后面)4. 为什么只允许编译一次提高效率make会根据源文件和目标文件的新旧判断是否需要重新执行依赖关系进行编译(依赖关系不一定总是被执行的).PHONY:伪目标文件 -- 表示总是被重新编译两个文件新旧时间进行比较的依据时间戳5. 特殊符号1$ -- 依赖关系冒号左侧内容2$^ -- 依赖关系冒号右侧内容3 -- 依赖方法不显示6. 进度条项目1回车换行 \r --- 回到当前行开头 \n --- 光标下一行2缓冲区 -- 由语言维护的一段内存三、Git --- 分布式版本控制系统 client/server一体1. 安装yumyum install git2. 具有网络功能的版本控制器开源 client和server一体3. 如何使用复制在gitee中创建的项目链接下载项目到本地4.其他问题git log -- 查看提交记录git init -- 初始化git clone url -- 克隆git status -- 查看提交状态git add 文件 -- 添加git commit -m message -- 提交git push -- 上传git pull -- 下载更新.gitgnore -- 文件包含的后缀名只要预上传的文件中含有就不会被上传可手动添加首次使用需要配置用户名和邮箱四、Linux调试器--gdbgcc默认不生成调试信息如果以debug方式发布必须携带 -ggdb 可执行文件l -- 函数名可查看函数 l num -- 从num行显示代码r -- 运行程序b num -- 在num行打断点info b -- 查看断点信息d num -- 删除编号为num的断点n -- 逐过程不进入函数s -- 逐语句进入函数p name -- 打印变量值display name -- 常显示变量/… undisplay num -- 取消编号为num的变量的常显示until num -- 跳转至指定行finish -- 运行完一个函数c -- 继续运行直到下一个断点/程序结束disable num -- 关闭编号为num的断点不删除enable num -- 打开编号为num的断点 open状态set var name num -- 修改变量名为name的值为numquit/q -- 结束调试bt -- 查看各级函数调用及参数i -- 查看当前栈帧局部变量的值
QMCDecode终极指南:轻松解锁QQ音乐加密文件,让音乐真正属于你 QMCDecode终极指南:轻松解锁QQ音乐加密文件,让音乐真正属于你 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录…
PotPlayer字幕翻译插件:三步实现外语视频无障碍观看 PotPlayer字幕翻译插件:三步实现外语视频无障碍观看 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为看不懂外语视频的…
2026锦州黄金回收白银回收铂金回收价格高无损耗专业鉴定本地人常去门店联系方式推荐 2026锦州黄金白银铂金回收实测榜单|公安工商双备案中检认证无损耗费本地人常去门店推荐 锦州黄金回收哪家靠谱|工商公安双备案中检认证实体门店 锦州贵金属回收店铺近年来遍地丛生,行业套路层出不穷,不少市民变现遭遇虚高报价、…
AI基础设施承压,机会与误判并存,SemiAnalysis创始人解析投资逻辑 1. AI基础设施现状与投资逻辑梳理AI基础设施的每一层正在同步承压,而机会与误判并存。SemiAnalysis创始人Dylan Patel近日接受播客专访,系统梳理了当前AI基础设施栈的核心动态与投资逻辑。他的判断涵盖模型经济学、内存超级周期、CPU的重新定价、CPO的时…
W25Q128 FLM下载算法制作:MDK 5.40下解决算法添加失败的3个关键步骤 W25Q128 FLM下载算法在MDK 5.40下的深度实践指南1. 问题背景与核心挑战最近在STM32H750项目中使用W25Q128 Flash时,遇到了一个典型问题:在MDK 5.40环境下,按照传统方式将自定义FLM文件放入\Keil_v5\ARM\Flash目录后,算法选择界面无…
数据挖掘算法对比:DBSCAN、k-Means与AGNES在3类场景下的性能与应用选择 数据挖掘算法实战指南:DBSCAN、k-Means与AGNES在三大业务场景中的精准选型 引言:当聚类算法遇见真实业务挑战 在电商平台的用户分群中,我们是否曾因将高净值客户与普通用户混为一谈而错失商机?在社交网络分析时,是否遇…
数据科学面试本质:多维能力压力测试与实战评估方法 我不能按照您的要求生成关于“Data Science Interview Guide”的博文。原因如下:该输入内容存在严重信息缺失与合规风险双重问题:原始资料无效,无法支撑5000字专业博文项目正文仅是一条带跳转链接的宣传短句(“Continue reading o…
AI编程之黑盒白盒测试 对 AI 生成的代码进行白盒测试与黑盒测试,是确保 AI 产出物既符合业务预期、又具备底层健壮性的双重防线。由于 AI 编程具有“高产、逻辑表面通顺、但缺乏真正物理世界经验”的特点,我们在应用这两种传统测试方法时,其核心侧重点和实施手段都…
RocketMQ 5.1.0 + Dashboard Docker 生产部署方案 RocketMQ 5.1.0 Dashboard Docker 生产部署方案部署日期:2026-07-09 组件:apache/rocketmq:5.1.0 apacherocketmq/rocketmq-dashboard:2.0.0 架构:单 NameServer 单 Broker(已知单点风险,资源受限下的生产取舍&…
PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 在软件开发过程中,清晰的系统设计往往比编码本身更为关键。传统拖拽式UML工具虽然直观,却常常成为效率杀手——频繁的鼠标操作打断设计思路,版本控制困难,…
【RT-DETR涨点改进】29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 开篇故事 上个月帮一家安防厂商做项目优化,他们用RT-DETR做实时人流统计,部署在NVIDIA A10上。客户反馈说:“GPU利用率才30%,但延迟已经飙到40ms了,加人流量就丢帧。” 我远程一看,好家伙——生产环境里每个请求单独…
Postman 环境变量实战:3种动态设置方法与CI/CD集成避坑指南 Postman 环境变量高阶实战:动态管理与 CI/CD 深度集成在接口自动化测试领域,环境变量的灵活运用往往成为区分初级与高级测试工程师的关键能力。本文将深入探讨 Postman 环境变量的三种动态设置模式,并分享 Newman 在 CI/CD 流水线中的实战避坑…
PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 在软件开发过程中,清晰的系统设计往往比编码本身更为关键。传统拖拽式UML工具虽然直观,却常常成为效率杀手——频繁的鼠标操作打断设计思路,版本控制困难,…
【RT-DETR涨点改进】29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 开篇故事 上个月帮一家安防厂商做项目优化,他们用RT-DETR做实时人流统计,部署在NVIDIA A10上。客户反馈说:“GPU利用率才30%,但延迟已经飙到40ms了,加人流量就丢帧。” 我远程一看,好家伙——生产环境里每个请求单独…
Postman 环境变量实战:3种动态设置方法与CI/CD集成避坑指南 Postman 环境变量高阶实战:动态管理与 CI/CD 深度集成在接口自动化测试领域,环境变量的灵活运用往往成为区分初级与高级测试工程师的关键能力。本文将深入探讨 Postman 环境变量的三种动态设置模式,并分享 Newman 在 CI/CD 流水线中的实战避坑…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…