c - 为什么这个 elf 文件中的目标操作系统设置为 HP-UX 而不是 Linux?
问题描述
从这个维基:
它指出偏移量 7 处的数字标识目标操作系统。
我已经为 linux 机器编译了 ac 程序并检查elf header
了结果文件的(前 64 个字节):
> xxd -l 64 helloworld
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0300 3e00 0100 0000 8012 0000 0000 0000 ..>.............
00000020: 4000 0000 0000 0000 183f 0000 0000 0000 @........?......
00000030: 0000 0000 4000 3800 0d00 4000 1f00 1e00 ....@.8...@.....
为什么我要获得01
第 7 个字节?不应该03
吗?
解决方案
为什么我在第 7 个字节得到 01?
偏移量 7 处的字节是第 8 个字节,它是0
,即System V
。1
is for e_ident[EI_VERSION]
which 设置为 1 表示“为 ELF 的原始版本和当前版本设置为 1” 。
7f45 4c46 0201 0100 ...
^^ - OSABI
^^ - VERSION
^^ DATA
^^ CLASS
^^^^^^^^^ - MAG{0..3}
不应该是03吗?
正如您的链接所解释的,“无论目标平台如何,它通常都设置为 0”。
推荐阅读
- azure - Azure python sdk存储表备份表返回1000多行
- ruby-on-rails - RSpec 存根一个在控制器内部使用的方法
- javascript - 点击事件发生时如何捕获最外部的元素
- r - GGplot 2:如何在条形图中从最大到最小设置x轴
- javascript - 过滤功能,价格范围以适合产品的价格
- c++ - 在多线程环境中将参数(包括 std::function)传递给构造函数的最有效方法
- powershell - 在 PowerShell 中格式化
- html - 将对象数组格式化为 HTML 表格
- sql - 雪花使用 flatten 进行数组展平返回未知函数
- amazon-web-services - 如何将 EMR 与 EKS-Fargate 一起使用?全无服务器?