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.
  1. 这个部分是必要的吗?
  2. 删除此部分会产生什么副作用?
  3. 如何从 ELF 中删除此部分(gcc 标志)?

可能会破坏某些系统上的可执行文件。如果二进制文件的 ABI 与当前内核的 ABI 不兼容,它应该提供有关它与哪个内核兼容的信息。在此处查看更多信息 https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB/noteabitag.html

但是,如果您的二进制文件不是针对特定内核编译的(不一定 Linux,因为许多不同的目标都使用 ELF 输出)没关系,如果您的目标是减少可执行文件的大小。但是,您应该知道,如果您正在执行 objcopy从 ELF 到 BIN 的操作,它已经被忽略了。