来自c(Linux)中的elf.h:

#include <elf.h>

以下指针代表/做什么?我试着查了一下文件,但没有写下来。我刚看到其他人用它来实现一个elf加载器的源代码:
Elf32_Ehdr
Elf32_Phdr
Elf32_Shdr
Elf32_Sym

谢谢!

最佳答案

它们只是一堆信息的结构。例如,elf32_ehdr的定义如下:

typedef struct {
    unsigned char   e_ident[EI_NIDENT]; /* ident bytes */
    Elf32_Half  e_type;         /* file type */
    Elf32_Half  e_machine;      /* target machine */
    Elf32_Word  e_version;      /* file version */
    Elf32_Addr  e_entry;        /* start address */
    Elf32_Off   e_phoff;        /* phdr file offset */
    Elf32_Off   e_shoff;        /* shdr file offset */
    Elf32_Word  e_flags;        /* file flags */
    Elf32_Half  e_ehsize;       /* sizeof ehdr */
    Elf32_Half  e_phentsize;        /* sizeof phdr */
    Elf32_Half  e_phnum;        /* number phdrs */
    Elf32_Half  e_shentsize;        /* sizeof shdr */
    Elf32_Half  e_shnum;        /* number shdrs */
    Elf32_Half  e_shstrndx;     /* shdr string index */
} Elf32_Ehdr;

你可以在这里找到所有的定义:
http://www.opensource.apple.com/source/dtrace/dtrace-78/sys/elf.h

08-28 07:46