1 gcc的编译流程

gcc编译的整个过程并且整个过程下来的每个过程。并且给出了每个阶段产物和gcc命令。

1.1 数据段合并

其实就是因为“块” 一次是读多个字节而不是一个字节,所以会将一些地址段合并从而提升效率

1.2 地址回填

这张图也有些问题,正确的结论是:

地址回填发生在编译器后端生成汇编/机器码时,属于 .c → .o 过程中的代码生成步骤

地址回填:其实就是在最后的链接过程中将main函数的真实地址更改掉

以下为一个示例,其他过程同理。

gcc -c test.c -o test.0

链接命令 -o可以指定输出的文件名

gcc  [目标文件列表]  [库选项]  -o  输出可执行文件名
gcc  main.o  utils.o  -o  app

2 gcc的常用命令

2.1linux中c++函数常用的一种写法,可以用来给main函数传递参数

int main(int argc, char *argv[])
{printf("argc = %d\n", argc);return 0;
}
  1. argc参数的个数(argument count),包括程序名本身。

  2. argv 不是“统计字符”,而是一个 字符串指针数组(argument vector),每个元素是一个 C 字符串(char *),指向一个 以空字符 \0 结尾的参数

    • argv[0] → 程序名或启动路径

    • argv[1] → 第一个用户参数

    • argv[argc] → 固定为 NULL,作为哨兵。

  3. 分隔规则

    • 默认由shell按**空白字符(空格、Tab、换行)**切分。

    • 如果参数本身含空格,用引号(单或双)或反斜杠 \ 转义即可保持为一个整体。

./hello  one   "two words"  three
  • argc = 4

  • argv 内容为

  • argv[0] = "./hello"
    argv[1] = "one"
    argv[2] = "two words"
    argv[3] = "three"
    argv[4] = NULL

2.2 gcc指定头文件目录

当头文件和源文件不在同一个目录时候可以用以下命令

其中头文件在./inc 文件夹下

gcc -I./inc hello.c -o hello

2.3 常见参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91818.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91818.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91818.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git踩坑

文章目录前言❓问题分析:为什么你的提交会“覆盖”别人的代码?✅ 正确的代码提交流程(结合你原文的说明)**1. 确认自己在正确的分支上****2. 从主开发分支(如 dev)拉取最新代码并合并****3. 解决冲突&#…

sqli-labs:Less-20关卡详细解析

1. 思路🚀 本关的SQL语句为: $sql"SELECT * FROM users WHERE username$cookee LIMIT 0,1";注入类型:字符串型(单引号包裹)、GET操作提示:参数需以闭合关键参数:cookee php输出语句…

基于LevitUnet的超声图像分割

完整项目包获取:点击文末名片本项目旨在开发一个基于深度学习的图像分割模型,专门用于处理医学或遥感领域的图像数据(以 TIFF 格式存储)。通过结合 LeViT(基于 Vision Transformer 的轻量模型)和 U-Net 架构…

Java 17 新特性解析与代码示例

Java 17 新特性解析与代码示例 文章目录Java 17 新特性解析与代码示例引言1. 密封类(JEP 409)1.1. 介绍1.2. 详细说明1.3. 代码示例1.4. 与之前功能的对比1.5. 使用场景1.6. 总结2. switch 模式匹配(预览,JEP 406)2.1.…

SQL中的GROUP BY用法

GROUP BY 是 SQL 中用来“按列分组”的子句。 它把相同值的行分到同一个组,然后通常配合聚合函数(COUNT, SUM, AVG, MAX, MIN 等)对每个组做统计,最终每组只返回一行结果。✅ 1. 基本语法 SELECT 列1, 列2, 聚合函数(列3) FROM 表…

AI Agent开发学习系列 - LangGraph(10): 带有循环的Looping Graph(练习解答)

在AI Agent开发学习系列 - LangGraph(9): 带有循环的Looping Graph中,我们学习了如何创建带有循环的Looping Graph。为了巩固学习,我们来做一个练习。 用LangGraph创建如下图的一个Agent: 要求: 输入玩家姓名通过输入的上限值和下限值之间…

【保姆级 - 大模型应用开发】DeepSeek R1 本地部署全攻略:Ollama + vLLM + PyTorch 多选方案

DeepSeek R1 本地部署全攻略:Ollama vLLM PyTorch 多选方案 想部署 DeepSeek-R1 模型到本地,开启高性能推理体验?本文汇总了 Ollama、vLLM 及原生 PyTorch 的部署方法,适合不同开发者需求。 🎯 下载模型 (必做) ----…

使用 Vive Tracker 替代 T265 实现位姿获取(基于 Ubuntu + SteamVR)

在Dexcap这篇工作列出第二版硬件清单时,我注意到其使用 Vive Tracker 替代 Intel T265 来获取位姿数据,对这个东西的性能感到好奇,最近因为需要跟进相关工作,参与了一部分实现,由于这方面的中文资料相对较少&#xff0…

博物馆 VR 导览:图形渲染算法+智能讲解技术算法实现及优化

本文面向博物馆数字化开发技术员、VR 系统工程师等技术同仁们,聚焦图形渲染算法在博物馆 VR 导览中的核心应用,解决虚拟展馆还原精度不足、多终端适配卡顿、智能讲解触发延迟等实际技术问题。如有项目合作及技术交流欢迎私信作者~一、VR导览技术痛点1.3D…

zset 中特殊的操作

首先 zset 与我们常规的 redis 操作有所不同, 这里的时间复杂度基本都是 O(log N) 起步的 目录 1. zcount 2. zpopmax 1. zcount zcount key min max : 这里求的是 key 中下标在 min 和 max 之间的 元素的数量, 这里是比区间 我们要是想排除端点, 就需要加上 ( , 无论是…

KSP与ASM深度对比:原理、性能与使用场景

一、核心目的差异1. KSP(Kotlin Symbol Processing)核心目的:在编译时生成新代码,解决样板代码问题(操作对象:.kt源文件编译过程中的中间表示)主要场景:自动生成DI(依赖注入)配置代码创建路由映…

【LLM】如何在Cursor中调用Dify工作流

这篇文章将通过一个接口文档知识库示例,带你了解如何在 Cursor 中通过 Mcp Server 调用 Dify 平台配置的工作流。 1. 准备工作 需要准备文本生成模型、向量模型、Rerank 模型(可选),这些都可以在 阿里云百炼平台 申请免费使用额度…

L1、L2正则化的几何解释

L2正则化: 图中用几何方式形象地解释了 Ridge 回归(L2正则化)的原理。 ① 阴影圆:可以理解为(w1^2 w2^2)​≤R^2,圆周表示目标函数的约束线,这个圆表示了我们的参数 (w1,w2)可以活动的范围。 …

【学习笔记】Java并发编程的艺术——第1章 并发编程的挑战

第1章 并发编程的挑战 1.1 上下文切换 即使是单核处理器也支持多线程执行代码,CPU给每个线程分配CPU时间片实现多线程,而每个时间片一般是几十毫秒,所以多个线程感觉是同时执行的 但同一个核切换线程执行时会保存运行状态,以便下次…

leecode3 无重复元素的最长子串

我的思路 原始代码 我发现我虽然解决问题了,但是我的思路不简洁,不明白。 这个题本质上还是滑动窗口的问题。 具体思路为先定义两个指针,对应滑动窗口的两个边界关键是:定义一个集合,来判断这个窗口中的元素是否存在重…

【嵌入式汇编基础】-ARM架构基础(三)

ARM架构基础(三) 文章目录 ARM架构基础(三) 7、AArch64 执行状态 7.3 程序计数器 7.4 堆栈指针 7.5 零寄存器 7.6 链接寄存器 7.7 帧指针 7.8 平台寄存器 (x18) 7.9 过程内调用寄存器 7.10 SIMD 和浮点寄存器 7.11 系统寄存器 7.13 PSTATE 7、AArch64 执行状态 7.3 程序计…

[buuctf-misc]喵喵喵

m题目在线评测BUUCTF 是一个 CTF 竞赛和训练平台,为各位 CTF 选手提供真实赛题在线复现等服务。https://buuoj.cn/challenges#%E5%96%B5%E5%96%B5%E5%96%B5BUUCTF 是一个 CTF 竞赛和训练平台,为各位 CTF 选手提供真实赛题在线复现等服务。https://buuoj.…

Vue 详情模块 2

Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:详情基础内容,日期及电影描述 目录 详情 详情基础内容 初始化与赋值 渲染基础内容 详情样式 日期处理 安装moment 定义过滤器 使用过滤器 电影描述 总结 详情 详情基础内容 初始化与赋值 …

【MODIS数据】MYD03

🌍 遥感数据的“导航仪”:深入解析MYD03地理定位产品 在卫星遥感领域,精确的地理定位是数据应用的基础。作为Aqua卫星中分辨率成像光谱仪(MODIS)的核心支撑产品,MYD03虽不如地表温度或植被指数产品知名&am…

如何填写PDF表格的例子

实际应用场景中,我们会遇到需要根据会话内容自动填写表格的情况,比如:pdf 表格。假设根据会话内容已经获得相关信息,下面以填写个人信息为例来说明。个人信息表格.pdf填写后的效果:填写代码如下:from pdfrw…