跳至正文

ELF格式和COFF中各种变量的分配(elf格式详解)

什么是ELF,COFF,和PE COFF

什么是ELF,COFF,和PE COFF

当你的编译器编译C代码时,会生成一个object文件,这个文件接下来会被链接到程序中,object文件和可执行文件都有固定的格式

Microsoft took the COFF file and created their own Windows specific version called PE COFF or Microsoft Portable Executable COFF. They call it portable because the executable itself has the same format no matter what type of code it contains (it can contain code for 64 bit chips, or 32 bit chips, etc., the format is still the same). This doesn’t imply that you can run the executable files anywhere; it just means it has a defined format even for code types you never use. (i.e.: executables files for Pocket PC are PE COFF, but you can’t run them on your computer and vice versa).

CCS建立工程时,输出格式COFF和ELF的区别

CCS建立工程时,输出格式COFF和ELF的区别

您好: CCS5建立BIOS工程的时候,如果工程的可执行文件的输出格式是COFF就会出错,如果是ELF就不会出错,我们想知道: 1.COFF和ELF有什么区别? 2.我将输出格式改成ELF后,COFF下的CMD文件不可用了,我想知道ELF下,CMD该如何写? 谢谢!

COFF是什么文件格式?

COFF是什么文件格式?

COFF – 通用对象文件格式(Common Object File Format),是一种很流行的对象文件格式(注意:这里不说它是“目标”文件,是为了和编译器产生的目标文件(*.o/*.obj)相区别,因为这种格式不只用于目标文件,库文件、可执行文件也经常是这种格式).大家可能会经常使用VC吧?它所产生的目标文件(*.obj)就是这种格式.其它的编译器,如GCC(GNU Compiler Collection)、ICL(Intel C/C++ Compiler)、VectorC,也使用这种格式的目标文件.不仅仅是C/C++,很多其它语言也使用这种格式的对象文件.统一格式的目标文件为混合语言编程带来了极大的方便.

当然,并不是只有这一种对象文件格式.常用格式的还有OMF-对象模型文件(Object Module File)以及ELF-可执行及连接文件格式(Executable and Linking Format).OMF是一大群IT巨头在n年制定的一种格式,在Windows平台上很常见.大家喜欢的Borland公司现在使用的目标文件就是这种格式.MS和Intel在n年前用的也是这种格式,现在都改投异侧,用COFF格式了.ELF格式在非Windows平台上使用得比较多,在Windows平台基本上没见过.做为程序员,很有必要认识一下。

ELF文件格式

Linux ELF ELF = Executable and Linkable Format,可执行连接格式,是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的。扩展名为elf。工具接口标准委员会(TIS)选择了正在发展中的ELF标准作为工作在32位INTEL体系上不同操作系统之间可移植的二进制文件格式。假定开发者定义了一个二进制接口集合,ELF标准用它来支持流线型的软件发展。应该减少不同执行接口的数量。因此可以减少重新编程重新编译的代码。 编辑本段文件格式 Linking View Elf header Program header table optional section1 …… section n section header table Exection View Elf header Program header table segment 1 section 2 …… segment header table 一个ELF头在文件的开始,保存了路线图(road map),描述了该文件的组织情况。sections保存着object 文件的信息,从连接角度看:包括指令,数据,符号表,重定位信息等等。特别sections的描述会出项在以后的第一部分。第二部分讨论了段和从程序的执行角度看文件。 假如一个程序头表(program header table)存在,那么它告诉系统如何来创建一个进程的内存映象。被用来建立进程映象(执行一个程序)的文件必须要有一个程序头表(program header table);可重定位文件不需要这个头表。一个section头表(section header table)包含了描述文件sections的信息。每个section在这个表中有一个入口;每个入口给出了该section的名字,大小,等等信息。在联接过程中的文件必须有一个section头表;其他object文件可要可不要这个section头表。 注意: 虽然图显示出程序头表立刻出现在一个ELF头后,section头表跟着其他section部分出现,事实是的文件是可以不同的。此外,sections和段(segments)没有特别的顺序。只有ELF头(elf header)是在文件的固定位置。

bss段,数据段,代码段,堆栈段的问题

段 ,一种标示而已,只是为了区别和更好认识一些概念而已,Text、code一般是代码段,用过VC或BCB就知道,这种标识的东西没必要深究…知道用来标识的意思就够了,至于一个文件有多少段其实决定与你,但是一般程序编译出来后都有几个默认的段保证程序能正常运行,目标文件也是一样的,

.O -对象文件 exe 可执行文件,exe是否被优化取决与编译选项

exe是pe文件格式的一种体现,pe文件格式是windows下大多数文件的格式,而elf遵循coff文件格式,exe和elf等价是没错的,但不能说两者文件格式相同~ 因为pe和coff格式还是存在区别的

其他具体的自己百度下看看两中格式就知道了

————————————————-

至于堆栈段吗,其实这些都是标识,方便我们理解一些概念而产生的名字,只要知道堆栈的作用代表的意思就可以了

ELF文件格式是什么?

在计算机科学中,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储的标准文件格式. 是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的,也是Linux的主要可执行文件格式. ELF文件由4部分组成,分别是ELF头(ELF header)、程序头表(Program header table)、节(Section)和节头表(Section header table).实际上,一个文件中不一定包含全部内容,而且他们的位置也未必如同所示这样安排,只有ELF头的位置是固定的,其余各部分的位置、大小等信息有ELF头中的各项值来决定.

elf 是什麽格式的文件?

elf是什么意思

elf是什么意思?可以打开他的程序是什么?在那可以下载到?

ELF类型

三种主要的ELF文件类型:

.可执行文件:包含了代码和数据。具有可执行的程序。

例如这样一个程序

# file dltest

dltest: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped

.可重定位文件:包含了代码和数据(这些数据是和其他重定位文件和共享的object文件一起连接时使用的)

例如这样文件

# file libfoo.o

libfoo.o: ELF 32-bit LSB relocatable, Intel 80386, version 1,

not stripped

.共享object文件(又可叫做共享库):包含了代码和数据(这些数据是在连接时候被连接器ld和运行时动态连接器使用的)。动态连接器可能称为ld.so.1,libc.so.1 或者 ld-linux.so.1。

例如这样文件

# file libfoo.so

libfoo.so: ELF 32-bit LSB shared object, Intel 80386, version

1, not stripped

ELF section部分是非常有用的。使用一些正确的工具和技术,程序员就能熟练的操作可执行文件的执行。

ELF是非常灵活的二进制格式。

它提供了非常有用的功能。这种规范没有给程序和程序员太多限制。它使创建共享库容易,使动态装载和共享库的结合更加容易。在ELF下,在C++中,全局的构造函数和析构函数在共享库和静态库中用同样方法处理。

解压elf.zip后,直接运行elf.exe即可。

EXECUTABLE AND LINKABLE FORMAT (ELF) Portable Formats Specification, Version 1.1 Tool Interface Standards (TIS) ________________________________________________________________ =========================== Contents 内容=========================== 序言 1. OBJECT文件 导言 ELF头(ELF Header) Sections String表(String Table) Symbol表(Symbol Table) 重定位(Relocation) 2. 程序装载与动态连接 导言 Program头(Program Header) Program装载(Program Loading) Dynamic连接(Dynamic Linking) 3. C LIBRARY C Library ________________________________________________________________ 导言 ________________________________________________________________ ELF: 可执行连接格式 可执行连接格式是UNIX系统实验室(USL)作为应用程序二进制接口 (Application Binary Interface(ABI)而开发和发布的。工具接口标准委 员会(TIS)选择了正在发展中的ELF标准作为工作在32位INTEL体系上不同操 作系统之间可移植的二进制文件格式。 假定开发者定义了一个二进制接口集合,ELF标准用它来支持流线型的软件 发展。 应该减少不同执行接口的数量。因此可以减少重新编程重新编译的 代码。 关于这片文档 这篇文档是为那些想创建目标文件或者在不同的操作系统上执行文件的开发 着准备的。它分以下三个部分: * 第一部分, “目标文件Object Files”描述了ELF目标文件格式三种主要 的类型。 * 第二部分, “程序转载和动态连接”描述了目标文件的信息和系统在创建 运行时程序的行为。

VC++中,COLORREF类型的变量的问题?

BYTE GetRValue( DWORD rgb // RGB value );这个函数返回值是 the red component of the specified RGB color BYTE GetGValue( DWORD rgb // RGB value ); The return value is the intensity of the green component of the specified RGB color. 同理: BYTE GetBValue( DWORD rgb // RGB value ); 返回RGB的蓝颜色.

请问在mfc中如何转化CString和Color类型变量?

自己写个函数解析你的文本串,看看用“,”还是其他符号做RGB三色的分隔符,分析出三个数后新建一个color对象给它赋值即可.

整型变量a和b中的值分别为8和9,格式输出a和b的值 a=8 b=9 输出语句printf

int a,b; a=8; b=9; printf("a=%d b=%d",a,b);