gpt4 book ai didi

c++ - 强制一个符号到 ELF 文件的顶部

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:00 25 4
gpt4 key购买 nike

在我们通过 GCC 链接器生成的 ELF 文件中,ELF 文件的顶部始终是可执行代码的版本标识符。

这是通过创建 version.c 文件并使生成的目标文件成为链接命令中的第一个可链接对象来实现的。

然而,对于一个可执行文件,这无法正常工作,我们可以发现的唯一区别是可执行文件包含 C 和 C++ 代码的混合,并且版本符号被重新定位到其他地方。

因此,问题是有没有一种方法可以保证符号在 ELF 文件中的绝对位置,以便通过链接器命令或代码属性指令,符号始终位于文件的顶部?

最佳答案

您可以通过脚本控制链接器的输出。在您的情况下,您可以检查:https://sourceware.org/binutils/docs/ld/SECTIONS.html#SECTIONS寻求可能的解决方案。

例如:

SECTIONS { 
.version 0x2020 : { version.o }
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) *(COMMON) }
}

这不能控制这些部分在链接的可执行文件中的确切位置,但它可能会影响它(在处理 ROM 镜像时肯定会影响),您必须自己进行试验。

关于c++ - 强制一个符号到 ELF 文件的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19377830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com