什么是OBJ文件

来源:互联网 发布:买了域名要主机吗 编辑:程序博客网 时间:2024/06/04 18:44

   Obj文件是非PE格式的二进制文件,以前源代码的交付形式即通过obj文件.在gcc中通过 gcc -o , 在vc中通过cl.exe 就可以生成.每个cpp或者c源文件生成一个obj文件.里面的内容如下:

1, OBJECT FILE HEADER

描述文件内部其他部分(下面列举的)的位置和大小.

2, TEXT SEGMENT

汇编指令

3, DATA SEGAMENT

数据(二进制形式)

4, RELOCATION INFOMATION

根据绝对地址可以获取指令和数据位置

5, SYMBOL TABLE

做过plx吗? 做过, ok, 这个就是大名鼎鼎的symbol table,

里面主要有symbol和其address.其他包含了external label和unresolved references(都是link时搞定,编译出现link error常因为这里出错哦^_^)

6, DEBUG INFOMATION

调试信息, 看到vc的强大debug没! 这个就不废话了.

生成一个可执行文件的过程:

a.cpp->a.obj

b.cpp0->b.obj

main.cpp->main.obj

=======================cl.exe

link ***(link参数, 如subsystem等) a.obj b.obj main.obj

---->main.exe

Linker的一个重要工作就是去找library. 比如链接STLuser or system library.

0 0
原创粉丝点击