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

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

10得票1回答
LD_LIBRARY_PATH和-rpath有什么区别?

在链接库时,-rpath 用于将动态库的地址传递给 ld。我的问题是,如果我在 LD_LIBRARY_PATH 中设置了地址,我是否仍需要在链接过程中加上 -rpath 标志?

8得票1回答
这个问题是关于STM32H743微控制器(Cortex-M7)的链接脚本中是否使用了所有RAM区段的。

我知道最新的STM32微控制器中RAM存储器包含几个速度差异显著的部分。这就是为什么我正在努力理解这些设备的链接器脚本(注意:arm-none-eabi-gcc 工具链)。不幸的是,CubeMX为STM32F767ZI生成的链接器脚本只忽略了RAM内的不同部分: /* Specify the...

7得票1回答
gcc:您可以将函数指针放入不同的段(而非.data)中吗?

为了在主机上对嵌入式项目进行单元测试,我开始使用函数指针来能够在运行时切换函数的“真实”实现和模拟实现。因此,在.c文件中,我的函数'foo'看起来像这样: // the 'real' implementation of the function to be used during runt...

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

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

15得票3回答
何时使用.ARM.exidx?

我正在使用Contiki 2.7版本,使用mbxxx目标进行开发。在构建代码时,链接器报告了.ARM.exidx和.data节的重叠问题。经过对链接器脚本contiki-2.7/cpu/stm32w108/gnu-stm32w108.ld的一些修改后,我用以下代码解决了这个问题: __exi...

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

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

10得票1回答
在Mac OS X上使用链接脚本

有没有办法在Mac OS X上使用链接脚本和ld? Linux上的GNU ld程序接受-T <scriptname>选项,但在Mac OS上,-T是一个未知的命令选项。如果使用备用安装的GCC可以解决问题,那对我来说没问题。

7得票2回答
与另一个启动文件链接

我正在尝试使用LD脚本中的STARTUP指令,将程序链接到自己的启动文件上: ... ENTRY(_start) STARTUP(my_crt1.o) ... GCC驱动程序用于链接程序(无需担心库路径,如libgcc等): gcc -T my_script.ld ... 不幸的是...

14得票1回答
危险的迁移错误是什么意思?

我遇到了一个链接错误: 危险的重定位:l32r:在使用之后放置字面量: 我还在尝试调试。然而,我想更好地理解这个错误。我知道什么是重定位,但不确定它为什么会有危险,并且正在寻求一些澄清。此外,一个能够生成这种类型错误的小代码片段将会很有帮助。 简而言之,什么是“危险的重定位”?