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

【Linux】开发工具3 : gcc/g++的使用

其他篇章 【C语言专栏】其他篇章【Linux专栏】上期回顾 【Linux】开发工具2vim文章目录前言1. gcc/g的使用1.1 预处理进行宏替换1.2 编译生成汇编1.3 汇编生成机器可识别代码1.4 链接生成可执行文件或库文件1.5 gcc 可以一步生成一个执行程序将四个步骤合并前言在使用一门编辑语言的时候我们都必须安装相应的开发包即头文件和库文件头文件函数的声明库文件函数的实现查看头文件ls /usr/include/1. gcc/g的使用gcc编译C语言g编译 C/C生成可执行文件预处理、编译、汇编、链接1.1 预处理进行宏替换主要处理以# 开头的指令核心任务有宏替换把所有 #define 定义的宏包括函数宏、常量宏直接替换成对应的文本。去注释注释不参与编译去掉可以减少文件大小条件编译#ifdef / #ifndef / #if / #else / #endif 等指令只保留满足条件的代码段删除不满足的分支。头文件展开把 #include xxx.h / #include “xxx.h” 对应的头文件内容完整复制到当前文件中。命令gcc -E test.c -o test.i选项“-E”,该选项的作⽤是让 gcc 在预处理结束后停⽌编译过程。选项“-o”是指⽬标⽂件,“.i”⽂件为已经过预处理的C原始程序。注意区分命令作用生成的文件类型能否直接运行gcc -E test.c -o test.i只做预处理C源码文件 .i 不能gcc test.c -o test完整编译链接可执行程序可以示例结果解析#define DEBUG 1 定义了一个名为 DEBUG 的宏值为1。​#ifdef DEBUG 预处理指令意思是“如果 DEBUG 这个宏被定义了就执行下面的代码”。​因为 DEBUG 已经被定义了所以预处理时会保留 printf(“Debug mode\n”);这行代码程序运行时会打印 Debug mode 。1.2 编译生成汇编在这个阶段中,gcc ⾸先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的⼯作,在检查⽆误后,gcc 把代码翻译成汇编语⾔。-S仅执行编译停止后续流程.s输出的汇编文件test.s命令gcc –S test.i –o test.s[qianyvVM-0-9-centos~]$ gcc-S test.c-o test.s[qianyvVM-0-9-centos~]$ ll total28-rw-rw-r--1qianyv qianyv135Apr2614:19test.c-rw-rw-r--1qianyv qianyv16878Apr2614:11test.i-rw-rw-r--1qianyv qianyv446Apr2615:00test.s-rw-r--r--1root root0Apr1922:08test.txt1.3 汇编生成机器可识别代码汇编阶段是把编译阶段⽣成的“.s”⽂件转成⽬标⽂件-c仅执行汇编生成目标文件.o输出的目标文件test.o—二进制格式不能执行命令gcc –c test.s –o test.o[qianyvVM-0-9-centos~]$ gcc-c test.s-o test.o[qianyvVM-0-9-centos~]$ ll total32-rw-rw-r--1qianyv qianyv135Apr2614:19test.c-rw-rw-r--1qianyv qianyv16878Apr2614:11test.i-rw-rw-r--1qianyv qianyv1496Apr2615:03test.o-rw-rw-r--1qianyv qianyv446Apr2615:00test.s-rw-r--r--1root root0Apr1922:08test.txt1.4 链接生成可执行文件或库文件将目标文件.o和库进行链接就得到了可执行程序-o用来指定可执行程序的名称这里我写了是test不写的话默认是 a.outgcc test.o -o test[qianyvVM-0-9-centos~]$ gcc test.o-o test[qianyvVM-0-9-centos~]$ ll total44-rwxrwxr-x1qianyv qianyv8360Apr2615:08test-rw-rw-r--1qianyv qianyv135Apr2614:19test.c-rw-rw-r--1qianyv qianyv16878Apr2614:11test.i-rw-rw-r--1qianyv qianyv1496Apr2615:03test.o-rw-rw-r--1qianyv qianyv446Apr2615:00test.s-rw-r--r--1root root0Apr1922:08test.txt1.5 gcc 可以一步生成一个执行程序将四个步骤合并

相关文章:

【Linux】开发工具3 : gcc/g++的使用

其他篇章 【C语言专栏】 其他篇章【Linux专栏】 上期回顾 【Linux】开发工具2:vim 文章目录前言1. gcc/g的使用1.1 预处理(进行宏替换)1.2 编译(生成汇编)1.3 汇编(生成机器可识别代码)1.4 链…...

【MCP 2026跨服务器负载均衡终极指南】:20年架构师亲授5大反模式、3层动态调度策略与零抖动落地实践

更多请点击: https://intelliparadigm.com 第一章:MCP 2026跨服务器负载均衡全景认知 MCP 2026(Multi-Cluster Proxy v2026)是新一代云原生服务网格控制平面组件,专为跨异构数据中心、多云及边缘集群的动态流量调度而…...

Copilot Next 工作流配置终极清单(含17项必检参数、8个隐藏API调用开关、5个性能劣化预警信号),一线大厂SRE团队内部文档精编版

更多请点击: https://intelliparadigm.com 第一章:Copilot Next 工作流配置全景概览 Copilot Next 是 GitHub 官方推出的下一代智能协作引擎,深度集成于 VS Code、JetBrains IDEs 及 GitHub Actions 运行时中。其工作流配置以 YAML 驱动&…...

【限时公开】MCP生产环境故障日志库(含12类典型崩溃Trace+修复Patch)

更多请点击: https://intelliparadigm.com 第一章:MCP多模态处理教程导论 MCP(Multimodal Coordination Protocol)是一种面向异构感知数据协同理解的轻量级协议框架,专为边缘-云协同场景下的图像、语音、文本与传感器…...

日志告警准确率从61%跃升至94.2%,MCP 2026增强版上线首周就该做的6项关键校准,晚配=漏控重大风险

更多请点击: https://intelliparadigm.com 第一章:MCP 2026日志分析增强版的核心架构演进 MCP 2026日志分析增强版摒弃了传统单体式日志管道设计,转向基于事件驱动与策略即代码(Policy-as-Code)的分层协同架构。该演…...

E7Helper终极指南:5分钟完成第七史诗自动化脚本配置

E7Helper终极指南:5分钟完成第七史诗自动化脚本配置 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺&am…...

线条小人动画制作 -开源项目自荐

一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...

MCP 2026与旧有SCADA系统冲突诊断全流程,含27个关键日志字段解析表(附可执行Python校验脚本)

更多请点击: https://intelliparadigm.com 第一章:MCP 2026与旧有SCADA系统冲突诊断全流程总览 MCP 2026作为新一代多协议协调平台,其基于时间敏感网络(TSN)的事件驱动架构与传统SCADA系统依赖的周期性轮询机制存在底…...

机器学习数据预处理核心方法与实战指南

1. 为什么数据预处理在机器学习中至关重要第一次接触机器学习项目时,我犯了一个典型错误——直接将原始数据扔进算法中。结果可想而知,模型表现惨不忍睹。这让我深刻认识到:数据预处理不是可选项,而是机器学习工作流中不可或缺的关…...

人脸伪造判别分类网络CNNTransformer

一、中间件是啥?咱用“餐厅”打个比方 想象一下,你的FastAPI应用是个高级餐厅。 ?? 顾客(客户端请求)来到门口。- 迎宾(CORS中间件):先看你是不是从允许的街区(域名)来…...

VS Code 容器开发总连不上端口?5分钟定位网络隔离、bind mount权限、WSL2桥接失效三大元凶

更多请点击: https://intelliparadigm.com 第一章:VS Code 容器开发端口连通性失效的根因认知 在 VS Code 中使用 Remote-Containers 扩展进行开发时,本地浏览器无法访问容器内服务(如 localhost:3000)是高频问题。其…...

Python的__new__方法在元类中

Python作为一门动态语言,其元编程能力一直是开发者津津乐道的话题。在元类这一高级特性中,__new__方法扮演着至关重要的角色。它不仅控制着类的创建过程,还能实现单例模式、属性校验等高级功能。本文将深入探讨__new__方法在元类中的妙用&…...

[具身智能-465]:声学特征与梅尔频谱图

梅尔频谱图(Mel-spectrogram)本质上就是一种最主流、最重要的声学特征。我们可以这样理解它们的关系:“声学特征”是一个广义的类别概念,而“梅尔频谱图”是这个类别下目前应用最广泛的具体形式。为了让更清晰地理解这两个概念及其…...

高效节能指南:如何用EnergyStarX轻松提升Windows 11笔记本续航能力

高效节能指南:如何用EnergyStarX轻松提升Windows 11笔记本续航能力 【免费下载链接】EnergyStarX 🔋 Improve your Windows 11 devices battery life. A WinUI 3 GUI for https://github.com/imbushuo/EnergyStar. 项目地址: https://gitcode.com/gh_m…...

星穹铁道抽卡记录分析工具:三分钟掌握您的跃迁数据分析秘籍

星穹铁道抽卡记录分析工具:三分钟掌握您的跃迁数据分析秘籍 【免费下载链接】star-rail-warp-export Honkai: Star Rail Warp History Exporter 项目地址: https://gitcode.com/gh_mirrors/st/star-rail-warp-export 在《崩坏:星穹铁道》的冒险旅…...

如何高效使用UEDumper:虚幻引擎逆向分析实战指南

如何高效使用UEDumper:虚幻引擎逆向分析实战指南 【免费下载链接】UEDumper The most powerful Unreal Engine Dumper and Editor for UE 4.19 - 5.3 项目地址: https://gitcode.com/gh_mirrors/ue/UEDumper UEDumper是一款功能强大的虚幻引擎dump工具&#…...

RAG评估框架解析:提升检索增强生成系统质量

1. RAG评估框架概述:为什么我们需要专门工具?在构建基于检索增强生成(RAG)的系统时,开发者常陷入一个误区:认为只要拼接好检索模块和生成模块就能自动获得优质输出。但实际工程实践中,我们至少面…...

从零部署Copilot Next自动化工作流:1个命令安装→4类角色定制(前端/后端/DevOps/数据工程师)→实时调试技巧,附VS Code 1.89+兼容性验证报告

更多请点击: https://intelliparadigm.com 第一章:从零部署Copilot Next自动化工作流:核心价值与适用边界 Copilot Next 并非传统 IDE 插件的简单升级,而是一套可嵌入、可编排、可审计的 LLM 原生自动化运行时。它通过声明式 YAM…...

Flink智能体:流处理与LLM融合的实时AI应用开发指南

1. 项目概述:当Flink遇见智能体,一个面向未来的流处理新范式最近在开源社区里,一个名为apache/flink-agents的项目悄然出现,引起了我们这些常年和流处理打交道的工程师的注意。乍一看标题,可能会有点困惑:A…...

终极指南:Downkyi轻松下载B站8K超高清视频

终极指南:Downkyi轻松下载B站8K超高清视频 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。 …...

AdaBoost算法原理与实践:从基础到优化

1. 集成学习与Boosting基础概念在机器学习领域,Boosting是一类强大的集成学习方法,它的核心思想是通过组合多个弱学习器来构建一个强学习器。与Bagging类方法(如随机森林)不同,Boosting采用序列化的方式训练基学习器&a…...

地级市行政审批相关数据(1997-2023年)

01、数据介绍地级市行政审批数据是指在地级市范围内,行政机关对公民、法人或其他组织提交的行政审批申请进行处理的各项数据。地级行政审批中心数据库由中山大学岭南学院徐现祥教授团队, 依据各地行政审 批中心官方主页的公示信息整理构建。 目前发布的是…...

用STM32F103的ADC+DMA搞定双摇杆数据采集,附CubeMX配置避坑指南

STM32F103双摇杆数据采集实战:CubeMX配置与DMA优化全解析 摇杆控制作为人机交互的核心组件,在无人机遥控、机器人控制等领域应用广泛。STM32F103C8T6凭借其出色的性价比和丰富的外设资源,成为这类应用的理想选择。本文将深入探讨如何通过ADC多…...

USBCopyer终极指南:让U盘文件自动备份变得简单高效

USBCopyer终极指南:让U盘文件自动备份变得简单高效 【免费下载链接】USBCopyer 😉 用于在插上U盘后自动按需复制该U盘的文件。”备份&偷U盘文件的神器”(写作USBCopyer,读作USBCopier) 项目地址: https://gitcod…...

CPUDoc完全指南:解锁CPU隐藏性能的三大黑科技

CPUDoc完全指南:解锁CPU隐藏性能的三大黑科技 【免费下载链接】CPUDoc 项目地址: https://gitcode.com/gh_mirrors/cp/CPUDoc 还在为电脑卡顿、游戏掉帧而烦恼吗?CPUDoc这款免费开源工具能够智能优化你的CPU调度,让处理器性能提升5-7…...

AI教材编写新突破!低查重AI教材生成工具,快速打造优质专业教材!

AI教材创作工具介绍 很多教材作者常常感到失落,他们辛辛苦苦完成了教材的正文内容,却因为缺乏必要的配套资源,影响了整体的教学效果。比如,课后练习虽然需要有层次感的题目设计,却常常缺乏创新的思路;想要…...

别再乱用Screen Space了!Unity UGUI Canvas三种渲染模式(Screen/World/Camera)到底怎么选?

别再乱用Screen Space了!Unity UGUI Canvas三种渲染模式深度解析与实战指南 在Unity项目开发中,Canvas组件的渲染模式选择往往被当作一个简单的属性设置,直到某天你发现UI元素在VR头盔里错位、3D场景中的血条忽大忽小,或者移动设备…...

基于MCP协议的模块化交易智能体:架构、实现与实战指南

1. 项目概述:当智能体遇上MCP,交易策略的模块化革命最近在GitHub上看到一个挺有意思的项目,叫“TradingAgents-MCPmode”。光看名字,可能有点抽象,但如果你对量化交易、AI智能体或者最近火热的MCP(Model Co…...

用Matlab FFT分析电网谐波:从实测数据到THD计算,一篇搞定

用Matlab FFT分析电网谐波:从实测数据到THD计算实战指南 电力系统中的谐波污染如同血管中的杂质,悄无声息地侵蚀着电能质量。当我在某工业园区的电能质量评估项目中首次用FFT捕捉到高达27%的THD值时,变频器群产生的5次谐波正在导致变压器发出…...

OpenNARS:非公理推理系统入门与实践指南

1. 项目概述:一个通用人工智能的“思维引擎”如果你对人工智能的认知还停留在“下围棋的AlphaGo”或者“能写诗的ChatGPT”,那么“OpenNARS”这个项目可能会彻底刷新你的理解。它不是一个针对特定任务的AI模型,而是一个试图模拟人类通用推理和…...