【发布时间】: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。 从一开始就需要在问题中提供这类信息.