我尝试使用 vxWorks 函数 loadModule 将代码文件加载到内存中,但它给了我错误:

Relocation value does not fit in 24 bits

我试图在我的编译器中添加 -mlongcall 标志,但它不起作用。

最佳答案

在 PowerPC 架构中工作之前,我已经看到了这个错误。假设您在类似的环境中工作,则问题与系统中的内存量和相关分支指令的范围有关。

阿贡国家实验室有一个 webpage detailing their experiences with the same issue 。以下摘录解释了相对分支寻址的问题:



这个问题的建议解决方法是在启用 -mlongcall 标志的情况下重新编译您加载的模块,在 Argonne 国家实验室。

您最初的问题表明此标志不能解决您的问题。 gnu 标志已设置,但没有为您的编译器列出更多信息。鉴于我只能建议您检查编译器文档并验证 -mlongcall 标志是否有效。

假设支持该标志,这可能是由本身未使用 -mlongcall 标志编译的链接库引起的。 ComplexIT 上的一篇文章详细介绍了一个类似的问题,同样在 PowerPC 架构中,使用 QT。为了解决这个问题,需要重建所有库,包括 QT。

10-08 11:14