c语言的学习(一)

编程入门 行业动态 更新时间:2024-10-08 14:39:49

c<a href=https://www.elefans.com/category/jswz/34/1770116.html style=语言的学习(一)"/>

c语言的学习(一)

一、gcc的使用

(一)程序编译过程

程序编译的四个过程:预处理、编译、汇编、链接

1、预处理:gcc -E main.c -o main.i 

        生成.i文件将进行如下操作:

        (1)将所有的#define删除,并展开所有的宏定义。

        (2)处理所有的预编译指令,例如: #if,#elif,#else,#endif等

        (3)处理#include预编译指令,将所包含的文件插入到预编译指令的位置

        (4)添加行号信息,文件标识,便于调试

        (5)删除所有的注释

        (6)保留所有的#pragma编译指令,因为在编写程序的时候,我们经常要用到#pargma指令来设定编译的状态或者是指示编译器完成一些特定的动作。

        (7)生成.i文件(包括去注释、宏替换、头文件展开、条件编译),编译生成的.i文件不包含任何宏定义,因为宏已经被展开,并且包含的文件已经被插入到.i文件中。

2、编译:gcc -S main.i -o main.s        (将c/c++转换成汇编)

        生成.s文件,需要进行如下操作:

        (1)扫描、语法分析、语义分析、源代码分析、目标代码生成、目标代码优化

        (2)生成汇编代码

        (3)汇总符号

        (4)生成.s文件

3、汇编:gcc -c main.s -o main.o        (将汇编转换成二进制)

        生成.o文件,需要进行如下操作:

        (1)根据汇编指令和特定平台,把汇编指令翻译成二进制形式

        (2)合并各个section,合并符号表

        (3)生成.o文件

4、链接:gcc  main.o -o main 

        链接过程会进行如下操作:

        (1)合并各个.obj文件的section,合并符号表,进行符号解析

        (2)符号地址重定位

        (3)生成可执行文件

(二)gcc的使用

常用的两种生成可执行程序的

更多推荐

c语言的学习(一)

本文发布于:2024-03-12 13:33:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1731627.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!