首页 > 编程知识 正文

linux怎么用gcc编译,linux下载gcc命令

时间:2023-05-03 07:21:50 阅读:21283 作者:4878

一:执行前设置字符串

#include stdio.h //此程序很简单,只打印一个Hello World字符串。 intmain(void ) printf (帮助世界! n '; 返回0; }预处理的基本操作

1 .删除所有#define,展开所有宏定义,并处理所有条件预编译指令,如#if #ifdef #elif #else #endif。

处理#include预编译命令,并将包含的文件插入该预编译命令的位置。

3 .删除所有评论"//"和"//*//"。

4 .添加行号和文件标识符,以便在编译时生成调试行号和编译错误警告行号。

5 .必须保留所有#pragma编译器指令,并在后续编译过程中使用。

编译执行:

程序集:将编译生成的hello.s文件汇编为所需的文件hello.o

GCC选项-c在组件运行后停止GCC并生成所需的文件

ELF文件分析

链接器链接后,最终文件将成为ELF格式的可执行文件。 一个ELF可执行文件通常链接到不同的段,并成为常见的段,如. text、 data、 rodata和. bss

. text :已编译程序的指令代码段。

. rodata:ro表示只读,即只读数据。 例如,常量const。

. data :初始化的c程序全局变量和静态局部变量。

. bss :未初始化的c程序全局变量和静态局部变量。

. debug :调试符号表,调试器对调试非常有用。

反汇编ELF

Gcc基本操作:

1 .预处理:

gcc -E test.c -o test.i或gcc -E test.c

gcc的-E选项允许编译器在预处理后停止并输出预处理结果

2 .编译成汇编代码

gcc -S test.i -o test.s

gcc的-S选项表示在编译程序期间生成程序集代码后,-o将停止输出程序集代码文件。

3 .汇编

gcc -c test.s -o test.o

4 .链接

gcc连接器由gas提供,负责连接程序的目标文件和所有必需的附件目标文件,并最终生成可执行文件。 附加的目标文件包括静态连接库和动态连接库。

gcc test.o -o test

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。