ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – R_PPC_REL24重定位超出范围

2019-06-20 19:46:04  阅读:365  来源: 互联网

标签:python c-3 gcc swig powerpc


我正在研究嵌入式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现在它构建,但我加载时收到此错误.

我试图理解这个错误,但到目前为止,我对它究竟意味着什么以及如何修复它一无所知.我知道某个符号由于某种原因无法找到,但我不明白为什么,或者如何修复它.

解决方法:

R_PPC_REL24重定位用于24位相对偏移.此类型的重定位不应出现在动态重定位表中(这些重定位表用于可加载对象内部的引用,而不是它们之间的引用,因为库可以加载到超过16 MiB的地址).

默认情况下,编译器会尽可能生成这些重定位,因为这比使用完整的32位地址的代码要小得多且速度快,但是对于动态链接,需要将完整地址用于外部可见符号和生成的PIC / GOT条目.

检查-fPIC标志是否用于构建库,并且还通知链接器它正在构建共享对象(通常是通过-shared或-Bshared).

标签:python,c-3,gcc,swig,powerpc
来源: https://codeday.me/bug/20190620/1247479.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有