尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Linux操作系统 --- 开发工具
一、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 -- 查看当前栈帧局部变量的值
RELATED

相关推荐

QMCDecode终极指南:轻松解锁QQ音乐加密文件,让音乐真正属于你

QMCDecode终极指南:轻松解锁QQ音乐加密文件,让音乐真正属于你

QMCDecode终极指南:轻松解锁QQ音乐加密文件,让音乐真正属于你 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录…

📅 2026/9/17 9:08:16
PotPlayer字幕翻译插件:三步实现外语视频无障碍观看

PotPlayer字幕翻译插件:三步实现外语视频无障碍观看

PotPlayer字幕翻译插件:三步实现外语视频无障碍观看 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为看不懂外语视频的…

📅 2026/8/24 8:23:42
3步解锁Switch控制器在PC上的无限可能:BetterJoy完全指南

3步解锁Switch控制器在PC上的无限可能:BetterJoy完全指南

3步解锁Switch控制器在PC上的无限可能:BetterJoy完全指南 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.c…

📅 2026/8/24 8:23:42
MORE NEWS

更多资讯

📰

用Astra一次性生成像素游戏:从提示词设计到手感调优的实战工作流

最近我把一个存了很久的想法落地了:用 Astra 做一款像素游戏,关键要求是“一次性生成”。不是让它聊聊天、出几个代码片段,而是给出明确需求,一次拿到一个能直接跑起来、能玩、手感还过得去的完整网页小游戏。跑了几天&#xff0c…

📰

BMS算法全解析:从SOC估算到均衡控制与机器学习落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

链路聚合LACP的隐性陷阱:单链路故障如何引发全网震荡与加固方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Citus分布式集群搭建与性能调优实战:从单机PostgreSQL到分片集群

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

嵌入式面试I2C与SPI协议级故障诊断实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

C# WPF在半导体工控系统中的实时性实战

1. 项目概述:这不是一个“写个界面”的练习,而是一套嵌入产线的工业神经中枢“重庆教主硬核实战”这个前缀不是噱头,是实打实的现场烙印——它意味着这套系统从设计第一天起,就踩在洁净车间的地砖上,听着晶圆传送带的伺…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬