<Linux>Linux对C程序的调试过程--gcc的编译过程
2017-08-21 19:23
483 查看
作者:wsg
时间:2017年8月21日
一、gcc对C程序的编译命令为:
gcc 源文件名 -o 目标文件名
如:gcc a.c -o a,这样就生成了可执行文件a。实际上,这并不是一步生成的,中间还经历了预处理、编译、汇编、链接。
1、预处理:将.c文件生成.i文件。
.c-->.i命令为:
gcc a.c -o a.i -E
2、编译:将.i文件生成.s文件。
.i-->.s命令为:
gcc a.i -o a.s -E
3、汇编:将.s文件生成.o文件。
.s-->.o命令为:
gcc a.s -o a.o -c
4、链接:将.o文件生成可执行文件
.o-->(可执行文件):
gcc a.o -o a
二、下面写一个例子程序来具体看一下步骤:
/**示例:test.c**/
#include <stdio.h>
#define MAX 3
int main(void)
{
int a;
a = MAX;
printf("%d\n", a);
return 0;
}三、图示:
1、执行gcc test.c -o test.i -E命令生成test.i文件,再用cat test.i命令查看,如下:
可见这一步只是将程序中的MAX替换成了宏定义中定义的数3,这是一个预处理的步骤。
2、执行gcc test.i -o test.s -S命令生成汇编源程序:
assembler source就是汇编源程序的意思。
时间:2017年8月21日
一、gcc对C程序的编译命令为:
gcc 源文件名 -o 目标文件名
如:gcc a.c -o a,这样就生成了可执行文件a。实际上,这并不是一步生成的,中间还经历了预处理、编译、汇编、链接。
1、预处理:将.c文件生成.i文件。
.c-->.i命令为:
gcc a.c -o a.i -E
2、编译:将.i文件生成.s文件。
.i-->.s命令为:
gcc a.i -o a.s -E
3、汇编:将.s文件生成.o文件。
.s-->.o命令为:
gcc a.s -o a.o -c
4、链接:将.o文件生成可执行文件
.o-->(可执行文件):
gcc a.o -o a
二、下面写一个例子程序来具体看一下步骤:
/**示例:test.c**/
#include <stdio.h>
#define MAX 3
int main(void)
{
int a;
a = MAX;
printf("%d\n", a);
return 0;
}三、图示:
1、执行gcc test.c -o test.i -E命令生成test.i文件,再用cat test.i命令查看,如下:
可见这一步只是将程序中的MAX替换成了宏定义中定义的数3,这是一个预处理的步骤。
2、执行gcc test.i -o test.s -S命令生成汇编源程序:
assembler source就是汇编源程序的意思。
相关文章推荐
- Linux下编译调试C程序(GCC,GDB)
- Linux系统GCC程序编译,GNU程序调试
- # include <errno.h >查看错误代码errno是调试程序的一个重要方法。当Linux C API函数发生异常时,一般会将errno变量赋值一个整数,不同的值表示不同的含义,可以通过查看
- Linux 0.11 在ubuntu-11和gcc-4.6.1下编译调试至正常运行的过程详解
- 赵炯<<Linux 0.11内核完全剖析>>P30 MBR程序调试
- Linux下的简单C程序gcc编译、gdb调试。
- <转载>linux gcc编译器中使用gdb单步调试程序,程序不是顺序执行的。
- 一个C程序的编译过程(Linux环境下GCC)
- Linux 0.11 在Ubuntu-11和gcc-4.6.1下编译调试至正常运行的过程详解
- Linux 0.11 在ubuntu-11和gcc-4.6.1下编译调试至正常运行的过程详解
- linux GCC编译程序的过程
- Linux下GCC编译,报错没有头文件<io.h>那个文件或目录
- 一个C程序的编译过程(Linux环境下Gcc)
- Linux gcc gdb 编译调试程序
- linux下GCC编译环境中二叉树遍历、C语言实现以及调试过程中段错误
- 【Linux】使用vim编写一个程序,gcc查看预处理、编译、汇编、链接过程
- 一个C程序的编译过程(Linux环境下Gcc)
- linux下c程序编译过程及GCC,G++, GDB简介
- 64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解
- Linux中c程序的编译链接过程2017/12/10