86得票1回答
如何获取输入节的大小(以便将其放置在内存末尾)

我有以下连接脚本: .data 和 .bss 被放置在 RAM 中,然后一个 .heap 段填充了剩余的内存。 现在我想添加一个 .noinit 段,它总是被放置在内存的末尾。这样 bootloaders 等程序会忽略它。 我仍然希望我的 .heap 段占据 .bss 和 .noinit ...

61得票3回答
链接脚本中的KEEP是什么意思?

LD手册没有解释KEEP命令的作用。下面是第三方链接脚本中使用KEEP的代码片段。在ld中,KEEP命令是什么意思?SECTIONS { .text : { . = ALIGN(4); _text = .; PROVIDE(s...

61得票5回答
限制共享库链接时符号的可见性

有些平台要求你向链接器提供共享库的外部符号列表。但在大多数类Unix系统中,这并不是必需的:所有非静态符号都将默认可用。 我的理解是GNU工具链可以选择性地限制仅显式声明的符号的可见性。如何使用GNU ld实现这一点?

30得票2回答
实际使用的默认链接脚本和设置gcc使用的是什么?

我在哪里可以找到gcc实际使用的链接脚本和设置? 我尝试过以下方法: 为了更具体地说明,让我们考虑一个小程序: empty.c int main(void) { return 0; } 将其静态构建,然后查看结果: $ gcc -static -o empty e...

27得票2回答
ELF中程序头和节头的区别

Q1 ELF中程序头(Program header)和节头(Section Header)之间有什么区别? Q1.1 段(segment)和节(section)之间的区别是什么? 我认为pheaders只指向sections。 Q2 文件头(File Header)和程序头(Program ...

23得票5回答
连接器脚本 - 将一个段放置在内存区域的末尾

我已经广泛搜索了如何做这件事情,但没有找到答案。我的内存布局如下:Fake Address | Section 0 | text 7 | relocate 15 | bss 23 | stack 我将堆...

23得票5回答
链接脚本中的ALIGN

在链接脚本中,ALIGN关键字的作用是什么?我读了很多关于链接脚本的教程,但是我不明白ALIGN到底是干什么的。有人能简单解释一下吗?谢谢!

22得票4回答
理解 __libc_init_array

我查看了http://newlib.sourcearchive.com/documentation/1.18.0/init_8c-source.html中的__libc_init_array源代码。 但我不太理解这个函数的作用。 我知道这些符号 /* These magic symbols...

21得票2回答
如何正确使用简单的链接脚本?运行可执行文件时出现SIGKILL。

我正在尝试理解深层链接过程和链接器脚本...查看binutils文档,我发现了一个简单的链接器脚本实现,我通过添加一些命令进行了改进: OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(...

19得票3回答
理解GNU链接脚本的位置计数器

我正在进行一项大学项目,编写适用于Atmel SAM7S256微控制器的软件。这比我之前使用的其他MCU更加深入,因为这次需要了解链接脚本和汇编语言的知识。 为了完全理解如何从头开始启动SAM7/ARM项目,我一直在仔细研究SAM7S芯片的示例项目。一个值得注意的例子是Miro Samek的...