首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux文件命令: SYSV意味着什么?

Linux文件命令: SYSV意味着什么?
EN

Stack Overflow用户
提问于 2012-02-28 03:18:20
回答 1查看 7.2K关注 0票数 12

我正在深入研究两个遗留的交叉编译的ARM Linux版本。除了“使用这个VM映像构建源文件”之外,没有太多的文档。文件命令输出之间的唯一区别是是否存在"(SYSV)“。

代码语言:javascript
复制
# file Executable
Executable: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...

根据字符串中是否存在SYSV,我应该假设什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-28 03:23:52

如果您看到(SYSV)字符串,则表示ELF报头中e_ident[EI_OSABI]字段设置为0。从ELF spec (PDF link)

代码语言:javascript
复制
Table 5. Operating System and ABI Identifiers, e_ident[EI_OSABI]
Name                 Value   Meaning
ELFOSABI_SYSV          0     System V ABI
ELFOSABI_HPUX          1     HP-UX operating system
ELFOSABI_STANDALONE   255    Standalone (embedded) application

我的本地机器的/usr/share/file/magic/elf文件有一个更长的列表:

代码语言:javascript
复制
# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
# like proper ELF, but extracting the string had bad results.
>4      byte            <0x80
>>8 string      >\0     (%s)
>8  string      \0
>>7 byte        0       (SYSV)
>>7 byte        1       (HP-UX)
>>7 byte        2       (NetBSD)
>>7 byte        3       (GNU/Linux)
>>7 byte        4       (GNU/Hurd)
>>7 byte        5       (86Open)
>>7 byte        6       (Solaris)
>>7 byte        7       (Monterey)
>>7 byte        8       (IRIX)
>>7 byte        9       (FreeBSD)
>>7 byte        10      (Tru64)
>>7 byte        11      (Novell Modesto)
>>7 byte        12      (OpenBSD)
>8      string          \2
>>7     byte            13              (OpenVMS)
>>7 byte        97      (ARM)
>>7 byte        255     (embedded)

以下是ELF标头和偏移量,供您参考(来自this link):

代码语言:javascript
复制
#define EI_NIDENT 16

typedef struct {
        unsigned char   e_ident[EI_NIDENT];
        Elf32_Half      e_type;
        Elf32_Half      e_machine;
        Elf32_Word      e_version;
        Elf32_Addr      e_entry;
        Elf32_Off       e_phoff;
        Elf32_Off       e_shoff;
        Elf32_Word      e_flags;
        Elf32_Half      e_ehsize;
        Elf32_Half      e_phentsize;
        Elf32_Half      e_phnum;
        Elf32_Half      e_shentsize;
        Elf32_Half      e_shnum;
        Elf32_Half      e_shstrndx;
} Elf32_Ehdr;


Figure 4-4: e_ident[] Identification Indexes
Name      Value Purpose
EI_MAG0       0     File identification
EI_MAG1       1     File identification
EI_MAG2       2     File identification
EI_MAG3       3     File identification
EI_CLASS      4     File class
EI_DATA       5     Data encoding
EI_VERSION    6     File version
EI_OSABI      7     Operating system/ABI identification
EI_ABIVERSION 8     ABI version
EI_PAD        9     Start of padding bytes
EI_NIDENT     16    Size of e_ident[]
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9470867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档