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

Linux系统编程-gcc(黑马笔记)

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.dtcms.com/a/308416.html

相关文章:

  • 译 | 用于具有外生特征的时间序列预测模型TimeXer
  • JavaScript 大数运算!
  • Abp+ShardingCore+EFCore.BulkExtensions使用案例
  • MCU中的DAC(数字模拟转换器)是什么?
  • 动态挑战-响应机制和密钥轮换
  • 算法练习:JZ32 从上往下打印二叉树
  • iOS高级开发工程师面试——其他
  • 磁盘坏道检测工具在美国服务器硬件维护中的使用规范
  • Linux 计划任务管理
  • 【在线五子棋对战】十一、整合封装服务器模块实现
  • linux git ssh配置过程
  • chrome.storage 和 localStorage
  • 自动化与配置管理工具 ——SaltStack
  • 用 AI 自动生成口型同步视频,短视频内容也能一人完成
  • 基于深度学习的医学图像分析:使用YOLOv5实现医学图像目标检测
  • 测试平台进化论:如何在CI/CD时代重构软件质量防线
  • # 前端开发规范基础汇总
  • 掌握Python三大语句:顺序、条件与循环
  • 深度解析:基于Python构建的闲鱼自动化营销与信息发送机器人
  • 暄桐:如何脱离“不学无术”的状态?
  • 集成学习方法之随机森林:从原理到实战的深度解析
  • pip库版本升级
  • vue vxe-table :edit-config=“editConfig“ 可以编辑的表格
  • Netcat终极实战指南:从端口扫描到渗透测试
  • Multimodal Fusion on Low-quality Data: A Comprehensive Survey 中文版
  • Java面试高频题目
  • 基于notepad++的sensor寄存器序列文本处理方法(以后会随时更新补充)
  • STM32F1到STM32F0的标准库移植指南--GPIO篇
  • 认知绞肉机:个体实践视域下认知暴力与元认知升维的活体实验研究
  • 如何将 Redis 监控集成到微服务整体的监控体系中( 如 Prometheus + Grafana)