免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1337 | 回复: 0
打印 上一主题 下一主题

ELF文件简介 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-30 01:54 |只看该作者 |倒序浏览

                在介绍什么是“ELF文件”前先做个小实验。
我这里有这么个文件-hello.c,内容如下:
/*filename:hello.c*/
#include
int main()
{
    printf("hello,world!\n");
    return 0;
}
好了我执行下面的一些命令:
$ gcc -c -o hello.o hello.c
$ gcc -o hello hello.o
$ ls
hello hello.c hello.o
我的目的很简单,就是想让你接触一下“ELF文件”。
用vim分别打开hello.o和hello,你会发现,这两个文件的第2,3,4个字节都分别是‘E’,‘L’,‘F’。
另外,你再用vim打开/usr/lib/libd1.so,你也会发现,这个文件与上两个一样,它的第2,3,4个字节也是‘E’,‘L’,‘F’。
把文件看作字节流,该字节流的第2,3,4个字节是不是‘E’,‘L’,‘F’将成为决定该文件是不是ELF文件的一个重要因素。(但不是说满足此条件就是ELF文件,下一篇文章会讲到。)
我可以明确地说,上面的三个文件都是ELF格式的文件。它们分别是目标文件(hello.o),可执行文件(hello)和库文件(libd1.so)。
现在请你记住,linux中的ELF文件包括三类:可重定位文件(也就是通常说的目标文件,后缀为.o,如上面的hello.o);可执行文件文件(如hello);共享文件(也就是库文件,通常存放于/usr/lib目录下,后缀为.so,如libd1.so)。
Executable and Linking Format是可执行可连接格式,简称就是ELF。
ELF是一种格式,上面的三个文件都是符合ELF格式规范的文件。(顺便附上baidu百科的连接:http://baike.baidu.com/view/1090277.htm)
好了,现在你知道什么是ELF文件了吧!
可它为什么叫这样一个难听的名字呢?当然是有原因的。
上面的三个文件,它们都是ELF文件,当我们想要得到一个可执行程序的话就离不开这三类文件。
所以说ELF是跟编译器,操作系统密切相关的,我们通过它的格式也可以大略的知道一些操作系统,编译器这两个古板的伙计的一些思考方式。
Powered by Leafteg
作者水平所限,表达必然不甚准确,如有纰漏或好的建议,请与作者联系。
e-mail:leafteg@gmail.com
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104443/showart_2062829.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP