我正在使用嵌入式 PowerPC(e500v2)平台进行工作。我使用 gcc 4.6.3 和 eglibc 2.13 进行交叉编译。有一个 swig 库被编译并加载到目标设备上。在 Python 中加载它时,我在回溯中遇到了以下错误:
ImportError: /opt/load/lib/libISSDcn.so: R_PPC_REL24 relocation at 0x0ddc99c0 for symbol `longjmp' out of range
我以前曾经遇到过这个库的问题,现在我正在从我们的目标机器上的Python 2.5迁移到2.7。当我最初尝试编译这个库时,根据使用的标志不同,我会在编译时得到重定位错误或操作数超出范围错误。我切换到gcc 4.6.3后现在它可以构建了,但是加载时出现了这个错误。
我正在努力理解这个错误,但是到目前为止我还不清楚它究竟表示什么以及如何解决它。我知道由于某种原因找不到符号,但我不知道为什么以及如何解决它。
readelf
命令而不添加-D
选项可以显示静态链接的信息,这些重定位已经在最终链接过程中被应用,除了指向缺失符号的那些重定位(它们已转换为动态重定位)。 - Simon Richter