我尝试使用 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。