ELF中“.note.ABI-tag”部分的意义是什么?
What is the significance of ".note.ABI-tag" section in ELF?
我在 objdump -h <binary>
ELF 文件上看到 .note.ABI-tag
部分。
根据 ELF 手册页:
.note.ABI-tag
This section is used to declare the expected run-time ABI
of the ELF image. It may include the operating system name
and its run-time versions. This section is of type
SHT_NOTE. The only attribute used is SHF_ALLOC.
- 这个部分是必要的吗?
- 删除此部分会产生什么副作用?
- 如何从 ELF 中删除此部分(gcc 标志)?
可能会破坏某些系统上的可执行文件。如果二进制文件的 ABI 与当前内核的 ABI 不兼容,它应该提供有关它与哪个内核兼容的信息。在此处查看更多信息 https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB/noteabitag.html
但是,如果您的二进制文件不是针对特定内核编译的(不一定 Linux,因为许多不同的目标都使用 ELF 输出)没关系,如果您的目标是减少可执行文件的大小。但是,您应该知道,如果您正在执行 objcopy
从 ELF 到 BIN 的操作,它已经被忽略了。
我在 objdump -h <binary>
ELF 文件上看到 .note.ABI-tag
部分。
根据 ELF 手册页:
.note.ABI-tag
This section is used to declare the expected run-time ABI
of the ELF image. It may include the operating system name
and its run-time versions. This section is of type
SHT_NOTE. The only attribute used is SHF_ALLOC.
- 这个部分是必要的吗?
- 删除此部分会产生什么副作用?
- 如何从 ELF 中删除此部分(gcc 标志)?
可能会破坏某些系统上的可执行文件。如果二进制文件的 ABI 与当前内核的 ABI 不兼容,它应该提供有关它与哪个内核兼容的信息。在此处查看更多信息 https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB/noteabitag.html
但是,如果您的二进制文件不是针对特定内核编译的(不一定 Linux,因为许多不同的目标都使用 ELF 输出)没关系,如果您的目标是减少可执行文件的大小。但是,您应该知道,如果您正在执行 objcopy
从 ELF 到 BIN 的操作,它已经被忽略了。