我需要找到一个小精灵图像的大小进行一些计算.我已经尝试过在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.