【问题标题】:ld: invalid string offset ... for section `.strtab'ld:无效的字符串偏移量...对于“.strtab”部分
【发布时间】:2017-08-04 08:10:40
【问题描述】:

我正在一个新平台上使用 GNU 工具链/gcc 4.9 构建一个 c++ 项目(jetson K1 评估板上的 debian 拉伸)。链接器会提供很多消息,例如

usr/bin/ld: ../../../../lib/libsomething.so: invalid string offset 3118 >= 2767 for section `.strtab'

我什至不知道这是一个错误、一个警告还是只是一些链接器 smalltalk。该项目构建并运行,但这让我感到困惑。

我已经在几个 ARM 和 intel 平台上使用相同的工具链(但在 Ubuntu 或 Debian Jessie 上)构建了这个项目,但从未见过这种东西。

我看到了一些建议,这可能与使用 make -j 的并行构建有关,但如果我在没有 -j 的情况下重建所有库,也会发生这种情况。

请告诉我这是什么以及如何摆脱它。

更新:

  • 上述库是在同一个项目中使用同一个工具链编译的
  • objdump 根本没有列出 .strtab 部分

【问题讨论】:

  • ../../../../lib/libsomething.so 来自哪里?
  • 大胆猜测:您的 strtab 部分对于加载到其中的数据来说太小了。默认情况下,具有硬内存约束的嵌入式平台可能会以这种方式配置,以确保堆栈和其他数据的一些剩余内存区域。
  • @AndrewHenle:libsomething 和其他七个库在项目中使用相同的工具链构建。它们中的每一个都使用不同的偏移值七次给出链接器消息。
  • @grek40:该板有 2 GB 的 RAM,对于该项目来说绰绰有余。在使用相同工具链的不同平台上编译项目时,我没有看到这些消息。主要区别:现在我使用的是 debian 拉伸而不是 ubuntu 或 debian jessie。
  • @Philippos 主要区别:现在我使用的是 debian stretch 而不是 ubuntu 或 debian jessie。 从一开始就需要在问题中提供这类信息.

标签: c++ gcc ld sections


【解决方案1】:

郑重声明:该问题已在 Binutils 2.33 中修复,如果您需要更多详细信息,请查看补丁:https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=baf46cd78048e1b959462567556e1de1ef6b9039

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
猜你喜欢
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多