【问题标题】:Use `ld -r` and get compilation errors if symbols are missing如果缺少符号,请使用 `ld -r` 并获取编译错误
【发布时间】:2016-11-26 18:39:56
【问题描述】:

我最近开始使用a new ELF loader。加载程序要求您将应用程序与 ld -r 链接。

问题是 GCC 不再警告我未定义的函数,然后加载器(显然)找不到它们。

如何链接ld -r,获取未定义符号方法。

我使用ld -r 进行重定位,因此包含重定位的不同方式也适用于我。

【问题讨论】:

  • 我猜你可以在没有 -r 符号的情况下执行一个链接阶段,连接到一个临时的、未使用的 .elf 文件,如果成功则继续执行真正的文件。
  • @Jean-FrançoisFabre 所以你的意思是链接两次?我想我可以做到。
  • 如果不需要太多时间。否则,我需要minimal reproducible example 才能尝试一次性完成。
  • @Jean-FrançoisFabre 我认为你的方法会奏效。将其发布为答案,如果可行,我会接受。

标签: c gcc ld position-independent-code


【解决方案1】:

在您的 makefile 中,定义一个中间目标,您可以在其中链接所有选项 -r 之一,链接到临时目录中的一个文件(因此您确定不使用它) .

如果此阶段成功,则使用-r 选项进入真实链接。

【讨论】:

  • 感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 2013-08-11
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
相关资源
最近更新 更多