使用gcc 窥探 可执行产生过程
2011-01-05 21:59
183 查看
还是最简单的helloworld.c来分析
通常我们默认这样产生可执行文件 gcc hello.c -o hello
拆分为4个步骤:
1.预处理
gcc -E hello.c -o hello.i 生成中间文件后缀 为 .i的文件
2.编译
gcc -S hello.i -o hello.s 生成 汇编代码
3.汇编阶段
gcc -c hello.s -o hello.o 生成二进制文件
4.链接阶段(连同其他的机器码和库文件一起,生成一个可执行文件)
gcc hello.o -o hello
一般前面三个步骤合并成一步:
gcc -c hello.c -o hello.o
然后:
gcc hello.o -o hello
#include <stdio.h> int main(void) { printf("hello world!"); }
通常我们默认这样产生可执行文件 gcc hello.c -o hello
拆分为4个步骤:
1.预处理
gcc -E hello.c -o hello.i 生成中间文件后缀 为 .i的文件
2.编译
gcc -S hello.i -o hello.s 生成 汇编代码
3.汇编阶段
gcc -c hello.s -o hello.o 生成二进制文件
4.链接阶段(连同其他的机器码和库文件一起,生成一个可执行文件)
gcc hello.o -o hello
一般前面三个步骤合并成一步:
gcc -c hello.c -o hello.o
然后:
gcc hello.o -o hello
相关文章推荐
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题
- Linux使用GCC编译matlab的m文件使其可执行
- gcc编译C语言程序的执行过程
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script
- GCC-C语言执行过程
- gcc编译的具体执行过程
- 使用ODI进行数据整合过程中的数据源、目标与临时区域(staging area)的分布情况与执行方式
- Android程序包管理(2)--使用adb install执行安装过程
- 使用链接服务器执行远程数据库上的存储过程
- 【Linux】使用vim编写一个程序,gcc查看预处理、编译、汇编、链接过程
- [PL/SQL]测试存储过程执行超长SQL(使用CLOB变量)
- 关于SpringMVC4使用过程中的路径问题,我们经常遇到的Controller未执行以及执行了之后出现404
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- 关于PHP程序使用file_get_content()函数进行抓取PHP程序与smarty结合编译过程中产生的静态文件,抓取不了?连接超时?(地址映射)
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- C#中的类SqlCommand对象使用方法ExecuteNonQuery()调用SQLServer存储过程时,存储过程执行成功,数据发生改变,但是返回-1
- pthread_cond_wait()使用、执行过程及一些问题
- .NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程
- Asterisk 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现