ld:无效的字符串偏移量...对于部分“.strtab”
ld: invalid string offset ... for section `.strtab'
我正在新平台上使用 GNU toolchain/gcc 4.9 构建一个 c++ 项目(debian stretch 在 jetson K1 评估板上)。链接器给出了很多消息,例如
usr/bin/ld: ../../../../lib/libsomething.so: invalid string offset 3118 >= 2767 for section `.strtab'
我什至不知道这是一个错误、一个警告还是一些链接器 smalltalk。该项目构建并运行,但这让我感到困惑。
我已经在几个 ARM 和英特尔平台上构建了这个项目,使用相同的工具链(但在 Ubuntu 或 Debian Jessie 上),但从未见过这些东西。
我看到这可能与使用 make -j
的并行构建有关,但如果我在没有 -j
.
的情况下重建所有库,也会发生这种情况
请提示我这是什么以及如何摆脱它。
更新:
- 上述库是在同一个项目中使用同一个工具链编译的
objdump
根本没有列出 .strtab
部分
在 Binutils 2.33
之前的 ld.bfd
中存在错误。
它尝试读取 ARM CMSE 符号名称,但使用 .strtab
而不是 .dynstr
。如果符号在共享库中被剥离,其 .strtab
部分比 .dynstr
短,因此对于 .dynsym
中的某些符号,它们名称的偏移量(实际上引用 .dynstr
) 超过 .strtab
的大小。因此,链接器发出了警告。
如果您需要更多详细信息,请查看修复该问题的补丁:https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=baf46cd78048e1b959462567556e1de1ef6b9039。
我正在新平台上使用 GNU toolchain/gcc 4.9 构建一个 c++ 项目(debian stretch 在 jetson K1 评估板上)。链接器给出了很多消息,例如
usr/bin/ld: ../../../../lib/libsomething.so: invalid string offset 3118 >= 2767 for section `.strtab'
我什至不知道这是一个错误、一个警告还是一些链接器 smalltalk。该项目构建并运行,但这让我感到困惑。
我已经在几个 ARM 和英特尔平台上构建了这个项目,使用相同的工具链(但在 Ubuntu 或 Debian Jessie 上),但从未见过这些东西。
我看到这可能与使用 make -j
的并行构建有关,但如果我在没有 -j
.
请提示我这是什么以及如何摆脱它。
更新:
- 上述库是在同一个项目中使用同一个工具链编译的
objdump
根本没有列出.strtab
部分
在 Binutils 2.33
之前的 ld.bfd
中存在错误。
它尝试读取 ARM CMSE 符号名称,但使用 .strtab
而不是 .dynstr
。如果符号在共享库中被剥离,其 .strtab
部分比 .dynstr
短,因此对于 .dynsym
中的某些符号,它们名称的偏移量(实际上引用 .dynstr
) 超过 .strtab
的大小。因此,链接器发出了警告。
如果您需要更多详细信息,请查看修复该问题的补丁:https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=baf46cd78048e1b959462567556e1de1ef6b9039。