ChinaUnix.net
相关文章推荐:

ELF文件 动态链接库

http://www.chineselinuxuniversity.net/freesky/viewthread.php?tid=17 elf文件格式与动态链接库(非常之好)-----不可不看 机器执行的是机器指令,而机器指令就是一堆二进制的数字。高级语言编写的程序之所以可以在 不同的机器上移植就因为有为不同机器设计的编译器的存在。高级语言的编译器就是把高级语言写的程序转换成某个机器能直接执行的二进制代码。以上的知识在我 们学习CS(Computer Science)的初期,老师都会这么对我们...

by lxcrist - Linux文档专区 - 2009-04-23 17:02:14 阅读(699) 回复(0)

相关讨论

机器执行的是机器指令,而机器指令就是一堆二进制的数字。高级语言编写的程序之所以可以在不同的机器上移植就因为有为不同机器设计的编译器的存在。高级语言的编译器就是把高级语言写的程序转换成某个机器能直接执行的二进制代码。以上的知识在我们学习CS(Computer Science)的初期,老师都会这么对我们讲。但是我就产生疑问了:既然机器都是执行的二进制代码,那么是不是说只要硬件相互兼容,不同操作系统下的可执行文件可以互相...

by 顺流o逆流 - Linux文档专区 - 2009-04-30 14:54:40 阅读(750) 回复(0)

elf文件格式与动态链接库 机器执行的是机器指令,而机器指令就是一堆二进制的数字。高级语言编写的程序之所以可以在 不同的机器上移植就因为有为不同机器设计的编译器的存在。高级语言的编译器就是把高级语言写的程序转换成某个机器能直接执行的二进制代码。以上的知识在我 们学习CS(Computer Science)的初期,老师都会这么对我们讲。但是我就产生疑问了:既然机器都是执行的二进制代码,那么是不是说只要硬件相互兼容,不同操作...

by xuelei_51 - Linux文档专区 - 2009-02-04 11:07:06 阅读(588) 回复(0)

机器执行的是机器指令,而机器指令就是一堆二进制的数字。高级语言编写的程序之所以可以在不同的机器上移植就因为有为不同机器设计的编译器的存在。高级语言的编译器就是把高级语言写的程序转换成某个机器能直接执行的二进制代码。以上的知识在我们学习CS(Computer Science)的初期,老师都会这么对我们讲。但是我就产生疑问了:既然机器都是执行的二进制代码,那么是不是说只要硬件相互兼容,不同操作系统下的可执行文件可以互相运...

by hzht123 - Linux文档专区 - 2007-10-12 19:15:59 阅读(689) 回复(0)

机器执行的是机器指令,而机器指令就是一堆二进制的数字。高级 语言编写的程序之所以可以在不同的机器上移植就因为有为不同机器设计的编译器的存在。高级语言的编译器就是把高级语言写的程序转换成某个机器能直接执行的 二进制代码。以上的知识在我们学习CS(Computer Science)的初期,老师都会这么对我们讲。但是我就产生疑问了:既然机器都是执行的二进制代码,那么是不是说只要硬件相互兼容,不同操作系统下的可 执行文件可以互...

by suntnt - Linux文档专区 - 2007-12-10 11:32:18 阅读(641) 回复(0)

elf文件头(elf header ),顾名思义,就是指一个elf文件字节流的最开头的一部分。 它是多大呢?请看下面的小程序: /*打印elf32_Ehdr和elf64_Ehdr结构的大小*/ #include #include int main() { printf("elf32_Ehdr:%d\n",sizeof(elf32_Ehdr)); printf("elf64_Ehdr:%d\n",sizeof(elf64_Ehdr)); return 0; } 编译命令: $ gcc -o test test.c $ ./test elf32_Ehdr:52 elf64_Ehdr:64 $ 程序中包含了elf....

by leafteg - Linux文档专区 - 2009-09-30 02:15:59 阅读(1119) 回复(0)

我看到一本书上说elf header位与elf文件的开头,但是program header里的offset值为0,也就是说该段的第一个字节在elf文件中的偏移为0,那么elf header与程序段不是互相覆盖了吗?请问是什么原因?谢谢

by stuman - 内核源码 - 2014-05-24 23:03:12 阅读(964) 回复(2)

本帖最后由 kernel359 于 2013-12-25 21:23 编辑 以下主要是参照《深入理解计算机系统》的理解。 以下是在centos 6.3 x86_64上测试的 主要用到的命令有 readelf、objdump,它们是GNU提供的,我这系统自带的有,所以没安装 一个可执行目标文件,从原代码,要经历预处理器、编译器、汇编器和加载器,才会加载到内存中执行。而目标文件,分为可重定位文件和可执行文件,目标中分成不同的节。 ...

by kernel359 - CPU与编译器 - 2015-01-06 22:53:46 阅读(5640) 回复(11)

在介绍什么是“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个字节都分别是...

by leafteg - Linux文档专区 - 2009-09-30 01:54:42 阅读(1023) 回复(0)

问题概述: 2M的elf文件,读到内存后,发现elf后面的数据与objdump出来的数据不一致。 详细描述: 1)编译内核镜像的时候生成了一个vmlinux ,大约2M 2)然后通过open文件的方式,根据文件的大小,分配动态缓存,再将文件读到缓存。 3)然而,我发现,在读取该vmlinux的数据到缓冲后,缓冲的前一段数据,和用objdump -d vmlinux得到的数据是一致的, 但是,在缓冲的比较后面的数据,与objdump -d vmlinux得到的数据不一致...

by wilos - 内核源码 - 2009-08-14 16:46:25 阅读(1868) 回复(2)

网上的一个文件解析: x000~0x034 是 elf Header; 0x034~0x054 是一项Program Headers; 0x054~0x080 是填充零字节; 0x080~0x086 是 .text 段内容; 0x086~0x098 是 .shstrtab 段内容; 0x098~0x110 是三项Section Headers; 对照 elf.h 文件分析如下: 00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.elf............| 00000010 02 00 03 00 01 00 00 00 80 80 04 08 34 00 00 00 |............4...| 00000020 9...

by wangling219 - Linux文档专区 - 2008-12-17 13:14:47 阅读(920) 回复(0)