linux GCC编译程序的过程
2015-05-04 21:16
246 查看
使用gcc编译程序时,编译过程可以细分为四个阶段:
预处理
预处理过程读入程序源代码,检查包含预处理指令的语句和宏定义,并对源代码进行相应的转换。预处理过程会删除程序中的注释和多余的空白字符。
编译
编译阶段中,gcc首先检查代码的规范性,是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。
汇编
汇编阶段是把在编译阶段产生的汇编文件转成目标代码。
链接
将编译输出的文件链接成最终可执行的二进制文件
如图:
示例:
预处理
预处理过程读入程序源代码,检查包含预处理指令的语句和宏定义,并对源代码进行相应的转换。预处理过程会删除程序中的注释和多余的空白字符。
编译
编译阶段中,gcc首先检查代码的规范性,是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。
汇编
汇编阶段是把在编译阶段产生的汇编文件转成目标代码。
链接
将编译输出的文件链接成最终可执行的二进制文件
如图:
示例:
vi hello.c #include <stdio.h> int main(){ printf("hello world"); return 0; }
$ ls hello.c $ gcc -E hello.c -o hello.i #预处理,把预处理的结果输出为hello.i 文件 $ ls hello.c hello.i $ gcc -S hello.i #编译,把预处理的结果编译为汇编文件 $ ls hello.c hello.i hello.s $ gcc -c hello.s #汇编,把汇编文件转换成目标文件 $ ls hello.c hello.i hello.o hello.s $ gcc hello.o -o hello #链接,把目标文件连接成一个名为hello的二进制可执行文件 $ ls hello hello.c hello.i hello.o hello.s
相关文章推荐
- 一个C程序的编译过程(Linux环境下GCC)
- 【Linux】使用vim编写一个程序,gcc查看预处理、编译、汇编、链接过程
- 一个C程序的编译过程(Linux环境下Gcc)
- 一个C程序的编译过程(Linux环境下Gcc)
- linux下c程序编译过程及GCC,G++, GDB简介
- <Linux>Linux对C程序的调试过程--gcc的编译过程
- Linux 0.11 在ubuntu-11和gcc-4.6.1下编译调试至正常运行的过程详解
- Linux操作 gcc编译过程 制作静态库、动态库
- Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解
- GCC 编译linux运用程序开方错误的解决办法
- 64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解
- Linux GCC 编译过程
- Linux gcc 编译过程
- 结合"hello world"探讨gcc编译程序的过程
- Linux下用gcc编译安装程序
- Ubuntu 14.04 LTS嵌入式交叉编译环境arm-linux-gcc搭建过程图解
- mips64el-unknown-linux-gnu-gcc交叉编译ELF-64程序
- gcc编译程序的过程
- 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库。
- gcc 学习笔记(一) - 编译C程序及编译过程