c 文件解析20468104728 2010-1-9 15:32:30 收藏 | 打印 | 投票(1) | 评论(0) | 阅读(156) ◇字体: [大 中 小] ---By xiaoxiaopig 收集 简单的说其实要理解C 文件与头文件(即
h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1
预处理阶段 2
词法与语法分析阶段 3
编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU 相关的二进制码,生成各个目标文件 (
obj 文件) 4
连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy 生成纯二进制码,也就是去掉了文件格式信息
exe 文件) 编译器在编译时是以C 文件为单位进行的,也就是说如果你的项目中一个C 文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件,在PC 上的程序开发,一般都有一个main 函数,这是各个编译器的约定,当然,你如果自己写连接器脚本的话,可以不用main 函数作为程序入口
( main
c 文件 目标文件 可执行文件 ) 有了这些基础知识,再言归正传,为了生成一个最终的可执行文件,就需要一些目标文件,也就是需要C 文件,而这些C 文件中又需要一个main 函数作为可执行程序的入口,那么我们就从一个C 文件入手,假定这个C 文件内容如下: #include #include "mytest
h" int main(int argc,char **argv) { test = 25; printf("test
%d\n",test); } 头文件内容如下: int test; 现在