ld:无效的字符串偏移...对于`.strtab'节

Phi*_*pos 9 c++ gcc ld sections

我正在一个新平台上构建一个带有GNU工具链/ gcc 4.9的c ++项目(在jetson K1评估板上展示debian).链接器提供了许多消息

usr/bin/ld: ../../../../lib/libsomething.so: invalid string offset 3118 >= 2767 for section `.strtab'
Run Code Online (Sandbox Code Playgroud)

我甚至不知道这是一个错误,一个警告或只是一些链接器smalltalk.该项目建立并运行,但这让我感到困惑.

我已经在几个ARM和英特尔平台上使用相同的工具链(但在Ubuntu或Debian Jessie上)构建了这个项目,并且从未见过这些东西.

我已经看到过这可能与并行构建有关的建议make -j,但是如果我重建所有libs也会发生这种情况-j.

请给我一个暗示这是什么以及如何摆脱它.

更新:

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

Igo*_*rin 0

ld.bfdBinutils 之前有一个错误2.33

它尝试读取 ARM CMSE 符号名称,但使用.strtab而不是.dynstr. 如果符号在共享库中被剥离,则其.strtab节短于.dynstr,因此对于 中的某些符号.dynsym,其名称(实际引用.dynstr)的偏移量超过 的大小.strtab。因此,链接器发出了警告。

如果您需要更多详细信息,这里是解决该问题的补丁:https://sourceware.org/git/? p=binutils-gdb.git;a=commit;h=baf46cd78048e1b959462567556e1de1ef6b9039 。