我如何找到带有标题信息的ELF文件/图像的大小?

我需要找到一个小精灵图像的大小进行一些计算.我已经尝试过在Linux上使用readelf实用程序,该实用程序提供了有关标题和部分的信息.我需要具有elf(整体上)的确切文件大小.

如何从标题信息中找到ELF的大小,或者是否有其他方法可以在不读取完整图像的情况下找到elf的大小.

解决方法:

您可以使用stat函数系列(stat(),lstat(),fstat())获取任何文件的大小(使用stat成员的st_size成员).
您是否需要更具体的内容?

如果您确实要使用ELF结构,请使用包含该结构的elf.h标头:

typedef struct {
         unsigned char  e_ident[EI_NIDENT];
         uint16_t       e_type;
         uint16_t       e_machine;
         uint32_t       e_version;
         ElfN_Addr      e_entry;
         ElfN_Off       e_phoff;
         ElfN_Off       e_shoff;
         uint32_t       e_flags;
         uint16_t       e_ehsize;
         uint16_t       e_phentsize;
         uint16_t       e_phnum;
         uint16_t       e_shentsize;
         uint16_t       e_shnum;
         uint16_t       e_shstrndx;
 } Elf32_Ehdr;

它是ELF32文件的标头(对于64位文件,将32替换为64).
e_ehsize是文件的大小,以字节为单位.

我将逐字复制作为编辑建议发布的评论:

This answer is incorrect. e_ehsize is merely the size of the elf header, not the elf file.

上一篇:如何在Linux中创建静态链接的位置无关可执行ELF?


下一篇:如何覆盖Linux下elf可执行文件的.interp标头中指定的链接器?