gcc命令基本操作

本文介绍了GCC命令的基本操作,包括预处理(删除宏定义、处理#include、添加行号等)、汇编生成目标文件、链接器创建ELF可执行文件的各个段(如.text、.data、.rodata、.bss)。通过-E、-S、-c选项分别进行预处理、编译为汇编代码和汇编,最后通过链接生成可执行程序。
摘要由CSDN通过智能技术生成

一:执行之前首先设置字符串

 

#include <stdio.h> //此程序很简单,仅仅打印一个 Hello World 的字符串。 
int main(void) { 
printf("Hello World! \n"); 
return 0; 
}

预处理基本操作

1.将所有的#define 删除,并且展开所有的宏定义,并且处理所有的条件预编 译指令,比如#if #ifdef #elif #else #endif 等。
2.处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置。
3.删除所有注释“//”和“/* */”。
4.添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。
5.保留所有的#pragma 编译器指令,后续编译过程需要使用它们。
编译执行:

汇编: 将编译生成的 hello.s 文件汇编生成目标文件 hello.o
GCC 的选项-c 使 GCC 在执行完汇编后停止,生成目标文件

ELF文件分析
链接器链接后生成的最终文件为 ELF 格式可执行文件,一个 ELF 可执行文件通常 被链接为不同的段,常见的段譬如.text、.data、.rodata、.bss 等段

.text:已编译程序的指令代码段。
.rodata:ro 代表 read only,即只读数据(譬如常数 const)。
.data:已初始化的 C 程序全局

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值